From 40055f603d7c560c1176ba5f68f1dd3dc1070799 Mon Sep 17 00:00:00 2001 From: geeksville Date: Sun, 28 Jun 2020 14:55:02 -0700 Subject: [PATCH] Don't include firmware in development builds (speeds install time) --- .project | 17 ++++++++++++++ .settings/org.eclipse.buildship.core.prefs | 13 +++++++++++ TODO.md | 3 ++- app/.classpath | 6 +++++ app/.project | 23 +++++++++++++++++++ .../org.eclipse.buildship.core.prefs | 2 ++ app/src/{main => debug}/assets/firmware | 0 .../geeksville/mesh/service/MeshService.kt | 2 +- .../mesh/service/SoftwareUpdateService.kt | 9 ++++++-- 9 files changed, 71 insertions(+), 4 deletions(-) create mode 100644 .project create mode 100644 .settings/org.eclipse.buildship.core.prefs create mode 100644 app/.classpath create mode 100644 app/.project create mode 100644 app/.settings/org.eclipse.buildship.core.prefs rename app/src/{main => debug}/assets/firmware (100%) diff --git a/.project b/.project new file mode 100644 index 000000000..6079e350e --- /dev/null +++ b/.project @@ -0,0 +1,17 @@ + + + Mesh Util + Project MeshUtil created by Buildship. + + + + + org.eclipse.buildship.core.gradleprojectbuilder + + + + + + org.eclipse.buildship.core.gradleprojectnature + + diff --git a/.settings/org.eclipse.buildship.core.prefs b/.settings/org.eclipse.buildship.core.prefs new file mode 100644 index 000000000..f8483ac09 --- /dev/null +++ b/.settings/org.eclipse.buildship.core.prefs @@ -0,0 +1,13 @@ +arguments= +auto.sync=false +build.scans.enabled=false +connection.gradle.distribution=GRADLE_DISTRIBUTION(WRAPPER) +connection.project.dir= +eclipse.preferences.version=1 +gradle.user.home= +java.home=/usr/lib/jvm/java-8-oracle +jvm.arguments= +offline.mode=false +override.workspace.settings=true +show.console.view=true +show.executions.view=true diff --git a/TODO.md b/TODO.md index b952f2245..d9d521a55 100644 --- a/TODO.md +++ b/TODO.md @@ -1,10 +1,11 @@ # Remaining tasks before declaring 1.0 +- Android frontend should refetch the android messages from backend service on Resume - disable software update button after update finishes - first message sent is still doubled for some people -- Android frontend should refetch the android messages from backend service on Resume - let users set arbitrary params in android * add a low level settings screen (let user change any of the RadioConfig parameters) +- optionally include firmware files in debug builds - currently they are release only. per https://developer.android.com/studio/build/build-variants Things for the betaish period. diff --git a/app/.classpath b/app/.classpath new file mode 100644 index 000000000..eb19361b5 --- /dev/null +++ b/app/.classpath @@ -0,0 +1,6 @@ + + + + + + diff --git a/app/.project b/app/.project new file mode 100644 index 000000000..ac485d7c3 --- /dev/null +++ b/app/.project @@ -0,0 +1,23 @@ + + + app + Project app created by Buildship. + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.buildship.core.gradleprojectbuilder + + + + + + org.eclipse.jdt.core.javanature + org.eclipse.buildship.core.gradleprojectnature + + diff --git a/app/.settings/org.eclipse.buildship.core.prefs b/app/.settings/org.eclipse.buildship.core.prefs new file mode 100644 index 000000000..b1886adb4 --- /dev/null +++ b/app/.settings/org.eclipse.buildship.core.prefs @@ -0,0 +1,2 @@ +connection.project.dir=.. +eclipse.preferences.version=1 diff --git a/app/src/main/assets/firmware b/app/src/debug/assets/firmware similarity index 100% rename from app/src/main/assets/firmware rename to app/src/debug/assets/firmware diff --git a/app/src/main/java/com/geeksville/mesh/service/MeshService.kt b/app/src/main/java/com/geeksville/mesh/service/MeshService.kt index 5d9683ed5..21daedcbb 100644 --- a/app/src/main/java/com/geeksville/mesh/service/MeshService.kt +++ b/app/src/main/java/com/geeksville/mesh/service/MeshService.kt @@ -1442,7 +1442,7 @@ class MeshService : Service(), Logging { /*** * Return the filename we will install on the device */ - fun setFirmwareUpdateFilename(info: MeshProtos.MyNodeInfo) { + private fun setFirmwareUpdateFilename(info: MeshProtos.MyNodeInfo) { firmwareUpdateFilename = try { if (info.region != null && info.firmwareVersion != null && info.hwModel != null) SoftwareUpdateService.getUpdateFilename( diff --git a/app/src/main/java/com/geeksville/mesh/service/SoftwareUpdateService.kt b/app/src/main/java/com/geeksville/mesh/service/SoftwareUpdateService.kt index cf0c12613..38b31b0a6 100644 --- a/app/src/main/java/com/geeksville/mesh/service/SoftwareUpdateService.kt +++ b/app/src/main/java/com/geeksville/mesh/service/SoftwareUpdateService.kt @@ -219,7 +219,7 @@ class SoftwareUpdateService : JobIntentService(), Logging { hwVerIn: String, swVer: String, mfg: String - ): String { + ): String? { val curver = context.getString(R.string.cur_firmware_version) val regionRegex = Regex(".+-(.+)") @@ -230,7 +230,12 @@ class SoftwareUpdateService : JobIntentService(), Logging { val (region) = regionRegex.find(hwVer)?.destructured ?: throw Exception("Malformed hw version") - return "firmware/firmware-$mfg-$region-$curver.bin" + val name = "firmware/firmware-$mfg-$region-$curver.bin" + // Check to see if the file exists (some builds might not include update files for size reasons) + return if (!context.assets.list(name).isNullOrEmpty()) + name + else + null } /** Return the filename this device needs to use as an update (or null if no update needed)