Android库清单与应用程序清单
我在这里读过类似的问题,但是在一些事情上我还不清楚。 使用图书馆项目意味着我的整个项目将有两个清单 – 一个用于图书馆,另一个用于“主”应用程序项目 – 我不清楚在哪些方面或如果有一些冗余。
我正在开发一个具有“精简版”和“付费”版本的应用程序部件,因此几乎所有的代码都在一个库项目中。 作为一个小部件,图书馆将至less有一个接收器,一个服务,一个configuration活动,以及一些其他的活动。 那么应该在哪里声明这些组件的完整声明(包括意图,filter等)呢? 他们是否进入图书馆清单,或在申请包本身的清单中,引用图书馆中的类(例如android:name =“com.foo.mylibrary.MyService”)?
我所看到的一些例子似乎是在两个清单中都宣布它们,但是我怀疑把它们放在一个或另一个中是没有用的。
使用图书馆项目意味着我的整个项目将有两个清单 – 一个用于图书馆,另一个用于“主”应用程序项目 – 我不清楚在哪些方面或如果有一些冗余。
图书馆项目清单目前没有使用。
Gradle for Android和Android Studio支持库项目和AAR发布清单。 这可以包括诸如活动声明,所需的权限或function,或支持的最低Android SDK级别。
图书馆清单如何与应用程序自己的清单合并的规则(特别是当您考虑构buildtypes和产品风味时) 有点复杂 。
那么应该在哪里声明这些组件的完整声明(包括意图,filter等)呢?
在主机项目中。
该库可以发布这些组件,然后Android Studio主机项目可以根据需要删除它们。
他们是否进入图书馆的清单,或者在应用程序包本身的清单中,引用图书馆中的类(例如android:name =“com.foo.mylibrary.MyService”)?
后者。
在任何一个(与Android和Android Studio的Gradle)。 从理论上讲,图书馆更容易发布组件,所以应用程序作者不需要。 就我个人而言,我不是一个很大的粉丝,因为太多的开发人员会发送不必要的清单条目。
从ADT r20预览版3开始,现在可以合并清单。 所以常见的configuration现在可以放入库清单。 有关更多信息,请参阅https://stackoverflow.com/a/10400355/262789 。
Intellij IDEA的版本13对于清单合并支持( manifestmerger.enabled=true
)是必需的。 此外,基于等级的构build系统似乎是 Android Studio支持所必需的。
任何引用的android元素,比如活动,接收者,服务等,都必须进入你的应用程序清单,否则它们将不能被操作系统识别。 正如你所猜测的,库清单文件几乎是一个空的实现
UPDATE
正如CommonsWare上面指出的那样,Android构build工具现在将尝试以您的名义合并各种清单。 留下后人的原始答案
- Android兼容性包不包含Activity.getFragmentManager()
- 如何解决:“HAX不工作,仿真器在仿真模式下运行”
- Android – 开机启动服务
- 如何在Android上显示可用的通知声音列表
- 活动生命周期 – onCreate调用每个redirect
- 无法添加窗口 – 令牌android.os.BinderProxy无效; 你的活动正在运行?
- RelativeLayout正在全屏显示wrap_content
- 在PreferenceActivity中使用什么而不是“addPreferencesFromResource”?
- 在Android中,在顶部ListView项目(和最后一个)之上添加保证金