如果我在我的Android設備上安裝並運行簽名的APK,我得到了此錯誤。如果我只編譯一個應用程序並直接在設備上運行,則不會出現此錯誤。已簽名的apk中的ClassNotFoundException
片段,似乎缺少的是在我的代碼中的項目,而不是在任何外部庫。
我該如何調查該錯誤?我試圖rebuld,乾淨的項目等..我可以不知何故在APK中找到如果在那裏創建缺少的類?
票數是錯誤消息:
E/AndroidRuntime: FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to start activity
ComponentInfo{qua.com.bix/qua.com.bix.main.MainActivity}:
android.support.v4.app.q: Unable to instantiate fragment
qua.com.bix.main.MainLoadingFragment:
make sure class name exists, is public, and has an empty constructor that is public at Android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2295)
....
....
Caused by: android.support.v4.app.q: Unable to instantiate fragment qua.com.bix.main.MainLoadingFragment: make sure class name exists, is public, and has an empty constructor that is public
....
....
Caused by: java.lang.ClassNotFoundException: Didn't find class "qua.com.bix.main.MainLoadingFragment" on path: /data/app/qua.com.bix-1.apk
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:64)
at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
at android.support.v4.app.o.a(Unknown Source)
at android.support.v4.app.o.a(Unknown Source)
這裏是我的build.gradle
apply plugin: 'com.android.application'
android {
compileSdkVersion 23
buildToolsVersion "23.0.2"
defaultConfig {
applicationId "qua.com.bix"
minSdkVersion 15
targetSdkVersion 23
versionCode 1
versionName "1.0"
multiDexEnabled true
}
buildTypes {
release {
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
packagingOptions {
exclude 'META-INF/LICENSE'
exclude 'META-INF/DEPENDENCIES'
exclude 'META-INF/NOTICE'
}
dexOptions{
incremental true
javaMaxHeapSize "4g"
}
useLibrary 'org.apache.http.legacy'
}
dependencies {
compile 'com.android.support:multidex:1.0.1'
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.1.1'
compile 'com.android.support:design:23.1.1'
compile 'com.quadriq.qlib:[email protected]'
compile 'com.google.code.gson:gson:2.4'
compile 'com.google.guava:guava:18.0'
compile 'com.google.code.findbugs:jsr305:2.0.2'
compile 'com.google.android.gms:play-services:8.3.0'
compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.5'
compile 'com.koushikdutta.ion:ion:2.+'
compile 'joda-time:joda-time:2.9.1'
compile 'com.github.michaelye.easydialog:easydialog:1.1'
}
更新:什麼幫助,現在,被禁用的ProGuard,還加入-dontobfuscate
到proguard-rules.pro
。但是以這種方式做這件事是否是一個好習慣?
的proguard-rules.pro現在是:
-dontobfuscate
-dontwarn org.apache.lang.**
-dontwarn com.google.common.**
-dontwarn org.joda.**
更新2:皮特回答我的問題。
你可以發佈你的整個progaurd配置文件嗎? – petey
我們需要告訴你的proguard配置,以保持一些類的容易 –
我把它放在更新中..我在那裏排除一些「警告」。這是你要求的文件嗎? – user1908375