Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/220.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 如何访问参考库';与父项目同名时的颜色属性';s颜色属性_Android_Android Library - Fatal编程技术网

Android 如何访问参考库';与父项目同名时的颜色属性';s颜色属性

Android 如何访问参考库';与父项目同名时的颜色属性';s颜色属性,android,android-library,Android,Android Library,我正在父项目中使用引用库(Properties/Android/Library)。引用的库在其一个屏幕/布局文件中使用颜色/透明。父项目还具有颜色/透明,但其值与引用库的颜色/透明中使用的值不同。被引用库的代码使用父项目中的值。我必须通过android:background=“#000000”将引用库的值硬编码为特定值。有没有办法让被引用的库使用自己的颜色值,而不是为相同的命名属性继承父项目的值?这就是Android库项目在Android SDK中工作的设计方式。Android库项目从不直接构建

我正在父项目中使用引用库(Properties/Android/Library)。引用的库在其一个屏幕/布局文件中使用颜色/透明。父项目还具有颜色/透明,但其值与引用库的颜色/透明中使用的值不同。被引用库的代码使用父项目中的值。我必须通过android:background=“#000000”将引用库的值硬编码为特定值。有没有办法让被引用的库使用自己的颜色值,而不是为相同的命名属性继承父项目的值?

这就是Android库项目在Android SDK中工作的设计方式。Android库项目从不直接构建,它总是在构建依赖的主项目时间接构建,在SDK编译/构建主项目时,库项目中的源和资源被过滤并合并到主项目中。如果在主项目和库项目中都定义了相同的资源名称,则来自主项目的资源名称始终具有第一优先级

请查看:

但是,库项目不同于标准的Android应用程序项目,因为您无法将其直接编译为自己的.apk并在Android设备上运行。类似地,您不能将库项目导出到一个自包含的JAR文件中,就像对真正的库所做的那样。相反,您必须通过引用依赖应用程序中的库并构建该应用程序来间接编译库

当您构建依赖于库项目的应用程序时,SDK工具会将库编译成一个临时JAR文件,并在主项目中使用它,然后使用结果生成.apk。在应用程序和库中都定义了资源ID的情况下,这些工具确保应用程序中声明的资源具有优先级,并且库项目中的资源不会编译到application.apk中。这使您的应用程序能够灵活地使用或重新定义任何库中定义的任何资源行为或值


解决方案是将主项目中的资源名称重命名为其他名称,如color/transparent2。希望这有帮助。

谢谢你的回答。不幸的是,这不是我希望听到的,但它解释了这种行为。图书馆项目就像华夫饼干屋的家庭薯条:不能和它们一起生活,也不能没有它们。