Skip to content

schnatterer/nusic

Repository files navigation

nusic - your new music

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

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

No account necessary.

Download

You can download the latest version as APK from GitHub or get the app directly from F-Droid. Due to Google's policy newer version can no longer be supplied via Google Play. However, the APKs found on GitHub are compatible, so you can use those to upgrade your old installations from 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

gradlew clean check assembleDebug

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

gradlew 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.

    gradlew 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.

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

Creating a release

1.Set Version

gradlew setVersion -PnewVersion=2.1.1
  1. Update changelog
  2. Commit
    git add .
    git commit -m "Prepare release v.2.1.1"
  3. Finish release: Tag
    git tag -s "v.2.1.1" -m "v.2.1.1"
  4. Set next dev version & commit
    gradlew setVersion -PnewVersion=2.1.2-SNAPSHOT
    git add .
    git commit -m "Prepare for next development iteration v.2.1.2-SNAPSHOT"
  5. Checkout and build tag
    git checkout tags/v.2.1.1
    gradlew clean connectedCheck assembleRelease
  6. Push all branches & tags
    git push --all
    git push --tags
  7. Upload artifact: Github
  8. Add changelog to github release page: https://github.com/schnatterer/nusic/releases/tag/v.2.1.1