Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/217.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用gradle get error的应用程序;“未找到本机方法”;_Java_Android_Android Ndk_Gradle - Fatal编程技术网

Java 使用gradle get error的应用程序;“未找到本机方法”;

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

我使用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 {
    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链接到使用模糊处理的本机方法呢?