Android 应用程序在调试中工作,但在发布时不工作

标签 android android-studio android-fragments android-gradle-plugin

我正在开发一个 Android 应用程序,但在 Release模式下运行该应用程序时遇到问题。如果我以调试 模式启动应用程序,我会在 Logcat 中收到此类消息(应用程序未启动):

E/AndroidRuntime: FATAL EXCEPTION: GoogleApiHandler Process: it.planner, PID: 27326 java.lang.SecurityException: In order to use mock mode functionality app it.planner must be selected as the mock location application in developer settings. at android.os.Parcel.readException(Parcel.java:2008) at android.os.Parcel.readException(Parcel.java:1954) at com.google.android.gms.internal.zzeu.zzb(Unknown Source:10) at com.google.android.gms.internal.zzcfa.zzbj(Unknown Source:9) at com.google.android.gms.internal.zzcfd.zzbj(Unknown Source:13) at com.google.android.gms.internal.zzcfk.zzbj(Unknown Source:2) at com.google.android.gms.internal.zzcee.zza(Unknown Source:4) at com.google.android.gms.common.api.internal.zzm.zzb(Unknown Source:8) at com.google.android.gms.common.api.internal.zzc.zza(Unknown Source:6) at com.google.android.gms.common.api.internal.zzbo.zzb(Unknown Source:9) at com.google.android.gms.common.api.internal.zzbo.zzaiw(Unknown Source:82) at com.google.android.gms.common.api.internal.zzbo.onConnected(Unknown Source:16) at com.google.android.gms.common.internal.zzac.onConnected(Unknown Source:2) at com.google.android.gms.common.internal.zzn.zzakr(Unknown Source:130) at com.google.android.gms.common.internal.zze.zzw(Unknown Source:64) at com.google.android.gms.common.internal.zzi.zzaks(Unknown Source:51) at com.google.android.gms.common.internal.zzh.handleMessage(Unknown Source:270) at android.os.Handler.dispatchMessage(Handler.java:109) at android.os.Looper.loop(Looper.java:166) at android.os.HandlerThread.run(HandlerThread.java:65) E/iMonitor: FaultDetect: DUMPTOOL_PRINTF return.

显然,如果我在开发人员选项中选择模拟位置,应用程序会启动并且运行良好

如果我安装release apk 并尝试启动该应用程序,该应用程序不会启动并且我会在 Logcat 中收到此类消息:

E/AndroidRuntime: FATAL EXCEPTION: main Process: it.planner, PID: 29448 java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState at android.support.v4.app.FragmentManagerImpl.checkStateLoss(FragmentManager.java:2054) at android.support.v4.app.FragmentManagerImpl.enqueueAction(FragmentManager.java:2077) at android.support.v4.app.BackStackRecord.commitInternal(BackStackRecord.java:678) at android.support.v4.app.BackStackRecord.commit(BackStackRecord.java:632) at it.planner.Home.mainMenu(Home.java:374) at it.planner.Home.computeGeolocation(Home.java:487) at it..planner.Home.access$100(Home.java:80) at it.planner.Home$3$1.onLocationResult(Home.java:344) at com.google.android.gms.internal.zzcff.zzu(Unknown Source:4) at com.google.android.gms.common.api.internal.zzci.zzb(Unknown Source:8) at com.google.android.gms.common.api.internal.zzcj.handleMessage(Unknown Source:16) at android.os.Handler.dispatchMessage(Handler.java:109) at android.os.Looper.loop(Looper.java:166) at android.app.ActivityThread.main(ActivityThread.java:7377) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:469) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:963)

一旦应用程序处于 Release模式,就无法选择模拟位置,因此它不想启动。我已经处理这个问题很多天了。我还在 Gradle 文件中尝试使用 minifyEnabled false 但它不起作用。

gradle 文件如下:

buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.release
        }
        debug {
            debuggable true
        }
    }
    sourceSets {
        main { assets.srcDirs = ['src/main/assets', 'src/main/assets/'] }
        debug {
            manifest.srcFile 'src/main/AndroidManifest.xml'
        }
    }

最佳答案

此问题可能是因为未使用正确的 API 提交 fragment 事务。尝试寻找

transaction.commit();

并将其替换为

transaction.commitAllowingStateLoss();

更多讨论在这里:https://github.com/OneBusAway/onebusaway-android/issues/529#issuecomment-224974339

关于Android 应用程序在调试中工作,但在发布时不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53366711/

相关文章:

sdk - 将 SDK 文件夹从一台 PC 复制并粘贴到另一台 PC 是否可以在 Android Studio 中使用?

java - 将上下文从 Activity 内的 fragment 传递到另一个类

Android 4.0.x 和 4.1.x viewPager 错误?

android - 使用 RxJS 响应 native

java - Jsoup 获取 Android 应用程序上的所有 html 数据,但无法获取 Java 控制台应用程序上的所有 html 数据

android - 如何解决 Android studio 中的多个 dex 文件错误

java - 如何在第二个 Activity 的 Texview 中显示来自 Mainactivity 的变量

android - 单击按钮更改 View ?

android - 使用 picasso 加载图像时淡入动画

android - 如何在 scrollview 中一起滚动两个 gridview 和一个 imageview