【发布时间】:2017-03-26 13:37:36
【问题描述】:
我们有多个项目,取决于许多 Android 库模块。 为避免应用清单中出现重复的 xml 标签,我们将相关的接收器、服务和活动放在各自的模块中。
直到今天,我们还在使用:
- Android Studio:2.2.1
- 分级:2.1.3
- buildToolsVersion:23.0.3
今天我们更新为:
- Android Studio:2.3
- gradle: 2.3.0
- buildToolsVersion: 25.0.0
在此更新之前,一切正常,并且清单已合并,我们遇到了冲突并修复了它们。在我们完成更新后,清单根本不会合并!!
--- 更新 1 ---
我们使用了 Merged Manifest 视图,发现它只是不包含合并中的清单,它从模块清单中合并的唯一事情是权限,例如,如果我添加一个新的对模块清单的权限只会合并它而不是其余元素!
我保证有很多东西要合并!
--- 更新 2 ---
似乎在应用程序标记之外的所有内容都合并到主清单中,而在应用程序标记中的所有内容都没有。
--- 更新 3 ---
不合并的模块:
分级:
apply plugin: 'com.android.library'
android {
compileSdkVersion 23
buildToolsVersion '25.0.0'
defaultConfig {
minSdkVersion 16
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
debug {
jniDebuggable true
}
}
}
dependencies {
compile project(path: ':android-infra')
compile 'com.google.android.gms:play-services-gcm:9.0.0'
compile project(path: ':engine-core-server')
compile project(path: ':engine-core-aneeda')
}
清单:
<manifest package="com.sensiya.voip.managers.gcm"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<uses-permission android:name="com.google.android.c2dm.permission.KAKI"/>
<application
tools:node="replace">
<service
android:enabled="true"
android:name="com.sensiya.voip.managers.gcm.GcmIntentService"/>
<receiver android:name="com.sensiya.voip.managers.gcm.GcmBroadcastReceiver"
android:permission="com.google.android.c2dm.permission.SEND">
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE"/>
<category android:name="com.iamplus.onenumber.device"/>
</intent-filter>
</receiver>
</application>
</manifest>
将合并的模块:
分级:
apply plugin: 'com.android.library'
android {
compileSdkVersion 23
buildToolsVersion '25.0.0'
defaultConfig {
minSdkVersion 16
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
debug {
jniDebuggable true
}
}
}
dependencies {
compile project(path: ':android-infra')
compile 'com.sensiya:sense-services-client:1.24.2@aar'
compile project(path: ':engine-core-server')
compile project(path: ':engine-core-aneeda')
}
清单:
<manifest package="com.iamplus.android.senseServices"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<application
tools:node="replace">
<service
android:name="com.iamplus.senseServices.ContextualEventService"
android:enabled="true"/>
<service
android:name="com.iamplus.senseServices.Serv"
android:enabled="true"/>
<service
android:name="com.iamplus.senseServices.Serv1"
android:enabled="true"/>
</application>
</manifest>
有什么建议吗?
【问题讨论】:
-
控制台没有登录?没有错误?
-
绝对没有...
-
你能分享你的应用gradle文件吗?
-
不是真的有一些依赖文件,我能提供什么具体的吗?
-
您是否尝试过 Gradle Clean 和 android studio '使缓存无效并重新启动'。如果之前存在冲突,则可能只是缓存问题
标签: android android-studio android-gradle-plugin android-manifest