gpt4 book ai didi

android - R.java 中 protected Android ID

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:28:59 31 4
gpt4 key购买 nike

对于那些在 Android 源代码中花费了大量时间的用户来说,android.R 类中生成的 ID 并不 1:1 反射(reflect)实际找到的资源并不是新闻在提供的 JAR 的 res/ 目录中。许多可绘制对象/样式/布局不是“公开的”,应用程序可以通过引用 android.R.xxx 访问它们。

我的问题是有人知道 Android 能够生成与实际资源图不同的 R.java 类的机制吗?其次,它是否是一种机制(使用构建规则等),我们作为开发人员可以利用它来部分保护在用作库的应用程序中公开的 ID?

提前致谢!

最佳答案

Android使用aapt打包资源,在构建过程中使用该工具生成R文件。在这一步中,XML文件被编译为二进制文件,其他资源直接打包。您可以打开 .apk 文件作为 zip 存档并按原样访问所有资源文件。库项目仅包含在编译时添加到项目中的源文件和资源,因此它们会以某种方式存在于 .apk 文件中。可能布局不是 1:1,因为 XML 已经为库项目编译。可能有一种方法可以使用 aapt 从库项目中删除文件,使其在构建时不被包含,但这样它们就无法在您的项目中访问。也可能有一种方法可以在编译时使用 aapt 和 ant 混淆您的资源名称,但这并不能阻止它们访问它们。

我不确定您为什么想要一个与实际资源图不同的 R.java 类。要么在构建时不包含这些资源,要么它们将包含在 apk 中。您的布局在输出中被压缩为二进制文件,因此我不确定它们在另一个项目中反编译或重用的难易程度。

这里的结局是什么?如果是为了保护你的资源,那就难了。如果有人能够 root 手机,Android 将非常不安全。如果你想保护你的 IP,我假设这是最后的结局,我会尝试将我的项目编译成一个 apk,看看我是否可以反编译或从 apk 中提取关键资源。也许尝试一些混淆,但同样,我对编译的 XML 文件了解不够,无法知道它们是否足够混淆以至于不容易被反编译。

如果我错了,请随时纠正我,但这只是我的 2 美分。

关于android - R.java 中 protected Android ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9297157/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com