Android SDK ライブラリを開発しています。このライブラリでは、いくつかのアクティビティを宣言して使用しました。今、アプリケーションにライブラリを含めようとしましたが、アプリですべてのライブラリ アクティビティを宣言する必要があることに気付きました。ライブラリには多くのアクティビティが含まれており、開発者はすべてのアクティビティを自分のアプリにコピーする必要があるため、これは非常に悪いことです。これに対する解決策はありますか?
2 に答える
いいえ、これは現時点でライブラリの既知の制限です。Android 開発コミュニティでは、将来的にこれを修正することについて多くの議論がありますが、今のところ、ライブラリの実行方法の制限です。
ドキュメントから
アプリケーション プロジェクトのマニフェスト ファイルでは、ライブラリ プロジェクトからインポートされた、アプリケーションが使用するすべてのコンポーネントの宣言を追加する必要があります。たとえば、、、、、など、および同様の要素を宣言 する
<activity>
必要が あります。<service>
<receiver>
<provider>
<permission>
<uses-library>
また、マーク・マーフィーによる優れた回答もここにあります。
更新 1: Gradle を使用すると、マニフェストのマージが自動的に行われるようになりました。それがどのように機能するか、および競合を解決する方法の詳細については、ここを参照してください(guy.gc のコメントに感謝します)。
元の投稿:
このスレッドを更新するには: 自動マージが可能になりました。追加するだけで済みます
manifestmerger.enabled=true
あなたのproject.propertiesに。Android で新しい「manifestmerger」プロパティを使用すると、これについても説明します。
これが古いスレッドであることは知っていますが、偶然見つけたので、他の人 (私を含む) がそれが不可能であると考えないようにしたいと考えています。私のプロジェクトでは、ライブラリを消費するアプリでアクティビティを利用するには、この 1 行で十分でした。