2016-06-26 53 views
1

我正在開發一個Android項目(使用Android Studio,Gradle),並將一些邏輯和小部件分成子庫項目。使用android.R等自定義命名空間創建android資源庫?

我發現R.string.xxx或其他R引用已合併,但如果它與應用程序模塊具有相同的名稱,我無法獲取我的庫的資源值。 (我用[libpacakgename].R.string.appname,但資源仍是應用模塊,而不是庫的)。

是否有使用資源就像一個Android資源的一種方式:android.R.string.xxx,或XML一樣myapp:string/xxx,其中「MYAPP」成爲我的自定義名稱空間或類名。

順便說一下,我還發現有時attr id可能會發生衝突,使編譯失敗。

+0

「有沒有像使用Android資源一樣的資源:android.R.string.xxx,或者像myapp:string/xxx這樣的」myapp「變成我的自定義命名空間或類名」 - 不是那種方式我知道。庫是一個組織工具,但是庫中的所有內容都被合併到主應用程序中。該應用程序需要能夠覆蓋庫中的資源,因爲該庫的值可能不適合該應用程序的場景。您可以使用前綴和'public.xml'來幫助避免意外的覆蓋,但這就是它。 – CommonsWare

回答

1

這可能是通過修改內部gradle任務,但這不是預期的情況。

一個簡單的解決方案是在圖書館資源標識符前加上例如(包)名稱。