Skip to content

Releases

Forrest Guice edited this page Feb 26, 2022 · 21 revisions

Latest Release

F-Droid GitHub release GitHub Release Date

F-Droid Links


Release Cycle

Github commits (since latest release) GitHub last commit Build Status

There isn't a set release cycle, but commits to master should be tagged early and often. For this project that means:

  • at least once a month
  • at most once a week

To Cut a Release

  1. create a release branch; release-v#.
  2. update app/build.gradle; increment versionCode and versionName; commit.
  3. update CHANGELOG.md; add an entry for versionName and list all changes; commit.
  4. add fastlane/metadata/android/en-US/changelogs/<versionCode>.txt and list major highlights; commit.
  5. build: run gradlew build; confirm the build completes without errors (lintVitalRelease must succeed).
  6. lint: examine app/build/reports/lint-results.html; fix any major errors/warnings; commit.
  7. create a pull request; link issues from the tracker; merge release-v# into master (and cleanup / delete it).
  8. tag a release v<major>.<minor>.<patch>; copy entries from the changelog into the release notes (highlights only).
  9. wait for F-Droid (it takes about a week); the metadata will be modified when the release is detected, and build logs made available when it is eventually built.

F-Droid is responsible for building and publishing the app, so the following steps are optional:

  1. (optional) create a signed release apk (personal developer key); update the release.
  2. (optional) attach GPG signatures to ALL download artifacts (https://wiki.debian.org/Creating%20signed%20GitHub%20releases); update the release.

To Generate Screenshots

  1. Connect a device/emulator to adb. adb devices
  2. Run the SuntimesScreenshots instrumentation test: gradlew connectedAndroidTest -Pandroid.testInstrumentationRunnerArguments.class='com.forrestguice.suntimeswidget.SuntimesScreenshots'
  3. Copy files from the device. adb pull sdcard/Android/data/com.forrestguice.suntimeswidget/files/Pictures/test-screenshots/<version>/<locale>
  4. Upload select files to gh-pages branch; see https://gist.github.com/joncardasis/e6494afd538a400722545163eb2e1fa5.

Release Testing

Useful Resources

Testing on API 10

Ignore all warnings of deprecation and the lack of download buttons in the AVD Manager, its still possible to create an obsolete virtual device for testing. While not immediately obvious (it wasn't for me), this is really easy:

  1. Install the obsolete sdk platform (e.g. api10) using the SDK Manager. Unlike newer releases, the older sdks bundle a copy of the emulator image.
  2. Create a virtual device using the AVD Manager. When selecting the system image, select "other images". Ignore warnings of deprecation and the missing download links.
  3. Choose from the "Gingerbread" armeabi images until the "next" button enables (this is the only visual indication that the image is available).
  4. Run the emulator; you might need to adb kill-server and adb start-server before it shows up in the list of devices.

Testing features that use AlarmManager

To get a list active timeouts:
adb shell dumpsys alarm > alarmdump.txt
https://stackoverflow.com/questions/28742884/how-to-read-adb-shell-dumpsys-alarm-output/31600886#31600886

To get the current idle state:
adb shell dumpsys deviceidle

To force the device into an idle state:

  • adb shell dumpsys battery unplug
  • adb shell dumpsys deviceidle force-idle

To restore the device to the active state:
adb shell dumpsys deviceidle unforce