我的项目(在 Delphi 中制作)需要手动生成每个包,它包括手动R.java文件。实际上,我把每个库的所有资源放在一个单一的.res目录中,我在这个目录上运行aapt.exe为每个包,就像android.support.compat:
"aapt.exe" package -v -f -m
-M "\libraries\android.support.compat\AndroidManifest.xml"
-I "C:\SDKs\android\platforms\android-32\android.jar"
-S ".\res"
-J ".\tmp\src"
--auto-add-overlay
--output-text-symbols .\tmp\
这是每个软件包的ex for android.support.coreui
"aapt.exe" package -v -f -m
-M "\libraries\android.support.coreui\AndroidManifest.xml"
-I "C:\SDKs\android\platforms\android-32\android.jar"
-S ".\res"
-J ".\tmp\src"
--auto-add-overlay
--output-text-symbols .\tmp\
问题是,在最后,我为每个包提供了相同的R.java,它非常大,因为它包含了整个App.ex的所有资源ID:
package androidx.core;
public final class R {
public static final class styleable {
public static final int[] ActionBar = new int[]{2130771969, 2130771971, 2130771972, 2130771973, 2130771974, 2130771975, 2130771976, 2130771977, 2130771978, 2130771979, 2130771980, 2130771981, 2130771982, 2130771983, 2130771984, 2130771985, 2130771986, 2130771987, 2130771988, 2130771989, 2130771990, 2130771991, 2130771992, 2130771993, 2130771994, 2130771995, 2130771996, 2130771997, 2130772082};
public static final int ActionBar_background = 10;
public static final int ActionBar_backgroundSplit = 12;
....
和
package android.support.coreui;
public final class R {
public static final class styleable {
public static final int[] ActionBar = new int[]{2130771969, 2130771971, 2130771972, 2130771973, 2130771974, 2130771975, 2130771976, 2130771977, 2130771978, 2130771979, 2130771980, 2130771981, 2130771982, 2130771983, 2130771984, 2130771985, 2130771986, 2130771987, 2130771988, 2130771989, 2130771990, 2130771991, 2130771992, 2130771993, 2130771994, 2130771995, 2130771996, 2130771997, 2130772082};
public static final int ActionBar_background = 10;
public static final int ActionBar_backgroundSplit = 12;
有没有一种方法可以为每个包生成一个R.java,其中只包含包所需的资源ID?
1条答案
按热度按时间bf1o4zei1#
首先--非常不建议手动操作
R.java
。正如 B.Burd & J. P. Mueller,Android Application Development All-in-One For Dummies,3rd Ed.,2020,Wiley,pp.87(一本严肃的书,尽管名字很严肃)中关于R.java
和Android Studio所写的:每个Android项目都有一个R.java文件。Android Studio会生成此文件,并像保护黄金一样保护它。您(开发人员)永远不会创建或修改R.java文件的文本。
以及
Android的文档告诉你不要去想R.java和它的十六进制值,这可能是个好建议。
最后
您无法编辑R.java。项目创建很长时间后,IDE仍会继续监视(并在必要时更新)R.java文件的内容。如果删除R.java,Android Studio将重新创建该文件。如果编辑R.java,Android Studio将撤消您的编辑。
严格地说,你可以在不使用Android Studio的情况下编辑
R.java
。但你不应该这样做。正如我曾经在某个地方说过的那样:虽然人类可读,这个文件不应该手动编辑,因为它很可能会崩溃的应用程序,因为错误的引用。没有什么好的理由可以想象为什么一个人应该想编辑R.java无论如何。
最后一句话在你的情况下也是有效的。
**你可以而且应该至少使用其中一个:
R.java
文件。