2016-02-29 3 views
10

私はSDKを作成しており、activity-aliasを作成できるようにしたいと考えています。targetActivityはSDK内のアクティビティに設定されています。 SDKの特定のアクティビティでインテントフィルタをカスタマイズできるようにするためです。 SDKのマニフェストにActivityXがあれば、私は彼らが自分のアプリのマニフェストにこのようなactivity-aliasを書くことができるようにしたいと思います:アンドロイド:targetActivityがaar/sdkにあるアクティビティエイリアスを作成できるようにする

<activity-alias 
    android:name="abc" 
    android:targetActivity="ActivityX"> 
    <intent-filter> 
    ... user's custom intent filter 
    </intent-filter> 
</activity-alias> 

私は全体来ている問題があることがtargetActivityありますそれrestrictionています「 マニフェストにエイリアスを先行すること...活動要素のname属性と一致しなければなりません」

私はSDKのマニフェストに活動を置くか、私は例のアプリのマニフェストでエイリアスを置いた場所に関係なく、エイリアスは常にINSTALL_PARSE_FAILED_MANIFEST_MALFORMEDエラーを引き起こし、最終的なマージされたマニフェストに活動前に来るので、これは問題です。

ActivityXがsdkマニフェストで宣言された直後にインテントフィルタなしでエイリアスを配置し、2つのエイリアスがになり、sdkエイリアスの位置にとどまることを考えてください。しかし、私はそれを行う方法を理解することはできません。うまくいかない理由の1つは、2つのエイリアスが競合しないことがあるということです。

マージソリューションやその他の手法でこれを解決することについて考えていますか?

+1

このような角の場合、Androidライブラリは非常に限られています。なぜあなたはそれをしたいのか分かります。私は分かりませんが、b.android.comにツールチームに機能要求として投稿することをお勧めします –

答えて

3

同一のissueをAOSPに掲げた。

手動アクティビティエイリアスエントリの前に置く、 アプリケーションプロジェクトのマニフェストを[SDK]から活性のマニフェストエントリを含む次のような問題の回避策が記載されています。この回避策は

の問題...マニフェスト間で重複したコードを持っているという事実にもかかわらず

プロジェクトの保守担当者はこの解決策を適切とみなしているようです。根本的な問題の修正がすぐにリリースされるという兆候はありません。