Android SDK を jar として作成しています。カスタム パラメータを持つカスタム ビューがいくつか含まれています。開発者が jar を libs フォルダーにドロップする以外に何もする必要がないドロップイン ソリューションを作成したいと考えています。私は実際のライブラリ プロジェクトには参加できません。これはビジネス要件です。
すべてが実際に正常に動作し、これは私の最初の Android プロジェクトではなく、jar として出荷されます。ただし、この例では、カスタム ビューのカスタム属性が必要です。これは、Android が xml スキーマを介してビューでサポートされている属性セットを認識している必要があることを意味します。
簡単な解決策は、ユーザーに定義済みの attr.xml をリソース フォルダーに配置させることです。ただし、admob のようなライブラリは、カスタムの attr.xml がなくても機能することがわかりました。たとえば、admob では次のように宣言します。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"/>
<com.google.ads.AdView android:id="@+id/ad"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
ads:adSize="BANNER"
ads:adUnitId="AD_UNIT_ID_GOES_HERE"
ads:testDevices="TEST_EMULATOR,TEST_DEVICE_ID_GOES_HERE"
ads:loadAdOnCreate="true"/>
</LinearLayout>
ただし、アプリケーションに attr.xml を追加する必要はありません。私が彼らのようにそれを使用しようとすると(私はjarファイルにビューを持っています)、独自のカスタム属性で上記と同じレイアウトを持っている場合、aaptは文句を言います:
- エラー: パッケージ 'com.XXX.XXX' で属性 'XXX' のリソース識別子が見つかりません
既に admobs jar ファイルを調べましたが、com.google.ads パッケージに xml 定義のような特別なものは見つかりません。彼らがどのようにこれを行うことができたのか/どの属性がadmobのビューでサポートされているかをaaptがどのように知っているのでしょうか?
ありがとう!