Android studioAndroid

Android Studio多个编译环境配置,多渠道打包配置

2017-01-14  本文已影响1179人  皇家豆瓣酱

在项目开发的时候一般需要测试环境的安装包和正式环境的安装包。需要配置测试机地址和正式机地址。假如有不同的API,就会有更多的url地址需要配置。挨个手动打包就会非常麻烦,那就需要用到多渠道打包了。

就我自己了解在Android Studio之前可以通过Ant实现多渠道打包,过程要稍微复杂一点,但是可以实现的功能要更多一点。Android Studio的gradle多渠道打包更加便捷。下面就讲解Android Studio的多渠道打包

谷歌官方文档的配置:https://developer.android.com/studio/build/build-variants.html

1.在build.grade中构建不同的版本:

android{
    buildTypes { 
        release { 
            minifyEnabled true 
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }

        debug { 
            applicationIdSuffix ".debug" 
        } 

        app1 {  
            applicationIdSuffix ".app1" 
        }
     }
}

applicationIdSuffix:字段表示,在不改变你默认的程序ID(包名)的情况下,为其添加后缀。比如你的包名是com.cn.app
,但你想区分测试包和正式包的情况,这个时候将applicationIdSuffix设置为.debug,那么你的应用程序对应的包名就变成了com.cn.app.debug。

2.设置多渠道打包 productFlavors: 同样在build.gradle文件中添加

productFlavors {
        app1{            
                //这里可以配置不同的包名            
                applicationId="com.cn"           
                applicationIdSuffix ".app1"
                //这里是在 applicationId 中添加了一个后缀            
                manifestPlaceholders = [app_icon          : "@mipmap/login_logo",                                   
                                                        app_name          : "app1"]       
        }        
        app2{            
                applicationId="com.ca"            
                applicationIdSuffix ".app2"
                //这里是在 applicationId 中添加了一个后缀              
                manifestPlaceholders = [app_icon          : "@mipmap/login_logo",                                    
                                                        app_name          : "app2"]        
        }    
}

3:在src下面(与mian文件同目录)创建对应版本的文件夹:

1.png

需要更换Logo和应用名称在下面文件中添加

2.png

更换应用名称: 在value文件夹下的 appname.xml中设置

<resources>    
        <string name="app_name">app1</string>
</resources>

至此就可以一次性打出两个安装包,应用的名称logo与Id都已经更换。
4.如果需要更换应用的请求地址,在每个版本的文件夹现在新建一个java类,比如图中我在java目录下新建Constant.java

public class Contant {    
        public static String url = "www.baidu.com";
}

在其他代码中调用这个url就可以实现不同的服务器地址了。

Android Studio的多渠道打包还可以实现更多功能,后续会继续添加。不过现在的需求都已经满足了。

5.更换输出的文件名称。

android{
    // 输出文件配置
        applicationVariants.all { variant ->
            variant.outputs.each { output ->
                def outputFile = output.outputFile
                if (outputFile != null && outputFile.name.endsWith('.apk')) {
                        def dirName = outputFile.parent // 输出文件夹所在的位置
            
                        // 文件名修改
                        def fileName = "app-${output.processResources.variantName}-${defaultConfig.versionName}-${variant.flavorName}.apk"
                       // 比如不想这么麻烦,直接在后面加上版本号也行:
                       // def fileName = outputFile.name.replace(".apk", "-${defaultConfig.versionName}.apk")
                output.outputFile = new File(dirName, fileName)
            }
        }
    }
}
上一篇 下一篇

猜你喜欢

热点阅读