簡體   English   中英

Android庫Manifest與App Manifest

[英]Android Library Manifest vs. App Manifest

我在這里已經閱讀了類似的問題,但我仍然不清楚幾件事情。 使用庫項目意味着我的整個項目將有兩個清單 - 一個用於庫,另一個用於“主”應用程序項目 - 我不清楚是什么或哪些有冗余。

我正在開發一個帶有“精簡”和“付費”版本的應用程序小部件,因此幾乎所有代碼都在庫項目中。 作為一個小部件,該庫至少會有一個接收器,一個服務,一個配置活動,以及其他一些活動。 那么應該在哪里聲明這些組件的完整聲明 - 包括意圖,過濾器等? 它們是在庫的清單中,還是在應用程序包本身的清單中,引用庫中的類(例如android:name =“com.foo.mylibrary.MyService”)?

我看過的一些例子似乎在兩個清單中都聲明了它們,但我懷疑將它們放在一個或另一個中是一個無操作。

使用庫項目意味着我的整個項目將有兩個清單 - 一個用於庫,另一個用於“主”應用程序項目 - 我不清楚是什么或哪些有冗余。

目前尚未使用庫項目清單。

Gradle for Android,因此Android Studio支持庫項目和AAR發布清單。 這可以包括活動聲明,所需權限或功能或最低支持的Android SDK級別。

庫清單如何與應用程序自己的清單合並的規則 - 特別是考慮到構建類型和產品風格時 - 有點復雜

那么應該在哪里聲明這些組件的完整聲明 - 包括意圖,過濾器等?

在主機項目中。

庫可以發布這些組件,然后Android Studio主機項目可以根據需要刪除它們。

它們是在庫的清單中,還是在應用程序包本身的清單中,引用庫中的類(例如android:name =“com.foo.mylibrary.MyService”)?

后者。

在(使用Gradle for Android和Android Studio)中。 從理論上講,庫更容易發布組件,因此應用程序作者不必這樣做。 就個人而言,我並不是這方面的忠實粉絲,因為太多的開發人員最終會收集不必要的清單條目。

從ADT r20 Preview 3開始,現在可以合並清單。 因此,現在可以將常見配置放入庫清單中。 有關更多信息,請參閱https://stackoverflow.com/a/10400355/262789

Intellij IDEA的第13版對於清單合並支持是必需的( manifestmerger.enabled=true )。 此外,基於成績的構建系統似乎是 Android Studio支持所必需的。

任何引用的android元素,如活動,接收器,服務等,必須進入你的應用程序清單,否則操作系統將無法識別它們。 正如您所猜測的,庫清單文件幾乎是一個空實現

UPDATE

正如CommonsWare上面指出的那樣,Android構建工具現在將嘗試代表您合並各種清單。 為后代留下原始答案

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM