我有混淆问题。为了更好地想象:
JAVA代码
本地代码
一切都很好,直到我想发布混淆版本。Java类的名称(例如
有没有办法动态设置方法名?
JAVA代码
class JniTest...
public void test()
{
//some code
}
public void runJniCode()
{
//here I call native code
}
本地代码
JNIEXPORT void JNICALL
Java_path_to_class_test(JNIEnv* env, jobject obj)
{
//here I call test method from Java
}
一切都很好,直到我想发布混淆版本。Java类的名称(例如
JniTest
)和此类中的方法test
被Proguard重命名为“a”和“a()”(这可能不总是相同的),但在本地代码中,该方法和类的原始名称保持不变,因为它们被硬编码为字符串,例如:jmethodID mid = env->GetMethodID(cls, "test", "someSignature");
有没有办法动态设置方法名?