如何在Android中使用XML引用库中另一个包的字符串?

Gar*_*son 6 xml string resources android package

Android 文档告诉我,我可以使用"包名称"访问另一个包中的字符串,无论这意味着什么:

@[<package_name>:]<resource_type>/<resource_name>
Run Code Online (Sandbox Code Playgroud)

所以在我的清单中,我想要访问一个我放在一个单独的库项目中的字符串,com.globalmentor.android package在我的R类所在的地方,毕竟:

    <activity
        android:label="@com.globalmentor.android:string/app_applicationlistactivity_label"
        android:name="com.globalmentor.android.app.ApplicationListActivity" >
    </activity>
Run Code Online (Sandbox Code Playgroud)

这甚至都没有编译.但这样做:

    <activity
        android:label="@string/app_applicationlistactivity_label"
        android:name="com.globalmentor.android.app.ApplicationListActivity" >
    </activity>
Run Code Online (Sandbox Code Playgroud)

为什么?Android文档对于"package_name"的含义是什么意思?为什么第一个示例不起作用,为什么第二个示例有效?我不希望我的所有资源名称合并到同一个R文件中 - 我希望它们分区为包,就像我写的那样.

ale*_*rov 5

简而言之:包名称前缀是针对共享库的,而不是针对您的 apk 的。

文档内容如下:

要引用系统资源,您需要包含包名称

这对应于外部共享库(及其资源),您的应用程序链接到(例如地图)。它们有自己的 R 类,未与您的应用程序的类合并。

这些都是您在 android 清单部分提到的所有标准 android 包和共享库。

正如 Nikolay 指出的那样,所有应用程序资源都会合并,这就是为什么大多数库项目都使用像ABS__这样的前缀作为其资源名称。

有关更多信息,请参阅库项目文档。