【发布时间】:2013-09-30 23:56:29
【问题描述】:
我有混淆的问题。为了更好的想象:
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");
...有没有办法动态设置方法名?
【问题讨论】:
-
嘿,你找到解决办法了吗?
-
不,我必须更改 proguard 中的设置才能保留此方法:(
标签: android java-native-interface native obfuscation