发布版本有以下例外如何免除亲卫队库模块中的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"
此错误是在调试版本中发现,因此是因为我想是的proguard。
上面提到的类在其中一个也使用JNI库的模块中。 我proguard的规则为应用模块文件低于
-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
为有关模块的build.gradle文件低于
应用插件: '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')
}
即使添加了一行-keep class com.mm.android.dhproxy.client.DHProxyClient
后,我可以看到usage.txt文件conatins以下条目
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
在此先感谢。
嗯,我想从缩小过程 – dmSherazi
豁免图书馆我想,如果你不会让你minifyenabled真您的ProGuard会被忽略。你是否使用我提到的命令生成了发布版本? – Avinash4551
版本{ minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'),'proguard-rules.txt' } – dmSherazi