1
我面臨着這個奇怪的問題,我的應用程序崩潰時,它啓動時生成簽名的apk與混淆(progaurd)。 我progaurd看起來象下面這樣:應用程序崩潰,同時生成簽名的apk與模糊處理(NoSuchMethodError)
-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
-keep public class * extends android.view.View {
public <init>(android.content.Context);
public <init>(android.content.Context, android.util.AttributeSet);
public <init>(android.content.Context, android.util.AttributeSet, int);
public void set*(...);
}
-keepclasseswithmembers class * {
public <init>(android.content.Context, android.util.AttributeSet);
}
-keepclasseswithmembers class * {
public <init>(android.content.Context, android.util.AttributeSet, int);
}
-keepclassmembers class * extends android.content.Context {
public void *(android.view.View);
public void *(android.view.MenuItem);
}
-keepclassmembers class * implements android.os.Parcelable {
static ** CREATOR;
}
-keepclassmembers class **.R$* {
public static <fields>;
}
-keepattributes Exceptions,InnerClasses,Signature
-keep class com.google.api.client.**
-keepclassmembers class com.google.api.client.** {
*;
}
-keep class com.google.android.gms.**
-keepclassmembers class com.google.android.gms.** {
*;
}
-keep class com.google.gson.**
-keepclassmembers class com.google.gson.** {
*;
}
-keep class com.google.api.client.** { *; }
-dontwarn com.google.api.client.*
-keep class org.apache.http.** { *; }
-dontwarn org.apache.http.*
-dontnote org.apache.http.**
-dontwarn java.awt.**
-dontwarn org.postgresql.**
-dontwarn javax.activation.**
-dontnote javax.activation.**
-dontwarn myjava.awt.datatransfer.**
-dontnote myjava.awt.datatransfer.**
-dontwarn com.google.android.gms.**
-keep class com.google.android.gms.**
# The official support library.
-keep class android.support.v4.** { *; }
-keepclassmembers class android.support.v4.** {
*;
}
-keep interface android.support.v4.** { *; }
-keep class android.support.v7.** { *; }
-keepclassmembers class android.support.v7.** {
*;
}
-keep interface android.support.v7.** { *; }
-keep class org.apache.http.** { *; }
-keepclassmembers class org.apache.http.** {*;}
-dontwarn org.apache.**
-keep class org.codehaus.mojo.animal_sniffer.** { *; }
-keep class java.nio.file.** { *; }
-keep class java.lang.invoke.** { *; }
-keepclassmembers class com.fasterxml.jackson.core.**
-keepclassmembers class org.codehaus.mojo.animal_sniffer.**
-keepclassmembers class java.nio.file.**
-keepclassmembers class java.lang.invoke.**
-enter code here`-dontwarn retrofit2.**
-keep class retrofit2.** { *; }
-keepclasseswithmembers class * {
@retrofit2.http.* <methods>;
}
-keep class android.net.http.** { *; }
-keepclassmembers class android.net.http.** {*;}
-dontwarn android.net.**
我能夠生成簽名的APK,但如果這個程序被啓動,應用程序崩潰引發了以下錯誤:
java.lang.NoSuchMethodError: No interface method i()I in class
Landroid/content/res/XmlResourceParser; or its super classes (declaration of
'android.content.res.XmlResourceParser' appears in
/system/framework/framework.jar)
at
android.support.v4.content.FileProvider.parsePathStrategy(Unknown Source)
at
android.support.v4.content.FileProvider.getPathStrategy(Unknown Source)
at
android.support.v4.content.FileProvider.attachInfo(Unknown Source)
at
android.app.ActivityThread.installProvider(ActivityThread.java:6762)
at
android.app.ActivityThread.installContentProviders(ActivityThread.java:6357)
任何人都可以請建議如果我錯過了progaurd文件或任何其他配置中的任何內容(在構建Gradle中,我提到了minifyEnabled true和proguard路徑)。
我想你已經在你的應用水平gradle這個文件應用progaurd規則。當你這樣做時,所有未使用的資源和類都將被忽略,APK將根據您的請求生成。所以你正面臨着這個問題。 – Noorul