繁体   English   中英

Android App可在调试中使用,但无法在发行版中使用

[英]Android App works in debug but not in release

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

E / AndroidRuntime:致命例外:GoogleApiHandler进程:it.planner,PID:27326 java.lang.SecurityException:为了使用模拟模式功能应用程序,必须在开发人员设置中将it.planner选择为模拟位置应用程序。 在android.os.Parcel.readException(Parcel.java:2008)在android.os.Parcel.readException(Parcel.java:1954)在com.google.android.gms.internal.zzeu.zzb(未知来源:10)在com.google.android.gms.internal.zzcfd.zzbj(未知来源:13)在com.google.android.gms.internal的com.google.android.gms.internal.zzcfa.zzbj(未知来源:9) com.google.android.gms.internal.zzcee.zza的.zzcfk.zzbj(未知来源:2)(com.google.android.gms.common.api.internal.zzm.zzb(未知来源:4)来源:8),位于com.google.android.gms.common.api.internal.zzc.zza(未知来源:6),位于com.google.android.gms.common.api.internal.zzbo.zzb(未知来源: 9)在com.google.android.gms.common.api.internal.zzbo.zzaiw(未知来源:82)在com.google.android.gms.common.api.internal.zzbo.onConnected(未知来源:16)在com.google.android.gms.common.internal.zzn.zzakr(未知来源:130)在com.google.android.gms.common.internal.zzn.zzakr(未知来源:130)在com.google.android .gms.common.internal.zze.zzw(U com.google.android.gms.common.internal.zzi.zzaks(未知来源:51)的com.google.android.gms.common.internal.zzh.handleMessage(未知来源:270)的nknown来源:64) android.os.HandlerThread.run(HandlerThread.java:65)上的android.os.Looper.loop(Looper.java:166)上的android.os.Handler.dispatchMessage(Handler.java:109)E / iMonitor:FaultDetect: DUMPTOOL_PRINTF返回。

显然,如果我在“ 开发人员选项”中选择模拟位置,则该应用程序将启动并正常运行

如果我安装了发行版apk并尝试启动该应用程序,则该应用程序无法启动,并且在Logcat中出现了此类消息:

E / AndroidRuntime:致命例外:主进程:it.planner,PID:29448 java.lang.IllegalStateException:在android.support.v4.app.FragmentManagerImpl.checkStateLoss(FragmentManager.java:2054)的onSaveInstanceState之后无法执行此操作android.support.v4.app.BackStackRecord.commit的android.support.v4.app.FragmentManagerImpl.enqueueAction(FragmentManager.java:2077)在android.support.v4.app.BackStackRecord.commit的Internal(BackStackRecord.java:678) BackstackRecord.java:632)在它.planner.Home.mainMenu(Home.java:374)在它.planner.Home.computeGeolocation(Home.java:487)在它..planner.Home.access $ 100(Home.java) :80)at it.planner.Home $ 3 $ 1.onLocationResult(Home.java:344)在com.google.android.gms.internal.zzcff.zzu(未知来源:4)在com.google.android.gms.common .api.internal.zzci.zzb(未知来源:8)位于com.google.android.gms.common.api.internal.zzcj.handleMessage(未知来源:16)位于android.os.Handler.dispatchMessage(Handler.java :109)在android.os.Looper.loop(Looper.jav a:166),位于android.app.ActivityThread.main(ActivityThread.java:7377),位于com.android.internal.os.RuntimeInit $ MethodAndArgsCaller.run(RuntimeInit.java.lang.reflect.Method.invoke(本机方法)处。 java:469)在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:963)

一旦应用程序处于发布模式,就不可能选择模拟位置,因此它不想启动。 我已经处理了很多天了。 我也尝试了在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

暂无
暂无

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

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