美文网首页
Android 多渠道打包

Android 多渠道打包

作者: CloudFlyKing | 来源:发表于2020-06-11 15:47 被阅读0次

最近在做一个学校缴费终端应用,给不同的学校使用。先前是通过切换代码分支来管理的,实在是繁琐和痛苦,仅仅是需要更改不同的常量、包名等,主体代码逻辑功能基本不变。所以了解了多渠道包的使用,在这里做个记录。

一、通过 productFlavors 配置不同的渠道

以下为完整的实际项目中使用的渠道配置

 flavorDimensions "jiaofei"
    //配置多版本的apk
    productFlavors {
        xiandianzi {
            dimension 'jiaofei'
            buildConfigField "String", "titleName", '\"大学一缴学费\"'
            buildConfigField "String", "schoolName", '\"大学一\"'
            buildConfigField "String", "serviceIp", '\"10.10.14.200\"'
            buildConfigField "int", "servicePort", '5577'
            applicationId "cn.boc.xian.daxueyi"
            manifestPlaceholders = [APP_NAME:"大学一缴学费"]
        }

        yixueyuan {
            dimension 'jiaofei'
            versionCode 5
            versionName "2.1.1"
            buildConfigField "String", "titleName", '\"大学二缴学费\"'
            buildConfigField "String", "schoolName", '\"大学二\"'
            buildConfigField "String", "serviceIp", '\"10.10.14.199\"'
            buildConfigField "int", "servicePort", '5577'
            applicationId "cn.boc.xian.daxueer"
            manifestPlaceholders  = [APP_NAME:"大学二缴学费"]
        }

        
    }

applicationVariants.all { variant ->
        variant.outputs.all {
            def apkName = "${productFlavors[0].name}-jiaofei-v${defaultConfig.versionName}-${variant.buildType.name}.apk"
            outputFileName = apkName
        }
    }

二、manifestPlaceholders的使用

渠道信息的配置

productFlavors {
        xiandianzi {
            manifestPlaceholders = [APP_NAME:"大学一缴学费"]
        }

        yixueyuan {
            manifestPlaceholders  = [APP_NAME:"大学二缴学费"]
        }

    }

对应调用


在配置文件中使用

三、buildConfigField 使用

  productFlavors {
        xiandianzi {
            dimension 'jiaofei'
            buildConfigField "String", "titleName", '\"大学一缴学费\"'
        }

        yixueyuan {
            dimension 'jiaofei'
            buildConfigField "String", "titleName", '\"大学二缴学费\"'
        } 
    }

编译生成的文件


编译生成的文件

对应代码里面调用


代码里面调用

四、替换资源文件

每个渠道的资源布局 主题样式,启动页图标、应用名称可能 不一样,我的做法如下:
在 main 的同级目录下创建以渠道名命名的文件夹,然后创建资源文件(路径要与 main 中的一致),然后打包的时候 gradle 就会自己替换或者合并资源。


渠道资源

gradle android下面添加资源配置

sourceSets {
        xiandianzi { res.srcDirs = ['src/xiandianzi/res', 'src/xiandianzi/res/'] }
        yixueyuan { res.srcDirs = ['src/yixueyuan/res', 'src/yixueyuan/res/'] }
        main {
            jniLibs.srcDirs = ['libs']
            res.srcDirs = ['src/main/res', 'src/main/res/']
        }
    }

五、打包和调试编译安装不同的渠道

选取不同的渠道,Gradle 会自动编译指定渠道


编译不同的渠道

相关文章

网友评论

      本文标题:Android 多渠道打包

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