解决 Gradle "manifest requires a p

作者: 十个雨点 | 来源:发表于2023-09-11 17:50 被阅读0次

    最近给一个library升级Gradle到7.5,agp到7.4.1,导致了编译题中的报错,参照 stackoverflow 的说法,在library里写定manifestPlaceholders后,再App工程里还可以覆盖。

    image.png

    然而实际测试结果是:在打出来的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'
    

    主打就是一个:替换了,但是又完全没替换。

    相关文章

      网友评论

        本文标题:解决 Gradle "manifest requires a p

        本文链接:https://www.haomeiwen.com/subject/orzevdtx.html