簡體   English   中英

是否以不同的包名稱導出Android庫項目資源?

[英]Exporting Android library project resources under different package name?

我不確定我是否在這里遇到Android工具中的錯誤,或者是否是設計使然。 問題是這樣的:我有一個導出小部件的Android庫項目。 作為該小部件的一部分,可樣式化的屬性以R.styleable導出:

庫項目(程序包= com.example.mylib):

<declare-styleable name="com.example.MyWidget">
    <attr name="someAttr" format="integer" />
</declare-styleable>

應用項目(程序包= com.example.myapp):

<LinearLayout xmnls:mylib="http://schemas.android.com/apk/res/com.example.mylib">
  <com.example.MyWidget android:id="..." mylib:someAttr="1" />
</LinearLayout>

問題是,只要庫和應用程序使用相同的包標識符, someAttr屬性似乎僅對Android / ADT可見! 在這種情況下,它們不會,並且ADT失敗並顯示以下錯誤:

在包'com.example.mylib'中找不到屬性'someAttr'的資源標識符

就像我說的,我可以通過將應用程序的程序包名稱更改為“ com.example.mylib”來解決此問題,但這當然不是我想要的! 我想念什么嗎?

這是一個已知的錯誤#9656 關於此問題,我寫了兩篇文章: herehere 我已經解釋了為什么會發生這種情況,以及如果您現在真的需要此修復程序,該如何打補丁以解決此問題。

現在,如果您不想重建aapt,則需要將所有使用這些自定義屬性的自定義屬性和布局從庫移動到應用程序。

對於可能仍在尋找答案的任何人:自ADT 17起,您必須使用http://schemas.android.com/apk/res-auto作為庫項目中自定義屬性的名稱空間,它具有以下魅力:

xmnls:mylib="http://schemas.android.com/apk/res-auto"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM