android

来源:互联网 发布:远程服务器连接软件 编辑:程序博客网 时间:2024/05/16 08:59

我们公司是外包的公司,也是平台性质的公司,所以需要一个软件,分成不同的包来打,我就研究了下,下面是我的代码

主要在AndroidManifest.xml和build.gradle

<application    android:name=".Myapplication"    android:allowBackup="true"    android:hardwareAccelerated="true"    android:icon="${app_icon}"    android:label="${app_name}"    android:supportsRtl="true"    android:theme="@style/AppTheme">    <meta-data        android:name="app_icon"        android:value="${app_icon}" />    <meta-data        android:name="UMENG_CHANNEL"        android:value="${UMENG_CHANNEL}" />    <meta-data        android:name="app_name"        android:value="${app_name}" />    <meta-data        android:name="packages"        android:value="${package}" />       <!-- Required  . Enable it you can get statistics data with channel -->    <meta-data        android:name="JPUSH_APPKEY"        android:value="${JPUSH_APPKEY}" /> <!--  </>值来自开发者平台取得的AppKey-->

PS:JPUSH_APPKEY:是极光的key

下面是我的build.gradle文件

android {    compileSdkVersion 24    buildToolsVersion '25.0.0'    useLibrary 'org.apache.http.legacy'    defaultConfig {      //  applicationId "com.unicornhcht.hcht.unicornhcht.xql"        minSdkVersion 15        targetSdkVersion 24        versionCode 16        versionName "1.1.9"        multiDexEnabled true;           }    productFlavors {        xql {            // 每个环境包名不同            applicationId  "你的包名1"            manifestPlaceholders = [                    app_name:"你的APP名称1",                    package: applicationId,                    JPUSH_PKGNAME: applicationId,                    JPUSH_APPKEY : "极光key1", //JPush上注册的包名对应的appkey.                    JPUSH_CHANNEL: "自定义渠道名称", //用户渠道统计的渠道名称                    UMENG_CHANNEL:"xql",                    app_icon:"@drawable/icon"            ]        }        qlgf {            applicationId  "你的包名2"            manifestPlaceholders = [                    app_name:"你的APP名称2",                    package: applicationId,                    JPUSH_PKGNAME: applicationId,                    JPUSH_APPKEY : "极光key2", //JPush上注册的包名对应的appkey.                    JPUSH_CHANNEL: "自定义渠道名称", //用户渠道统计的渠道名称                    UMENG_CHANNEL:"qlgf",                    app_icon:"@drawable/icon"            ]        }        qlsm {            applicationId  "你的包名3"            manifestPlaceholders = [                    app_name:"你的appn名称3",                    package: applicationId,                    JPUSH_PKGNAME: applicationId,                    JPUSH_APPKEY : "极光key3", //JPush上注册的包名对应的appkey.                    JPUSH_CHANNEL: "自定义渠道名称",//用户渠道统计的渠道名称                    UMENG_CHANNEL:"qlsm",                    app_icon:"@drawable/icon"            ]        }        xgc {            applicationId "你的包名4"            manifestPlaceholders = [                    app_name:"你的APP名称4",                    package: applicationId,                    JPUSH_PKGNAME: applicationId,                    JPUSH_APPKEY : "极光key4", //JPush上注册的包名对应的appkey.                    JPUSH_CHANNEL: "自定义渠道名称",                    UMENG_CHANNEL:"xgc",//用户渠道统计的渠道名称                    app_icon:"@drawable/icongc"            ]        }        gc {            applicationId "你的包名5"            manifestPlaceholders = [                    app_name:"你的APP名称5",                    package: applicationId,                    JPUSH_PKGNAME: applicationId,                    JPUSH_APPKEY : "极光key5", //JPush上注册的包名对应的appkey.                    JPUSH_CHANNEL: "自定义渠道名称",                    UMENG_CHANNEL:"gc",//用户渠道统计的渠道名称                    app_icon:"@drawable/icongc"            ]        }    }    buildTypes {        release {            minifyEnabled false            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'        }    }    lintOptions {        checkReleaseBuilds false        abortOnError false    }    dexOptions {        javaMaxHeapSize "4g"    }}dependencies {  }

代码就这么多,如果你想只打一个包,你直接注销掉你productFlavors 下面配置的其他渠道就可以了,不要那个就注销那个



然后在运行,打包然后就是写key,记得选择包




我是5个包全部都要打,所以最后就是




PS:如果代码里面,有需要分一些平台的功能或者显示的文字,你只需要更加包名来判断就可以了


//获取包名public static String getAppInfopkName(Context context) {    try {        String pkName = context.getPackageName();        String packageName = context.getPackageManager().getPackageInfo(                pkName, 0).packageName;        int versionCode = context.getPackageManager()                .getPackageInfo(pkName, 0).versionCode;        return packageName;    } catch (Exception e) {        return null;    }}

i
if (getAppInfopkName(MainActivity.this).equals("你的包名1")) {   //这个包要干嘛} else if (getAppInfopkName(MainActivity.this).equals("你的包名2")) {    
//这个包要干嘛
} else if (getAppInfopkName(MainActivity.this).equals("你的包名3")) {
//这个包要干嘛
} else if (getAppInfopkName(MainActivity.this).equals("你的包名4")) {
//这个包要干嘛
} else if (getAppInfopkName(MainActivity.this).equals("你的包名5")) {
//这个包要干嘛
}

ps:如果有什么不明白的,可以来问我 
技术交流群:552123831

原创粉丝点击