Hacker News Reader Client for Android. All news are retrieved using HackerNews API and all images which used in the application are taken from Google's Material Design Icons.
The application can be installed from Android 2.3 (Gingerbread - API 9) to Android 6.0 (Marshmallow - API 23). Currently, the features are:
- List Top Stories
- Show comments and replies for each News/Job/Ask/Poll in a tree alike structure
- Expand and collapse replies
- Open news article in external browser
- Offline reading. If you have retrieved top stories or seen comment in a story previously, it will be cached locally to support offline reading. Note that: cache will only be used if you don't have internet connection.
Third-party libraries used:
- Android Support Libraries
- Dagger 2 - Dependency Injector
- Retrofit - REST Client
- RxJava - Reactive Functional Programming Framework
- RxAndroid - RxJava Bindings for Android
- Gson - JSON Serialization Library
- ButterKnife - Android View Injector
- DbFlow - Sqlite ORM
Third-party libraries used specific for unit tests and instrumentation tests:
- JUnit - Java Unit Test Framework
- Hamcrest - Matcher Library for Unit Test
- Mockito - Mocking Framework
- Robolectric - Android Unit Test Framework
- Espresso - Instrumentation Test Framework
Additional tools:
- Android APT - Annotations Processor Tools
- Jacoco - Code Coverage Library
- Travis - Continuous Integration Server
- Coveralls - Code Coverage Reporting
To build the app in Debug mode, please run this in the command line of the application directory:
./gradlew assembleDebug
Note: Currently, the application had been tested to run only in Debug mode. Issues may appear if it was run in Release mode, since proguard-rules
may strip and obfuscate some classes and methods.
To execute unit tests and instrumentation test including its code coverage report generation, please run:
./gradlew jacocoTestReport
Code coverage report could be found in {appDirectory}/app/build/reports/jacoco/jacocoTestReport/html/index.html
Note: Both unit tests and instrumentation tests will not make any actual network requests.