and*_*per 23 android android-manifest android-studio manifest-merging
在过去,当Eclipse和ADT是Android开发的官方工具时,您可以在应用程序项目的" project.properties "中使用" manifestmerger.enabled = true " ,然后让它自动合并所有库的清单(我在这里发布了它).
这有时候很有效.它有很多奇怪的问题,我总是倾向于避免使用它,并手动将所需内容放入主清单文件中.
在2014年的某个地方,谷歌宣布新的Android-Studio(我认为0.1)和Gradle将允许您精确选择如何合并库的组件.
但是,新指令(链接在这里)非常复杂,我真的(真的)试图了解如何使用它们,也没有找到如何使用它们的示例.
这不是我什么都不懂,但我不确定我是否理解得很好.
从好的方面来说,我发现合并是完全自动完成的,所以如果你在库的清单上有一个BroadcastReceiver(当然还有一个类),它将被添加到使用它的app的项目中.
我不能简单地问一切都要解释.我认为问这些问题就足够了:
如何选择要自动合并的哪些应用程序组件(权限,活动......)?
如何指定覆盖应用程序组件(库的)属性(在应用程序的项目上)?例如活动的主题?
有没有办法完全禁用清单文件的自动合并?
存储库中的依赖项清单会发生什么?他们合并了吗?
是否有关于这个新功能(对我而言是新的)功能的教程/样本/视频?
使用自动合并时有什么我应该注意的事项吗?
我希望这些问题具有足够的代表性,足够的信息,但对于那些知道的人来说却不难回答.
Eug*_*nec 39
您始终可以在应用清单中明确禁用权限和功能,并覆盖任何库值.我发现你可以禁用库中的元素.
例
请考虑以上链接中的以下代码:
<activity-alias
android:name=”foo.bar.alias”>
<meta-data
android:name=”zoo”
tools:node=”remove”/>
</activity-alias>
Run Code Online (Sandbox Code Playgroud)
通过在清单中包含此代码,可确保合并找到<activity-alias>具有android:name="foo.bar.alias"属性的任何元素,并<meta-data>在具有该android:name="zoo"属性时删除该元素.它只删除"zoo"元数据.不是活动别名.如果在主清单中指定它,它将对目前已合并的任何内容(库中的元素)有效.
例#2
既然你要求一个活动的例子,这就是我提出的:
<activity android:name="com.example.ui.MyActivity" tools:node="remove"/>
Run Code Online (Sandbox Code Playgroud)
此行将使合并删除android:name="com.example.ui.MyActivity"具有已合并到目前为止的属性的所有活动.因此,如果您在主清单中指定它,它将有效地删除com.example.ui.MyActivity可能已从库中合并的任何条目.
其中值合并的顺序描述了这里的部分清单文件排序.基本上它是这样的:库,然后主要清单,然后味道和构建类型显示,如果你使用它们.如何覆盖库中的属性?
什么是构建类型?
默认为"debug"和"release".您可以定义自己的设置并覆盖设置,例如signed或proguard.出于您的目的,您可以说它等同于运行配置.
它的工作原理如下:您将默认值和共享值放在main清单中.然后在flavor清单中覆盖您需要的值.谷歌"gradle flavors"获取更多信息.
在Android Gradle Build中禁用Manifest Merger
android.applicationVariants.all { variant ->
variant.processResources.manifestFile = file('src/main/AndroidManifest.xml')
variant.processManifest.enabled=false
}
Run Code Online (Sandbox Code Playgroud)
你把这个文件放在哪个文件中?
在模块的末尾(不是根项目)build.gradle.
是的,他们是(他们是图书馆).
有没有办法阻止合并某些图书馆清单?
不是我知道的,抱歉.
取决于你想要实现的目标.到目前为止,它始终对我开箱即用.
我不知道任何视频.
如果您对额外权限等有疑问,可以检查生成的清单.它位于project/module/build/intermediates/manifests/full/[flavor]/build-type/AndroidManifest.xml.
酱:http://tools.android.com/tech-docs/new-build-system/user-guide/manifest-merger
| 归档时间: |
|
| 查看次数: |
22021 次 |
| 最近记录: |