your new music (android app)
Java HTML
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
gradle/wrapper
nusic-apk
nusic-core-android
nusic-core-api
nusic-data-android
nusic-data-api
nusic-domain
nusic-ui-android
nusic-util
resources
.editorconfig
.gitignore
CHANGELOG.md
LICENSE.txt
NOTICE.md
README.md
TODO.md
build.gradle
contributors.md
gradle.properties
gradlew
gradlew.bat
settings.gradle

README.md

nusic - your new music

Branch Build Status Quality Gate
Develop Build Status Develop Quality Gates Develop
Features Build Status Features

powered by openshift

Never again miss a new album release of your favorite artists - always stay informed by nusic.

nusic icon

nusic uses MusicBrainz - the free music encyclopedia - to find out about new releases of the artists on your phone.

No account necessary.

Note that this app is not optimized for tablets, yet. Please be patient.

Please report any issues here.

Download

You can download the lates version as APK from GitHub or get the app directly from F-Droid or Google Play.

Get it on F-Droid

Get it on Google Play

Licenses

Copyright © 2013 Johannes Schnatterer.

Licensed under the GNU General Public License Version 3. See the License and the licenses of dependencies.

Release notes

See Changelog and Releases.

Permissions

What kind of permission does nusic require and why does it require them?

  • Network communication, full network access: Check MusicBrainz for new releases
  • Nework communication, view network connections: Get notified about available connection to the internet in order to start checking for new releases.
  • Yor applications information, run at startup: Schedule regular checking for new releases via the Android alarm manager
  • System tools, test access to protected storage: Get the artists that are stored on the device
  • Affects Battery, prevent phone from sleeping: Prevent the device from falling back to sleep while searching for new releases

Build

Modules

Module Packaging Description
parent - Global build properties for all modules
nusic-apk apk Assembly maven module containing the guice module, wires up all dependencies and builds the APK
nusic-ui-android aar Contains all android specific frontend-code
nusic-core-api jar Interfaces of the central logic module
nusic-core-android jar Android-specific implementation of the central logic module
nusic-data-api jar Interfaces of the persistence module
nusic-data-android jar Android-specific implementation of the persistence module
nusic-domain jar Domain objects for persistence and migration between the layers
nusic-util jar Utility module, containing logic common to all modules

Gradle

In order to build the APK use the SDK manager to download the SDK Version specified in the parent project's build.gradle and deploy android to your local maven repo using maven-android-sdk-deployer. Also make sure to set your ANDROID_HOME environment variable to sdk folder of your Android SDK. Then just run

gradle clean check assembleDebug

to compile from scratch, run the tests and create a debug-signed APK, or run

gradle clean check assembleRelease

to create a signed APK, using an custom keystore.

For passing the credentials for this keystore via the command line there are four options

  1. Define them in your ~/.gradle/gradle.properties like so

    signKeystore=FULL/path/to/keystore
    signAlias=the key's alias within the keystore
    signKeypass=password for keystore
    signStorepasss=password for key
  2. Pass them as command line properties, e.g.

    gradle clean check assembleRelease -PsignAlias="the key's alias within the keystore"
  3. Pass them as environment variables, e.g.

    export ORG_GRADLE_PROJECT_signAlias=the key's alias within the keystore
  4. or pass them as system property, e.g.

    gradle clean check assembleRelease -Dorg.gradle.project.signKeystore=signAlias="the key's alias within the keystore"

Creating a release

TODO Automate this, e.g. via Jenkins

  • Start release

    git-flow release start v.2.1.1
  • Set Version

    gradle setVersion -PnewVersion=2.1.1
  • Update changelog
  • Commit

    git add .
    git commit -m 'Prepare release v.2.1.1'
  • Finish release & Tag (+ tag message)

    git-flow release finish v.2.1.1
  • Set next dev version & commit

    gradle setVersion -PnewVersion=2.1.2-SNAPSHOT
    git add .
    git commit -m "Prepare for next development iteration v.2.1.2-SNAPSHOT"
  • Checkout and build tag

    git checkout tags/v.2.1.1
    gradle clean check assembleRelease
  • Push all branches & tags

    git push --all
    git push --tags
  • Update F-Droid metadata by adding new release to the metadata (e.g. via this fork) and creating a merge request
  • Upload artifact: Github, Google Play
  • Add changelog to github release page: https://github.com/schnatterer/nusic/releases/tag/v.2.1.1
  • Add changelog to google play entry