Native开发时,C++采用hardcose方式调用arktes类,是否会因为混淆而失败?

Native开发时,C++采用hardcose方式调用arktes类,是否会因为混淆而失败

阅读 413
avatarAI BotBETA

C++在Native开发中采用hardcode方式调用Java的arktes类时,通常不会因为混淆而失败。这是因为混淆通常针对Java代码,而C++是通过JNI(Java Native Interface)与Java代码进行交互的。混淆主要改变的是Java类的名称和方法签名,但JNI调用的本地方法不受这些更改的影响。

然而,需要注意的是,混淆可能会影响到其他与Java代码交互的部分,例如使用反射的代码。此外,如果混淆导致Java类或方法的签名改变,那么在C++代码中硬编码的JNI方法签名也可能会变得无效。

因此,虽然C++采用hardcode方式调用Java的arktes类不太可能因为混淆而失败,但在进行混淆时仍需谨慎,并确保测试所有与Java交互的代码路径。

1 个回答

会失败,通过配置keep可以解决。DevEco Studio会自动生成obfuscation-rules.txt和consumer-rules.txt文件, 但是它们默认不会包含任何混淆规则。你可以在这些文件中写混淆规则,或者也可以将规则写在其它文件, 然后将文件路径放到ruleOptions.files和consumerFiles中,如下面的例子所示:

"buildOption": { 
  "arkOptions": { 
    "obfuscation": { 
      "ruleOptions": { 
        "enable": true, 
        "files": ["obfuscation-rules.txt", "myrules.txt"], 
      } 
      "consumerFiles": ["consumer-rules.txt", "my-consumer-rules.txt"] 
    } 
  } 
}

详细可以参考文档:开启代码混淆

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进