Android多渠道打包(Assets处理)

最近在项目中遇到apk定制化打包需求,所以就研究多渠道打包。

build.gradle 中部分配置代码如下


defaultConfig{

    applicationId "com.hz.epollbook"

    minSdkVersion 16

    targetSdkVersion 27

    versionCode 1

    versionName "1.0.1.58"

    // 设置MultiDex可用

    multiDexEnabled true

    //必须要保证所有的flavor 都属于同一个维度 否则会报错All flavors must now belong to a named flavor dimension

    flavorDimensions "default"

}

productFlavors{

    flavors_local{}

    flavors_qld{}

    flavors_qld_demo{}

    flavors_qld_test{}

}

//打包输出配置

android.applicationVariants.all{ variant ->

variant.outputs.all{

        outputFileName= "${variant.productFlavors[0].name}_v${variant.versionName}.apk"

    }

}

buildTypes{

    release{

        buildConfigField"Boolean","DEBUGGER","false"

        minifyEnabled true

        proguardFiles getDefaultProguardFile('proguard-android.txt'),'proguard-rules.pro'

        signingConfig signingConfigs.votingsystem

    }

    debug{

        buildConfigField"Boolean","DEBUGGER","false"

        minifyEnabled false

        proguardFiles getDefaultProguardFile('proguard-android.txt'),'proguard-rules.pro'

        signingConfig signingConfigs.votingsystem

    }

}

sourceSets{

    main{

        assets.srcDirs = ['src/main/assets']

    }

    flavors_local{

        assets.srcDirs = ['src/local/assets']

    }

    flavors_qld{

        assets.srcDirs = ['src/qld/assets']

    }

    flavors_qld_demo{

        assets.srcDirs = ['src/qld_demo/assets']

    }

    flavors_qld_test{

        assets.srcDirs = ['src/qld_test/assets']

    }

}

项目结构目录中

image

ps:不同flavors中的assets 存放不同的文件,相同的可以存放在main中。打包时会将所有打到一起。

多渠道打包命令

打全部包: gradle assemble

打全部 Debug 包: gradle assembleDebug ,可以简写为 gradle aD ,前提是没有相同缩写的参数

打全部 Release 包: gradle assembleRelease,可以简写为 gradle aR

打指定 flavor 包: gradle assemble(flavor)(Debug|Release)

打包完成后安装(设备上没有安装该 apk ,否则会失败,而且只能指定 flavor ,不然也会失败): gradle install(flavor)(Debug|Release)

打包前先 clean 一下(在测试的时候很必要,如果不 clean 的话,可能会导致某些小修改不会及时打入新包): gradle clean assembleDebug

你可能感兴趣的:(Android多渠道打包(Assets处理))