1月 132020
	举个不太恰当的例子,比如我们需要生成针对友盟统计的渠道为官网、应用宝、百度应用市场三个渠道各自对应的开发环境和测试环境的应用包。
那么,我们首先在AndroidManifest.xml中定义相关的点位符
友盟统计渠道点位符:
| 
					 1  | 
						<meta-data android:value="${UMENG_CHANNEL_VALUE}" android:name="UMENG_CHANNEL"/>  | 
					
开发环境占位符:
| 
					 1  | 
						<meta-data android:value="${enviornment_VALUE}" android:name="app_enviornment"/>  | 
					
在项目的build.gradle的android节点下定义flavorDimensions,如下:
| 
					 1 2 3 4  | 
						android {     //...省略其他代码     flavorDimensions "channel", "enviornment" }  | 
					
然后我们定义productFlavors
| 
					 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36  | 
						android {     //...省略其他代码     flavorDimensions "channel", "enviornment"     productFlavors {         官网 {             dimension = 'channel'             manifestPlaceholders = [                     UMENG_CHANNEL_VALUE: "guanwang"             ]         }         应用宝 {             dimension = 'channel'             manifestPlaceholders = [                     UMENG_CHANNEL_VALUE: "yingyongbao"             ]         }         百度应用市场 {             dimension 'channel'             manifestPlaceholders = [                     UMENG_CHANNEL_VALUE: "baidu"             ]         }         开发环境 {             dimension 'enviornment'             manifestPlaceholders = [                     enviornment_VALUE: "dev"             ]         }         测试环境 {             dimension 'enviornment'             manifestPlaceholders = [                     enviornment_VALUE: "test"             ]         }     } }  | 
					
获取当前apk占位符的值
我们以app_enviornment这个占位符为例,获取这个点位符的值后,确定连接开发服务器还是测试服务器
新建项目自定义的Application类(如果不明白,请百度一下这步如何操作),本例代码如下:
| 
					 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16  | 
						public class MyApplication extends Application {     public static String AppEnviornment = "";     @Override     public void onCreate() {         super.onCreate();         ApplicationInfo appInfo = null;         try {             appInfo = getApplicationContext().getPackageManager().getApplicationInfo(getPackageName(), PackageManager.GET_META_DATA);             AppEnviornment = appInfo.metaData.getString("app_enviornment");         } catch (PackageManager.NameNotFoundException e) {             e.printStackTrace();         }     } }  | 
					
如上,获取到了占位符app_enviornment的值,根据AppEnviornment就可以做其他处理了
这个操作也不是必须放在自定义的Application类中,放在Activity中也可以
自动多版本apk的打包
在项目的build.gradle文件的android节点中增加如下代码:
| 
					 1 2 3 4 5 6 7  | 
						    applicationVariants.all { variant ->         variant.outputs.all {             outputFileName = new File(variant.name, "多渠道测试_" + buildType.name +                     "_${variant.versionName}(${variant.versionCode})" +                     "_${variant.productFlavors[0].name}_${variant.productFlavors[1].name}.apk");         }     }  | 
					
- ${variant.versionName} – 版本名称
 - ${variant.versionCode} – 版本编码
 - ${variant.productFlavors[0].name} – 第一维度的名称(官网、应用宝等)
 - ${variant.productFlavors[1].name}- 第二维度的名称(开发环境、测试环境等)
 
生成的apk截图如下:
Android Studio中如何指定要调试的版本
在studio左下角,找到Build Variants工具栏,在Active Build Variant中选择要调试的那个版本


                
微信扫一扫,打赏作者吧~
Sorry, the comment form is closed at this time.