1

我对原生 Android 库有一点问题。我正在从本机代码中调用一个方法,如下所示:

        clazz = env->FindClass("<package>/NativeInterface");;
        midlog = env->GetStaticMethodID(clazz, "callStr", "(Ljava/lang/String;)V");
        jstring jstr = env->NewStringUTF(s.c_str());
        env->CallStaticVoidMethod(clazz, midlog, jstr);

当我在调试模式下构建我的应用程序时,我对此没有任何问题。但是当我在发布模式下构建时,我得到一个错误:

Throwing new exception 'no static method "L<package>/NativeInterface;.callStr(Ljava/lang/String;)V

会不会是 Android Studio 混淆了 Java 代码,而我的本机库再也找不到方法了?我的问题是什么?

4

1 回答 1

1

混淆本身不是问题,但 ProGuard 可以删除“未使用”的方法。您可以使用-keep选项或植入虚构的调用来防止条带化callStr()

于 2016-03-12T15:19:13.257 回答