簡體   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