美文网首页Hello WorldAndroid知识Android技术知识
Android Studio 多渠道打包和打包时设置包名

Android Studio 多渠道打包和打包时设置包名

作者: mm_cuckoo | 来源:发表于2016-11-28 15:09 被阅读4177次
    使用 Android Studio 进行多渠道打包超级简单,废话不多说,两步:

    两种打包方式:


    方式一:

    1、在清单文件 AndroidManifest.xml 中添加如下带

    在 AndroidManifest.xml 文件 中 application 内 添加:

            <meta-data
                android:name="UMENG_CHANNEL"
                android:value="${UMENG_CHANNEL_VALUE}" />
    

    这个是在使用友盟统计时的一个代码示例,meta-data 中的 name 是可以更改的,根据实际需求如自己修。

    2、在 build.gradle 进行配置

    在 build.gradle 文件中 android 下添加:

    android {
    
        ........
        
        
        productFlavors {
    
            wandoujia {
                manifestPlaceholders = [UMENG_CHANNEL_VALUE: "wandoujia"]
            }
    
            baidu {
                manifestPlaceholders = [UMENG_CHANNEL_VALUE: "baidu"]
            }
    
            c360 {
                manifestPlaceholders = [UMENG_CHANNEL_VALUE: "c360"]
            }
        }
    }
    
    

    只要进行这两步配置,就可以实现多渠道打包,非常简单。 上面只配置了三个,如果想配置更多仿照这添加相应渠道的就可以了

    方式二:

    1、在清单文件 AndroidManifest.xml 中添加如下带

    在 AndroidManifest.xml 文件 中 application 内 添加:

            <meta-data
                android:name="UMENG_CHANNEL"
                android:value="${UMENG_CHANNEL_VALUE}" />
    

    这个是在使用友盟统计时的一个代码示例,meta-data 中的 name 是可以更改的,根据实际需求如自己修。

    2、在 build.gradle 进行配置

    在 build.gradle 文件中 android 下添加:

    android {
    
        ........
        
        
        productFlavors {
    
            wandoujia {}
    
            baidu {}
    
            c360 {}
        }
        
            productFlavors.all {
            flavor -> flavor.manifestPlaceholders = [NAME_VALUE : name]
        }
    }
    
    

    这样配置也可以实现多渠道打包。

    打包时设置包名

    在 build.gradle 文件中 android 的 buildTypes 的 release 下添加:

    applicationVariants.all { variant ->
                    variant.outputs.each { output ->
                        def outputFile = output.outputFile
                        if (outputFile != null && outputFile.name.endsWith('.apk')) {
                            // 输出apk名称为boohee_v1.0_2015-01-15_wandoujia.apk
                            def fileName = "myApk_${defaultConfig.versionName}_${variant.productFlavors[0].name}.apk"
                            output.outputFile = new File(outputFile.parent, fileName)
                        }
                    }
                }
    

    代码不多,很简单,不解释,照着用就OK了。

    完整代码:

    android {
        compileSdkVersion 24
        buildToolsVersion "24.0.3"
        defaultConfig {
            applicationId "com.cfox.gradlemodel"
            minSdkVersion 15
            targetSdkVersion 24
            versionCode 1
            versionName "1.0"
            testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        }
        buildTypes {
            release {
                minifyEnabled false
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    
                applicationVariants.all { variant ->
                    variant.outputs.each { output ->
                        def outputFile = output.outputFile
                        if (outputFile != null && outputFile.name.endsWith('.apk')) {
                            // 输出apk名称为boohee_v1.0_2015-01-15_wandoujia.apk
                            def fileName = "myApk_${defaultConfig.versionName}_${variant.productFlavors[0].name}.apk"
                            output.outputFile = new File(outputFile.parent, fileName)
                        }
                    }
                }
            }
        }
    
        productFlavors {
            wandoujia {}
            baidu {}
            xiaomi {}
        }
    
        productFlavors.all {
            flavor -> flavor.manifestPlaceholders = [NAME_VALUE : name]
        }
    
    }
    
    dependencies {
        compile fileTree(dir: 'libs', include: ['*.jar'])
        androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
            exclude group: 'com.android.support', module: 'support-annotations'
        })
        compile 'com.android.support:appcompat-v7:24.2.1'
        testCompile 'junit:junit:4.12'
    }
    

    最后

    在打包时候选择相应的渠道就可以了。

    下面对配置文件简单说明一下:

    我们看一下 meta-dataandroid:value="${UMENG_CHANNEL_VALUE}" 其中 ${UMENG_CHANNEL_VALUE} 是通配符,和 build.gradle 文件中 manifestPlaceholders = [UMENG_CHANNEL_VALUE: "c360"] 中的 UMENG_CHANNEL_VALUE 相对应。

    如果以上内容收的不对请及时指出来,共同学习,共同进步。

    相关文章

      网友评论

      本文标题:Android Studio 多渠道打包和打包时设置包名

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