Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/185.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何使用DexGuard混淆XML资源文件?_Android_Xml_Resources_Dexguard - Fatal编程技术网

Android 如何使用DexGuard混淆XML资源文件?

Android 如何使用DexGuard混淆XML资源文件?,android,xml,resources,dexguard,Android,Xml,Resources,Dexguard,我正在使用DexGuard处理我的android应用程序。 在DexGuard的主页上,他们说它的特点是:XML资源混淆 我已经测试了DexGuard并用apktool反编译了我的输出.apks。 问题是所有资源文件都已成功反编译,因此它们显然没有被混淆 现在我的问题是,DexGuard是否会自动混淆XML资源,还是必须在我的DexGuard-project.txt文件中以某种方式激活它? 是否可能混淆strings.XML之类的XML资源,或者我误解了此功能?为什么要混淆strings.XML

我正在使用DexGuard处理我的android应用程序。 在DexGuard的主页上,他们说它的特点是:XML资源混淆

我已经测试了DexGuard并用apktool反编译了我的输出.apks。 问题是所有资源文件都已成功反编译,因此它们显然没有被混淆

现在我的问题是,DexGuard是否会自动混淆XML资源,还是必须在我的DexGuard-project.txt文件中以某种方式激活它?
是否可能混淆strings.XML之类的XML资源,或者我误解了此功能?

为什么要混淆strings.XML?是因为你有api密钥还是oauth秘密?如果是这样,那么最好将它们移动到assets/config.properties文件并加载到
java.util.properties
对象中,如下所示

Properties appConfigProperties = new Properties();
appConfigProperties.load(context.getAssets().open("config.properties"))
String myApiKey = appConfigProperties.get("my_api_key");
(为了简洁起见,我删除了异常处理)

确保在DexGuard配置文件中启用资产加密:

-encryptassetfiles assets/**

我收到DexGuard的以下声明:

资源XML文件在发布版本中会自动模糊, 尽管差异可能很细微。你可以比较 与aapt d xmltree application.apk等的差异 AndroidManifest.xml。我们正在对资源进行更多的模糊处理 对于即将发布的版本

执行建议的命令
aapt d xmltree application.apk
(其中application.apk是一个简单的HelloWorld应用程序)后,我终于可以看到DexGuard在XML文件中实际上混淆了什么:

XML资源文件中的每个属性都由名称标识,但通常也由数字标识符标识。
 例如,在AndroidManifest.xml中:

android:versionName(0x010102lc)=“1.0”

在模糊处理步骤中,DexGuard可以删除属性的名称,但前提是该属性还具有数字标识符

DexGuard模糊处理后,上述属性将如下所示:

:(0x010102lc)=“1.0”


例如,由于strings.XML的XML元素只有一个名称而没有数字标识符,因此反编译的XML文件中不会有任何差异。

是否打开其中一个XML文件并查看它<代码>资源XML文件的更多混淆。DexGuard现在使文件更不可读,并加强了它们的抗篡改性。看起来只是在内部将它们混淆,而不是自己重命名文件。是的,我打开了它们,并将它们与实际的资源文件进行了比较。它们完全等于dexguard输出。(顺便说一句,资产/类/字符串加密等其他功能确实有效。)我也遇到了同样的情况,xml资源已成功反编译,但源代码没有。你在user2350644找到解决方案了吗