Cha*_*ere 6 android gradle android-gradle-plugin
我的Android库项目由四个模块组成:
以下是IntelliJ的此设置的屏幕截图:

我的模块使用非常特定的Android SDK级别设置:
compileSdkVersion 19minSdkVersion 14targetSdkVersion 19compileSdkVersion 19minSdkVersion 14targetSdkVersion 19compileSdkVersion 17minSdkVersion 14targetSdkVersion 17compileSdkVersion 18minSdkVersion 18targetSdkVersion 18随着Android的更新版本的发布,基础和工厂模块可以跟随它们compileSdkVersion和targetSdkVersion级别.但是,v14和v18都绝对不能效仿.
我的模块以非常具体的方式相互依赖:
所以当我去构建我的项目时,我收到了这个错误:
Error:Gradle: Execution failed for task ':v14:processReleaseManifest'.
> Manifest merging failed. See console for more info.
Run Code Online (Sandbox Code Playgroud)
在使用终端进行构建时./gradlew build --stacktrace,我会获得更多信息:
:v14:processReleaseManifest
[/blahblah/project/v14/build/exploded-aar/blahblah/base/unspecified/AndroidManifest.xml:2] Main manifest has <uses-sdk android:targetSdkVersion='17'> but library uses targetSdkVersion='19'
:v14:processReleaseManifest FAILED
Run Code Online (Sandbox Code Playgroud)
这是我的v14 AndroidManifest.xml文件:
<?xml version="1.0" encoding="utf-8"?>
<manifest package="com.example.v14">
<application />
</manifest>
Run Code Online (Sandbox Code Playgroud)
(我的基本AndroidManifest.xml文件几乎完全相同)
<?xml version="1.0" encoding="utf-8"?>
<manifest package="com.example">
<application />
</manifest>
Run Code Online (Sandbox Code Playgroud)
这个错误对我来说没什么意义.首先,我没有在我的四个不同AndroidManifest.xml文件中指定版本级别(而是让我通过我的四个不同build.gradle文件继承这些值).
其次,我没有"主要表现".基本模块可能是我最接近的那个,所以v14模块究竟如何最终成为"主要清单"我觉得很混乱.
最后,如果这个项目设置不可能,那我很震惊.在Eclipse风格的项目中设置这个模块配置是非常简单的.这就是我几个月来一直在建立图书馆的方式.
顺便说一句,我的最终目标是将所有内容编译成单个.jar文件,这是我当前的Eclipse风格项目可以做到的.只是我试图完全迁移到gradle而不是被遗忘在沉没的船上......
有任何想法吗?如有必要,我可以发布我的各种gradle文件(build.gradle,settings.gradle...).只是试图避免完全重载这篇文章.
在本文开头添加了我的模块配置的屏幕截图.
如果您根据Gradle 插件用户指南使用风味:
defaultConfig为所有风格提供基本配置,并且每种风格可以覆盖任何值。
例如,您可以在 build.gradle 文件中进行以下设置:
android {
...
defaultConfig {
...
compileSdkVersion 19
minSdkVersion 14
targetSdkVersion 19
}
productFlavors {
base {
compileSdkVersion 19
minSdkVersion 14
targetSdkVersion 19
}
factory {
compileSdkVersion 19
minSdkVersion 14
targetSdkVersion 19
}
v14 {
compileSdkVersion 17
minSdkVersion 14
targetSdkVersion 17
}
v18 {
compileSdkVersion 18
minSdkVersion 18
targetSdkVersion 18
}
}
}
Run Code Online (Sandbox Code Playgroud)
此外,您也不需要在清单中设置包名称。您可以按如下方式设置它们:
android {
...
productFlavors {
base {
packageName "com.example"
...
}
v14 {
packageName "com.example.v14"
...
}
...
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2822 次 |
| 最近记录: |