美文网首页
Android 同时打测试包,生产包

Android 同时打测试包,生产包

作者: 神经病人思路广 | 来源:发表于2019-03-13 14:38 被阅读0次

    都是抄别人的,所以屁话不多说直接上代码:

    android {
        compileSdkVersion 28
        flavorDimensions 'api'
        defaultConfig {
            minSdkVersion 21
            targetSdkVersion 28
            versionCode 14
            versionName "1.0.12"
            multiDexEnabled true
            //X5兼容64位手机
            ndk {
                abiFilters "armeabi-v7a"
            }
            manifestPlaceholders = [
                    JPUSH_PKGNAME: "你的包名",
                    JPUSH_APPKEY : "极光key", //JPush上注册的包名对应的appkey.
                    JPUSH_CHANNEL: "developer-default" //暂时填写默认值即可.
            ]
        }
    
        signingConfigs {
            release {
                keyAlias 'xxx'
                keyPassword '123456'
                storeFile file('E:/android_workspace/si.jks')
                storePassword '123456'
            }
        }
        signingConfigs {
            debug {
                storeFile file("E:/si.jks")
                storePassword "123456"
                keyAlias "xxx"
                keyPassword "123456"
            }
        }
        buildTypes {
            release {
                signingConfig signingConfigs.release
                minifyEnabled true
                //移除无用的资源文件
                shrinkResources true
                //压缩对齐生成的apk包
                zipAlignEnabled true
                //启用multidex的支持
                multiDexEnabled true
                manifestPlaceholders = [qqappid: "1111111111"]
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    
            }
            debug {
                minifyEnabled false
                //混淆文件配置
                signingConfig signingConfigs.debug
                manifestPlaceholders = [qqappid: "1111111111"]
                proguardFiles 'proguard-rules.pro'
            }
    
        }
        sourceSets {
            main {
                jniLibs.srcDirs = ['libs']
                assets.srcDirs = ['src/main/assets', 'src/main/assets/']
            }
        }
        androidExtensions {
            experimental = true
        }
        productFlavors {
            app {
                applicationId "线上包名"
                //resValue,相当于在string.xml插入了一条数据,必须这个文件中没有相
                //同的名字,比如你的baseUrl在你的string.xml中必须没有,数据类型支持 
                //string,bool,其他的没用到不知道
                resValue("string", "baseUrl", "线上baseurl")
                resValue("string", "app_name", "线上应用名")
                resValue("bool", "is_check_update", "true")
                //如果用到了provider,请在这里配置
                resValue("string", "file_provider", "线上包名.provider")
                //有时候老是安装冲突,请使用adb安装,他会提示你哪里报错,然后用        
                //studio打开你的apk的清单文件,查看报错处,把他提出来,写在你自己
                //的清单文件中,然后用resValue动态修改包名,比如我这个极光的
                //DataProvider,让我查了半天才查到
                resValue("string", "jpush_file_provider", "线上包名.DataProvider")
                //这里只是告诉我,也可以这样动态修改清单文件中的值,这些代码放这里
                //没什么用
                manifestPlaceholders = [
                        JPUSH_APPKEY : "极光key", //JPush上注册的包名对应的appkey.
                        JPUSH_CHANNEL: "developer-default", //暂时填写默认值即可.
                ]
    
            }
            app_release_test {
                applicationId "线上测试包名"
                resValue("string", "baseUrl", "线上测试baseurl")
                resValue("bool", "is_check_update", "false")
                resValue("string", "app_name", "线上测试应用名")
                resValue("string", "file_provider", "线上测试包名.provider")
                resValue("string", "jpush_file_provider", "线上测试包名.DataProvider")
                manifestPlaceholders = [
                        JPUSH_APPKEY : "极光key", //JPush上注册的包名对应的appkey.
                        JPUSH_CHANNEL: "developer-default", //暂时填写默认值即可.
                ]
    
            }
            app_test {
                applicationId "测试包名"
                resValue("string", "baseUrl", "测试baseurl")
                resValue("string", "app_name", "测试应用名")
                resValue("bool", "is_check_update", "false")
                resValue("string", "file_provider", "线上测试包名.provider")
                resValue("string", "jpush_file_provider", "线上测试包名.DataProvider")
                manifestPlaceholders = [
                        JPUSH_APPKEY  : "极光key", //JPush上注册的包名对应的appkey.
                        JPUSH_CHANNEL : "developer-default", //暂时填写默认值即可.
                ]
    
            }
        }
        lintOptions {
            abortOnError false
        }
        productFlavors.all { flavor ->
            flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
        }
        //多渠道打包配置
        applicationVariants.all { variant ->
            variant.outputs.all {
                outputFileName = "应用名_v${defaultConfig.versionName}_${variant.productFlavors[0].name}.apk"
            }
        }
    }
    

    清单文件中具体设置如下:

            <!--自己文件中的provider配置-->
          <provider
                android:name="androidx.core.content.FileProvider"
                android:authorities="@string/file_provider"
                android:exported="false"
                android:grantUriPermissions="true">
                <meta-data
                    android:name="android.support.FILE_PROVIDER_PATHS"
                    android:resource="@xml/file_paths" />
            </provider>
            <!--安装冲突找到的provider,将第三方包中的provider覆盖-->
            <provider
                android:name="cn.jpush.android.service.DataProvider"
                android:exported="true"
                android:authorities="@string/jpush_file_provider"
                tools:replace="android:authorities"/>
    

    然后完事,其他的比如你要动态修改图标,资源文件,签名什么的,可以从上面的代码中悟出来.

    相关文章

      网友评论

          本文标题:Android 同时打测试包,生产包

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