親プロジェクトで参照ライブラリ(プロパティ/ Android /ライブラリ)を使用しています。参照されるライブラリは、画面/レイアウトファイルの1つで色/透明を使用します。親プロジェクトにも色/透明度がありますが、参照されるライブラリの色/透明度で使用されている値とは異なります。参照されるライブラリのコードは、親プロジェクトの値を使用します。参照されるライブラリの値をandroid:background = "#000000"を介して特定の値にハードコーディングする必要がありました。同じ名前の属性の親プロジェクトの値を継承する代わりに、参照されるライブラリに独自の色の値を使用させる方法はありますか?
1 に答える
これは、AndroidライブラリプロジェクトがAndroidSDKで機能するように設計されている方法です。Androidライブラリプロジェクトが直接ビルドされることはありません。依存するメインプロジェクトがビルドされると常に間接的にビルドされます。SDKがメインプロジェクトをコンパイル/ビルドすると、ライブラリプロジェクトのソースとリソースがフィルタリングされてメインプロジェクトにマージされます。メインプロジェクトとライブラリプロジェクトの両方で同じリソース名が定義されている場合、メインプロジェクトのものが常に最優先されます。
公式開発ガイドをチェックしてください:
ただし、ライブラリプロジェクトは、独自の.apkに直接コンパイルして、Androidデバイスで実行できないという点で、標準のAndroidアプリケーションプロジェクトとは異なります。同様に、実際のライブラリの場合のように、ライブラリプロジェクトを自己完結型のJARファイルにエクスポートすることはできません。代わりに、依存アプリケーションでライブラリを参照し、そのアプリケーションをビルドすることにより、ライブラリを間接的にコンパイルする必要があります。
ライブラリプロジェクトに依存するアプリケーションをビルドする場合、SDKツールはライブラリを一時的なJARファイルにコンパイルし、メインプロジェクトで使用してから、その結果を使用して.apkを生成します。アプリケーションとライブラリの両方でリソースIDが定義されている場合、ツールは、アプリケーションで宣言されたリソースが優先され、ライブラリプロジェクトのリソースがアプリケーション.apkにコンパイルされないようにします。これにより、アプリケーションは、任意のライブラリで定義されているリソースの動作または値を使用または再定義する柔軟性が得られます。
解決策は、メインプロジェクトのリソース名をcolor/transparent2などの名前に変更することです。この助けを願っています。