proguard无法使用jni(本机字符串)

时间:2017-01-18 13:19:30

标签: java android java-native-interface proguard

问题:

启用android studio上的proguard,因为这个错误,jni无法完成项目:

注意:通过内省对类成员进行了11次访问。       您应该考虑明确保留提到的类成员

消息代码:

jni代码:

JNIEXPORT jstring JNICALL
Java_example_example(JNIEnv *env, jobject instance) {

  return (*env)->NewStringUTF(env, "example");

}

java代码:

public native String example();

尝试:

1)添加proguard规则:

-keep class *  {  // I also tried to put the class one by one instead of *

 native <methods>; // or  "*;" , "public native <methods>" , "public *;"

}

2)添加proguard规则(成功构建,活动无法在设备上启动):

-ignorewarn

1 个答案:

答案 0 :(得分:0)

所以答案很简单 - 您需要像这样更改C函数:

JNIEXPORT jstring JNICALL
Java_app_myapplication_example(JNIEnv *env, jobject instance) {

  return (*env)->NewStringUTF(env, "example");

}