Dev*_*red 13 resources android r.java-file
对于那些在Android源代码中花费了大量时间的人来说,在android.R类中生成的ID 不是1:1反映res/在提供的JAR 的目录中找到的实际资源并不是新闻.许多drawables/styles/layouts不是"公共的",并且可以通过引用访问应用程序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 美分。
| 归档时间: |
|
| 查看次数: |
627 次 |
| 最近记录: |