相关疑难解决方法(0)

包名称上的android art runtime check_jni.cc错误

--EDIT--由于模糊的build.gradle,我有太多版本的共享库浮动了...

./src/main/jniLibs/armeabi-v7a/libaudioboo-native.so
rob@ app$ rm ./src/main/libs/armeabi-v7a/libaudioboo-native.so
rob@ app$ rm ./src/main/obj/local/armeabi-v7a/libaudioboo-native.so
rob@ app$ rm ./src/main/jniLibs/armeabi-v7a/libaudioboo-native.so 
Run Code Online (Sandbox Code Playgroud)

已解决的问题 - 将构建更改为以下内容仅使用./src/main/libs中的共享库

sourceSets {
    main {
        jni.srcDirs = [] /*disable automatic ndk-build call */
        jniLibs.srcDir 'src/main/libs'
    }
}
Run Code Online (Sandbox Code Playgroud)

在android5上打破了所以我通过为Android-studio(1.0)ndk build推文来解决它.我按照答案@holo的指示扫描了所有'findClass'的代码.注 - 在第34行更改了字符串常量

 "fm.audioboo.jni.FLACStreamEncoder"; to "fm/audioboo/jni/FLACStreamEncoder";
Run Code Online (Sandbox Code Playgroud)

那并没有解决任何问题.

java代码调用一个函数,在该本机函数执行之前,看起来艺术框架本身就是在第二个arg中使用一个错误的char分隔符调用FindClass(_JNIEnv*,char const*).如果查看pastebin链接的第46-48行,它看起来就像调用本机函数一样.该框架只会抛出错误的包名称Findclass错误.请注意,本机函数的第一行是在运行时未到达的日志语句.

Java层......

  public FLACStreamEncoder(String outfile, int sample_rate, int channels,
      int bits_per_sample)
  {
    init(outfile, sample_rate, channels, bits_per_sample);
  }

...
  native private void init(String outfile, int sample_rate, int channels,
      int bits_per_sample);

...
  static {
    System.loadLibrary("audioboo-native");
  }
Run Code Online (Sandbox Code Playgroud)

CPP层...函数永远不会到达第一行日志stmt.

extern "C" { …
Run Code Online (Sandbox Code Playgroud)

java-native-interface android-ndk android-5.0-lollipop

2
推荐指数
1
解决办法
6941
查看次数