最近给一个library升级Gradle到7.5,agp到7.4.1,导致了编译题中的报错,参照 stackoverflow 的说法,在library里写定manifestPlaceholders后,再App工程里还可以覆盖。
然而实际测试结果是:在打出来的aar里已经不包含manifestPlaceholder了,所以APP工程里并不能覆盖。
经过2天的不懈努力,终于想到一个有趣的解决方案,如下:
1、在项目根目录下新建 manifestPlaceholder_config.gradle ,内容如下:
allprojects {
afterEvaluate {
if (getPlugins().hasPlugin('android') ||
getPlugins().hasPlugin('android-library')) {
android {
defaultConfig {
// 原样替换,不这样做的话,打包通不过
manifestPlaceholders = [
JPUSH_PKGNAME : '${JPUSH_PKGNAME}',
JPUSH_APPKEY : '${JPUSH_APPKEY}',
JPUSH_CHANNEL : '${JPUSH_CHANNEL}',
GETUI_APP_ID : '${GETUI_APP_ID}',
PACKAGE_NAME : '${PACKAGE_NAME}',
PUSH_PROCESS : '${PUSH_PROCESS}',
MI_PUSH_APPID : '${MI_PUSH_APPID}',
MI_PUSH_APPKEY : '${MI_PUSH_APPKEY}',
OPPO_PUSH_APPKEY: '${OPPO_PUSH_APPKEY}',
OPPO_PUSH_SECRET: '${OPPO_PUSH_SECRET}',
VIVO_PUSH_APPID : '${VIVO_PUSH_APPID}',
VIVO_PUSH_APPKEY: '${VIVO_PUSH_APPKEY}',
HONOR_PUSH_APPID: '${HONOR_PUSH_APPID}',
]
}
}
}
}
}
2、然后在跟目录的build.gradle中增加:
apply from: 'manifestPlaceholder_config.gradle'
主打就是一个:替换了,但是又完全没替换。