diff --git a/app/build.gradle b/app/build.gradle index 8b36f791..d1518565 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -92,14 +92,15 @@ androidExtensions { // per protobuf-gradle-plugin docs, this is recommended for android protobuf { protoc { - artifact = 'com.google.protobuf:protoc:3.9.0' + artifact = 'com.google.protobuf:protoc:3.13.0' } generateProtoTasks { all().each { task -> task.builtins { java { + // turned off for now so I can use json printing in debug panel // use the smaller android version of the library - option "lite" + //option "lite" } } } @@ -145,11 +146,8 @@ dependencies { implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:$coroutines_version" implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:$coroutines_version" - // You need to depend on the lite runtime library, not protobuf-java // For now I'm not using javalite, because I want JSON printing - //implementation 'com.google.protobuf:protobuf-java:3.11.1' - //implementation 'com.google.protobuf:protobuf-java-util:3.11.1' - implementation 'com.google.protobuf:protobuf-javalite:3.13.0' + implementation ('com.google.protobuf:protobuf-java:3.13.0') // For UART access // implementation 'com.google.android.things:androidthings:1.0' diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro index 6ffefad0..abd97ff5 100644 --- a/app/proguard-rules.pro +++ b/app/proguard-rules.pro @@ -26,18 +26,21 @@ -keepclassmembernames class kotlinx.** { volatile ; } # Needed for protobufs +-keepclassmembers class * extends com.google.protobuf.GeneratedMessageV3 { ; } +-keep class com.geeksville.mesh.**{*;} -keepclassmembers class * extends com.google.protobuf.GeneratedMessageLite { ; } # for kotlinx.serialization -keepattributes *Annotation*, InnerClasses -dontnote kotlinx.serialization.SerializationKt --keep,includedescriptorclasses class com.yourcompany.yourpackage.**$$serializer { *; } # <-- change package name to your app's --keepclassmembers class com.geeksville.mesh.** { # <-- change package name to your app's +-keep,includedescriptorclasses class com.geeksville.mesh.**$$serializer { *; } +-keepclassmembers class com.geeksville.mesh.** { *** Companion; } --keepclasseswithmembers class com.geeksville.mesh.** { # <-- change package name to your app's +-keepclasseswithmembers class com.geeksville.mesh.** { kotlinx.serialization.KSerializer serializer(...); } # Our app is opensource no need to obsfucate --dontobfuscate \ No newline at end of file +-dontobfuscate +-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*,!code/allocation/variable \ No newline at end of file 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 2e1cd5eb..79c14e2d 100644 --- a/app/src/main/java/com/geeksville/mesh/service/MeshService.kt +++ b/app/src/main/java/com/geeksville/mesh/service/MeshService.kt @@ -972,7 +972,12 @@ class MeshService : Service(), Logging { // debug("Recieved: $packet") val p = packet.decoded - val packetToSave = Packet(UUID.randomUUID().toString(), "packet", System.currentTimeMillis(), packet.toString()) + val packetToSave = Packet( + UUID.randomUUID().toString(), + "packet", + System.currentTimeMillis(), + packet.toString() + ) insertPacket(packetToSave) // If the rxTime was not set by the device (because device software was old), guess at a time val rxTime = if (packet.rxTime != 0) packet.rxTime else currentSecond() @@ -1246,7 +1251,12 @@ class MeshService : Service(), Logging { private fun handleRadioConfig(radio: MeshProtos.RadioConfig) { - val packetToSave = Packet(UUID.randomUUID().toString(), "RadioConfig", System.currentTimeMillis(), radio.toString()) + val packetToSave = Packet( + UUID.randomUUID().toString(), + "RadioConfig", + System.currentTimeMillis(), + radio.toString() + ) insertPacket(packetToSave) radioConfig = radio } @@ -1276,7 +1286,12 @@ class MeshService : Service(), Logging { private fun handleNodeInfo(info: MeshProtos.NodeInfo) { debug("Received nodeinfo num=${info.num}, hasUser=${info.hasUser()}, hasPosition=${info.hasPosition()}") - val packetToSave = Packet(UUID.randomUUID().toString(), "NodeInfo", System.currentTimeMillis(), info.toString()) + val packetToSave = Packet( + UUID.randomUUID().toString(), + "NodeInfo", + System.currentTimeMillis(), + info.toString() + ) insertPacket(packetToSave) logAssert(newNodes.size <= 256) // Sanity check to make sure a device bug can't fill this list forever @@ -1288,7 +1303,12 @@ class MeshService : Service(), Logging { * Update the nodeinfo (called from either new API version or the old one) */ private fun handleMyInfo(myInfo: MeshProtos.MyNodeInfo) { - val packetToSave = Packet(UUID.randomUUID().toString(), "MyNodeInfo", System.currentTimeMillis(), myInfo.toString()) + val packetToSave = Packet( + UUID.randomUUID().toString(), + "MyNodeInfo", + System.currentTimeMillis(), + myInfo.toString() + ) insertPacket(packetToSave) setFirmwareUpdateFilename(myInfo) @@ -1338,7 +1358,12 @@ class MeshService : Service(), Logging { private fun handleConfigComplete(configCompleteId: Int) { if (configCompleteId == configNonce) { - val packetToSave = Packet(UUID.randomUUID().toString(), "ConfigComplete", System.currentTimeMillis(), configCompleteId.toString()) + val packetToSave = Packet( + UUID.randomUUID().toString(), + "ConfigComplete", + System.currentTimeMillis(), + configCompleteId.toString() + ) insertPacket(packetToSave) // This was our config request