2

ここで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」に変更することでこれを修正できますが、もちろんこれは私が望むものではありません!私は何かが足りないのですか?

4

2 に答える 2

1

これは既知のバグ#9656です。私はこの問題について2つの投稿を書きました:ここここ。これが発生する理由と、本当に今すぐ修正する必要がある場合に、この問題を修正するためにパッチを適用する方法を説明しました。

今のところ、aaptを再構築したくない場合は、すべてのカスタム属性とそれらのカスタム属性を使用するレイアウトをライブラリからアプリケーションに移動する必要があります。

于 2011-07-24T12:10:25.620 に答える
0

まだ答えを探している人のために:ADT 17以降、ライブラリプロジェクトのカスタム属性の名前空間としてhttp://schemas.android.com/apk/res-autoを使用する必要があります。これは魅力として機能します。

xmnls:mylib="http://schemas.android.com/apk/res-auto"
于 2012-09-26T08:27:42.737 に答える