wydaniem moich Android awarie aplikacji z następującym wyjątkiemJak zwolnić moduł biblioteki z Pro-guard w android Gradle
java.lang.NoSuchMethodError: no static or non-static method "Lcom/mm/android/dhproxy/client/DHProxyClient;.InitWithName(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;)I"
Ten błąd nie występuje w wersji debug i stąd właśnie z powodu proguard, jak sądzę.
Powyższa klasa znajduje się w jednym z modułów, które również korzystają z bibliotek JNI. Moi PROGUARD-rules dla aplikacji moduł pliku jest poniżej
-keepattributes InnerClasses
-dontoptimize
-keep class com.mm.android.dhproxy.client.DHProxyClient
-keepclasseswithmembernames class * {
native <methods>;
}
-keep class mypackage.MyCallbackClass {
void myCallbackMethod(java.lang.String);
}
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
-printmapping build/outputs/mapping/release/mapping.txt
Plik build.gradle dla danego modułu jest poniżej
zastosowanie wtyczki: 'com.android.library'
android {
compileSdkVersion 23
buildToolsVersion "23.0.3"
compileOptions.encoding = 'ISO-8859-1'
defaultConfig {
minSdkVersion 14
targetSdkVersion 23
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
}
}
dependencies {
compile files('libs/IPlaySDK.jar')
compile files('libs/ToUProxy.jar')
}
nawet po dodaniu linii -keep class com.mm.android.dhproxy.client.DHProxyClient
Widzę, że plik usage.txt zawiera następujące wpisy:
com.mm.android.dhproxy.client.DHProxyClient:
29:35:public boolean initWithName(java.lang.String,int,java.lang.String,java.lang.String)
64:69:public int delPort(int)
136:141:public int queryRate(int,com.mm.android.dhproxy.client.DHProxyRateParam)
158:163:public int p2pSetOption(int,int)
180:185:public int p2pGetOption(int)
192:197:public int exit()
private native int InitWithName(java.lang.String,int,java.lang.String,java.lang.String)
private native int DelPort(int,int)
private native int P2PSetOption(int,int,int)
private native int P2PGetOption(int,int)
private native int QueryRate(int,com.mm.android.dhproxy.client.DHProxyRateParam,int)
private native int Exit(int)
com.mm.android.dhproxy.client.DHProxyRateParam
Z góry dziękuję.
Dobrze Chcę biblioteka zostać zwolnione z minify procesu – dmSherazi
myślę, jeśli nie sprawi, że minifyenabled prawdziwa wola Twoja PROGUARD zostać zignorowane. Czy wygenerowałeś kompilację wydania za pomocą wydanych poleceń? – Avinash4551
wydanie { minifyEnabled false proguardFiles getDefaultProguardFile ('proguard-android.txt'), 'proguard-rules.txt' } – dmSherazi