zoukankan      html  css  js  c++  java
  • Android几种多渠道打包

    https://www.cnblogs.com/sunjiachen/p/11457630.html

    我这里采用的是android studio的方法

    第一,修改app的build.gradle


    apply plugin: 'com.android.application'

    android {
    compileSdkVersion 27
    buildToolsVersion "28.0.3"
    defaultConfig {
    applicationId "com.example.james.cookie"
    minSdkVersion 22
    targetSdkVersion 27
    versionCode 3
    versionName "2.1"
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
    release {
    minifyEnabled true
    proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
    }
    // 1 渠道名称
    productFlavors {
    baidu {}
    xiaomi {}
    qihu360 {}
    huawei {}
    }
    // 2 自动替换 AndroidManifest.xml 里面的metadata
    productFlavors.all {
    flavor -> flavor.manifestPlaceholders = [UMENG_CHANNEL: name]
    }
    // 3 设置输出APK名称
    applicationVariants.all { variant ->
    variant.outputs.each { output ->
    def outputFile = output.outputFile
    if (outputFile != null && outputFile.name.endsWith('.apk')) {
    def fileName = "driver_${variant.productFlavors[0].name}_v${defaultConfig.versionName}.apk"
    output.outputFile = new File(outputFile.parent, fileName)
    }
    }
    }

    }



    dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
    exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:27.+'
    compile 'com.android.support.constraint:constraint-layout:1.0.2'
    testCompile 'junit:junit:4.12'
    compile'com.mcxiaoke.volley:library:1.0.+'

    }

    第二,修改app的AndroidManifest.xml



    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.james.cookie">

    <!-- 允许应用程序联网,以便向我们的服务器端发送数据 -->
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE"/>

    <application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <meta-data
    android:name="UMENG_CHANNEL"
    android:value="${UMENG_CHANNEL}" />

    <activity android:name=".MainActivity">
    <intent-filter>
    <action android:name="android.intent.action.MAIN"/>

    <category android:name="android.intent.category.LAUNCHER"/>
    </intent-filter>
    </activity>
    <activity android:name=".OkActivity">
    </activity>
    </application>

    </manifest>

    第三,代码中获取meta 数据


    private String getChannel() {
    try {
    PackageManager pm = getPackageManager();
    ApplicationInfo appInfo = pm.getApplicationInfo(getPackageName(), PackageManager.GET_META_DATA);
    String channel = appInfo.metaData.getString("UMENG_CHANNEL"); // key为<meta-data>标签中的name
    if (!TextUtils.isEmpty(channel)) {
    return channel;
    }
    } catch (Exception e) {
    e.printStackTrace();
    }
    return null;
    }


  • 相关阅读:
    SharePoint 2013 配置基于表单的身份认证
    SharePoint 2013 场解决方案包含第三方程序集
    SharePoint 2010 站点附加数据升级到SP2013
    SharePoint 2013 在母版页中插入WebPart
    SharePoint 2013 搭建负载均衡(NLB)
    SharePoint 部署解决方案Feature ID冲突
    SharePoint 2013 配置基于AD的Form认证
    SharePoint Server 2016 Update
    SharePoint 2013 为用户组自定义EventReceiver
    SharePoint 2013 JavaScript API 记录
  • 原文地址:https://www.cnblogs.com/cute/p/13131574.html
Copyright © 2011-2022 走看看