为什么 aapt2 生成的 ID 与 aapt 不同?位于 R.java 中的 ID 的用途是什么?

问题描述 投票:0回答:1

使用等效的命令行,为什么 aapt.exe 输出的 id 与 aapt2.exe 不同? r.java 又是如何工作的?我使用 aapt 和 aapt2 来生成这样的 r.java:

"aapt.exe" package -f -m -M "AndroidManifest.xml" -I "android.jar" -S "\res" -J "\RJava" --auto-add-overlay

但我仍然不明白为什么 R.java 中生成的 ids 的值很重要?这些 id 是如何工作的

android android-studio rjava aapt aapt2
1个回答
0
投票

R.java
中生成的 ID 不仅在
aapt
运行与
aapt2
运行之间不同,而且很可能在连续运行
aapt
resp 之间也不同。
aapt2
考虑到您的资源,如果您更改了代码。

R.java
文件的生成为每个资源分配一个 ID,以便在应用程序运行时引用它。如 B.Burd 和 J.P.Mueller 所写,Android 应用程序开发多合一傻瓜版,第 3 版,2020 年,Wiley,第 87 页

R.java
文件中的十六进制值是Android资源管理机制的起点。 Android 使用这些数字来快速轻松地加载您存储在 res 分支中的内容。

有关详细信息,请参阅有关访问您的应用程序资源的 Android 开发文档。有关 Doc 注释的详细说明

警告:你不应该手动修改 R.java 文件——它是在你的项目编译时由 aapt 工具生成的。下次编译时将覆盖任何更改。

您还可以查看有关How to manually generate R.java 的相关 Stackoverflow 线程。简而言之——如果一个人手动编辑

R.java
一个人很可能会破坏资源引用并最迟在运行时出现错误(有史以来最严重的错误)。

© www.soinside.com 2019 - 2024. All rights reserved.