简体   繁体   English

Android 版本构建在启动时崩溃

[英]Android release build crashes on launch

App installs and runs fine on an android phone during development when I connect it through usb.当我通过 usb 连接它时,应用程序在开发期间在 android 手机上安装并运行良好。 But when I deployed to production, now it gives me "Unfortunately app has stopped" every time I open the app.但是当我部署到生产环境时,现在每次打开应用程序时它都会给我“不幸的是应用程序已停止”。

So I figured it out that it's issue with Urban airship settings in proguard-rules file.所以我发现这是 proguard-rules 文件中 Urban 飞艇设置的问题。 And added below lines in proguard-rules file.并在 proguard-rules 文件中添加以下行。

-keep class com.urbanairship.** { ; -保留 class com.urbanairship.** { ; } -dontwarn com.urbanairship. -dontwarn com.urbanairship。 * *

But still crashes on launch with following error.但仍然在启动时崩溃并出现以下错误。

java.lang.NoSuchMethodError: No virtual method object()Lm/b/g; in class Lm/b/g; or its super classes (declaration of 'm.b.g' appears in /data/app/~~8aj5YP2-7MODBpBbFJ_YYw==/com.hct2.android.web.dev-dcCYVQdPn_VkfhnR9UHHfA==/base.apk!classes2.dex)
        at com.urbanairship.json.JsonMap.write(JsonMap.java:211)
        at com.urbanairship.json.JsonMap.toString(JsonMap.java:195)
        at com.urbanairship.job.WorkUtils.convertToData(WorkUtils.java:24)
        at com.urbanairship.job.WorkManagerScheduler.createWorkRequest(WorkManagerScheduler.java:35)
        at com.urbanairship.job.WorkManagerScheduler.schedule(WorkManagerScheduler.java:22)
        at com.urbanairship.job.JobDispatcher.dispatch(JobDispatcher.java:92)
        at com.urbanairship.channel.AirshipChannel.dispatchUpdateJob(AirshipChannel.java:1115)
        at com.urbanairship.channel.AirshipChannel.dispatchUpdateJob(AirshipChannel.java:1096)
        at com.urbanairship.channel.AirshipChannel.updateRegistration(AirshipChannel.java:744)
        at com.urbanairship.push.PushManager.setUserNotificationsEnabled(PushManager.java:495)
        at f.g.a.a.a.h.f.a.onCreate(BaseActivity.java:175)

To avoid such problems in production, it is better to enable proGuard for the debug version as well.为避免生产中出现此类问题,最好也为调试版本启用 proGuard。 I had a similar problem, here is my proguard-rules.pro:我遇到了类似的问题,这是我的 proguard-rules.pro:

-optimizationpasses 5
-dump class_files.txt
-printseeds seeds.txt
-printusage unused.txt
-printmapping mapping.txt
-optimizations !code/simplification/arithmetic,!field/*,!class/merging*/
-allowaccessmodification
-repackageclasses ''

-keep public class * extends android.app.Activity
-keep public class * extends android.app.Application
-keep public class * extends android.app.Service
-keep public class * extends android.content.BroadcastReceiver
-keep public class * extends android.content.ContentProvider

-keepattributes InnerClasse
-keepattributes *Annotation*, InnerClasses
-dontnote kotlinx.serialization.SerializationKt
-keep,includedescriptorclasses class com.mymiscapps.example.**$$serializer { *; }

-keep class kotlin.reflect.** { *; }
-dontwarn kotlin.reflect.**
-keep class org.jetbrains.** { *; }

-keep class com.mymiscapps.example.** { *; }

-keep public class org.apache.commons.io.**
-keep public class com.google.gson.**
-keep public class com.google.gson.** {public private protected *;}

The text of the error makes me think that proGuard has a problem with activity or serialization.错误的文字让我觉得 proGuard 的活动或序列化有问题。 My file includes both.我的文件包括两者。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM