Java 使用gradle get error的应用程序;“未找到本机方法”;
我使用gradle生成APK。安装后,发布的版本出现错误:Java 使用gradle get error的应用程序;“未找到本机方法”;,java,android,android-ndk,gradle,Java,Android,Android Ndk,Gradle,我使用gradle生成APK。安装后,发布的版本出现错误:java.lang.UnsatisfiedLinkError:Native method not found:com.fss.e.b.a:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String 但调试版看起来不错。我编写的build.gradle如下: apply plugin: 'android' dependencies { comp
java.lang.UnsatisfiedLinkError:Native method not found:com.fss.e.b.a:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String代码>
但调试版看起来不错。我编写的build.gradle如下:
apply plugin: 'android'
dependencies {
compile fileTree(dir: 'libs', include: '*.jar')
compile project(':fss:libs:actionbarsherlock')
compile project(':fss:libs:library')
compile project(':library')
}
android {
compileSdkVersion 17
buildToolsVersion "18.0.1"
signingConfigs {
myConfig{
}
}
buildTypes{
release {
signingConfig signingConfigs.myConfig
}
}
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
resources.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}
// Move the tests to tests/java, tests/res, etc...
instrumentTest.setRoot('tests')
debug.setRoot('build-types/debug')
release.setRoot('build-types/release')
}
}
tasks.withType(Compile) {
options.encoding = "UTF-8"
}
task copyNativeLibs(type: Copy) {
from fileTree(dir: 'libs', include: '**/*.so' )
into 'build/native-libs'
}
tasks.withType(Compile) { compileTask -> compileTask.dependsOn copyNativeLibs }
clean.dependsOn 'cleanCopyNativeLibs'
tasks.withType(com.android.build.gradle.tasks.PackageApplication) { pkgTask ->
pkgTask.jniDir new File('build/native-libs')
}
添加这些以保留本机方法。错误将得到解决
-keepclasseswithmembernames class * {
native <methods>;
}
-KeepClassSwithMemberNames类*{
本地人;
}
只是为了确认:您明确地从JNI注册了com.fss.e.b.a
,或者在本机库中声明了Java\u com\u fss\u e\u b\a
方法?我这样问是因为这看起来像是Proguard模糊处理。@fadden是的,这是Proguard模糊处理。那么如何让it链接到使用模糊处理的本机方法呢?