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 (prep-release-v#).
  2. increment versionCode and versionName; commit.
  3. update the changelog; add versionName and releaseDate; commit;
  4. run lint: fix major errors/warnings; commit.
  5. build w/ cmd line: gradlew build; confirm the build completes without errors (lintVitalRelease succeeds).
  6. install and test the signed release apk on an actual device.
    • if there's a bug.. fix it on the master branch, sync the prep-release branch, and retest the build (repeat 4, 5, and 6 until happy).
  7. create a pull request; merge prep-release into master (and cleanup / delete it).
  8. draft a new release; in the release notes summarize the major entries to the changelog (highlights only).
  9. publish the release; each release is tagged with v<major>.<minor>.<patch>.
  10. wait for fdroid to detect the new release; monitor the fdroid wiki page for build errors (https://f-droid.org/wiki/index.php?title=com.forrestguice.suntimeswidget/lastbuild&redirect=no).
  11. (optional) create a signed release apk (using your personal developer key); update the release.
  12. (optional) if creating a signed release apk, attach your GPG signature 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

Clone this wiki locally