首先,分渠道打包很简单。
在项目的build.gradle里设置
android {...productFlavors { home_site { dimension "money" manifestPlaceholders = [UMENG_CHANNEL_VALUE: "home_site"] } main_store { dimension "money" manifestPlaceholders = [UMENG_CHANNEL_VALUE: "main_store"] } other_store { dimension "money" manifestPlaceholders = [UMENG_CHANNEL_VALUE: "other_store"] } }}
其中的dimension 是维度,通过flavorDimensions 设置。
defaultConfig { ... flavorDimensions "money" }
设置维度主要是为了管理方便。
这个项目里总共设置了三个渠道
其中UMENG_CHANNEL_VALUE 可以随便命名,不过项目里的友盟统计会需要用到渠道名,所以这里就用UMENG的命名方法了。
接下来就是获取当前的渠道名,这样就可以根据不同的渠道包设置不同的逻辑,比如设置某一模块在某些平台发布的版本隐藏,而再另一些平台的版本上显示。
首先,需要在AndroidManifest.xml 文件定义信息变量。
然后就可以在Application或Activity中获取了。
ApplicationInfo applicationInfo = null; try { applicationInfo = getPackageManager().getApplicationInfo(getPackageName(), PackageManager.GET_META_DATA); if (applicationInfo == null) { return; } String value = applicationInfo.metaData.getString("CHANNEL_NAME"); CommonConfig.CHANNEL_NAME=value; //按渠道设置差异化代码 System.out.println("CHANNEL_NAME:"+value); switch (value){ case "home_site": //逻辑1 break; case "main_store": //逻辑2 break; case "other_store": //逻辑3 break; } } catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); }