- LICENSE: Apache-Lizenz, Version 2.0.
- AUTHORS: https://github.com/ironjan/metal-only/graphs/contributors
Diese App bringt den Internet Radio Stream von http://metal-only.de/ auf Android, wo man 24 Stunden am Tag Rock und Metal hören kann. Außerdem enthält sie einige Sender-spezifische Funktionen, wie das Senden von Musik-Wünschen oder Grüßen.
Die App kann über Google Play heruntergeladen werden. Probleme und Feature-Wünsche können an lippertsjan+metal-only@gmail.com gesendet werden.
Ursprünglich wurde die App von @rbrtslmn und @michael-busch entwickelt. News gibt es primär unter http://ironjan.de/metal-only.
The easiest option is to use the feedback functionality in the app. It automatically includes the most important information in the email template. If it's not possible to use the feedback function, try to answer the following questions:
- Which device do you have and which Android version is running on it?
- What did you do?
- What happened and what would you exptected to happen instead?
You can add the issues directly to the issue tracker: https://github.com/ironjan/metal-only/issues
We're using the gradle build system. I strongly recommend Android Studio to develop.
Currently, the app is mainly written in Java but a migration to kotlin has been started in May 2017. New code should be written in kotlin if possible.
- Fork this project.
- Import the project into android studio (Check out from Version Control, select github or git)
- Create a branch to work on. Then fix bugs, implement features, ...
- Push on your fork
- Create a Pull request with base branch Codingspezis/metal-only develop
See also https://gun.io/blog/how-to-github-fork-branch-and-pull-request/
You can create a gradle.properties
-file in the project root with the following content:
metalonly.signing=/some/path/to/a-file-collection
metalonly.variants=/some/path/to/another-file-collection
metalonly.fabric.io=/some/path/to/a-third-file-collection
file-collection
refers to similarly named files residing in the same folder, e.g. metalonly.signing.gradle
and metalonly.signing.keystore
. The property metalonly.signing
can be re-used to point to the
key-store etc. Please refer to the build.gradle files which additionals exist. Here are some
templates for the ones currently used:
// metalonly.fabric.io
android {
defaultConfig {
manifestPlaceholders = [fabric_io_id: "replace-me"]
}
}
// metalonly.signing
android {
signingConfigs {
release {
storeFile file(project.property("metalonly.signing")+".keystore")
storePassword "replace-me"
keyAlias "replace-me"
keyPassword "replace-me"
}
}
buildTypes {
release {
signingConfig signingConfigs.release
}
}
}
Please note: the fabric key added to the git is not the one the app is delivered with. It was only added so the app can be built without sharing the official key.
It may be useful to check for dependency updates once in a while. We're using a
gradle plugin for that: Execute ./gradlew dependencyUpdates
to list
updates. Note: for some reason, the report may include false positives, i.e.
non-existing updates.
- Jackson Databind (Apache 2.0)
- Spring for Android (Apache 2.0)
- okhttp (Apache 2.0)
- slf4j-android (MIT LICENSE)
- Androidannotations (Core & REST Spring) (Apache 2.0)
- LazyList (MIT LICENSE)
Build Time dependencise (i.e. not-packaged):
- ktlint (MIT LICENSE)
The project has been split into multiple modules to enforce encapsulation. See Understanding Onion Architecture for more information. In addition to the onion architecture, we will also split out some functionality for easier re-use later, e.g. the json API implementation. The current goal is to split the project into the following sub-modules:
core
will contain only data models and code related to these models. There should be no dependency on Android. It corresponds to the domain layer.:metal-only-client-library
will contain the json model and the API implementation. It may enable the re-use of the API implementation in other projects. The service implementations rely on this library.services
will hold implementations of our business logic. This layer responds to requests from the UI or system handles. It's a intermediate between the app and the infrastructure layer.infrastructure
provides specific implementations for the service layer to handle logging and data storage.app
will contain Android-specific implementations likeActivities
andServices
that calls on the service layer