之前有发表过一篇android studio 打包的文章http://my.oschina.net/aibenben/blog/350967。今天这个是介绍多渠道打包,继续以Demo4为例

第一就是配置:在项目的build.gradle里面配置 先上图,再上代码。

第二步,就是打包。(网上有介绍用命令打包,可是我这人太懒,发现了个小窍门,直接在android studio 里面进行。)上图(另外,后面我还是补上了gradle命令打包的介绍。大家可以看看http://my.oschina.net/aibenben/blog/370985)

如果没有keystore,先创建一个,默认为.jks文件,一样的。

大家这里创建完后,可以再回头看看前面配置的build.gradle里面signingConfigs的内容。是不是就懂了(其实我这里有一个疑问,感觉如果用我这种方式去打包,签名文件都没有去读取配置文件里面的了)

大家可以注意这里的Flavors,先回头看看前面配置的buld.gradle文件里面的productFlavors,嘿嘿,渠道都在这了,按住ctrl,选择你要打包的渠道,然后Finish.静静等待。需要要时间

打包成功!点击直接会进入到项目

打包好的apk,就在这了。

----当然,打包的过程中,好多盆友可能会遇到一个错误.导致打包失败。

Execution failed for task ':proguardGooglePlayRelease'.java.io.IOException: Can't write [D:\androidstudiocode\Demo4\build\intermediates\classes-proguard\GooglePlay\release\classes.jar] (Can't read [D:\androidstudiocode\Demo4\build\intermediates\exploded-aar\Demo4\appcompat_v7_8\unspecified\libs\android-support-v4.jar(;;;;;;!META-INF/MANIFEST.MF)] (Duplicate zip entry [android/support/v4/b/d.class == android-support-v4.jar:android/support/v4/os/ParcelableCompatCreatorHoneycombMR2.class]))

是因为混淆打包的时候,有重复的v4包,所以你只需要删掉一个,在Demo4这个项目里面,我是直接注释掉

再打包,等待,成功。

打包成功,我们可以验证 Android 多渠道打包渠道验证.

最后直接贴上配置代码

apply plugin: 'com.android.application'dependencies {//    compile fileTree(dir: 'libs', include: '*.jar')    compile project(':appcompat_v7_8')}buildscript {    repositories {        mavenCentral()    }    dependencies {        classpath 'com.android.tools.build:gradle:1.0.0'    }}android {    compileSdkVersion 19    buildToolsVersion "21.0.2"    sourceSets {        main {            manifest.srcFile 'AndroidManifest.xml'            java.srcDirs = ['src']            resources.srcDirs = ['src']            aidl.srcDirs = ['src']            renderscript.srcDirs = ['src']            res.srcDirs = ['res']            assets.srcDirs = ['assets']        }        // Move the tests to tests/java, tests/res, etc...        instrumentTest.setRoot('tests')        // Move the build types to build-types/<type>        // For instance, build-types/debug/java, build-types/debug/AndroidManifest.xml, ...        // This moves them out of them default location under src/<type>/... which would        // conflict with src/ being used by the main source set.        // Adding new build types or product flavors should be accompanied        // by a similar customization.        debug.setRoot('build-types/debug')        release.setRoot('build-types/release')    }    defaultConfig {        applicationId "com.example.demo4"        minSdkVersion 8        targetSdkVersion 19        versionCode 1        versionName "1.0"        // dex突破65535的限制        multiDexEnabled true
     // AndroidManifest.xml 里面UMENG_CHANNEL的value为 ${UMENG_CHANNEL_VALUE}        manifestPlaceholders = [UMENG_CHANNEL_VALUE: "channel_name"]    }    //执行lint检查,有任何的错误或者警告提示,都会终止构建,我们可以将其关掉。    lintOptions {        abortOnError false    }    //签名    signingConfigs {        debug {            storeFile file("C:/Users/xxx/.android/debug.keystore")        }        relealse {            storeFile file("demo.jks")            storePassword "demo123456"            keyAlias "demo_4"            keyPassword "demo123456"        }    }    buildTypes {        debug {            // 显示Log            buildConfigField "boolean", "LOG_DEBUG", "true"            versionNameSuffix "-debug"            minifyEnabled false            zipAlignEnabled false            shrinkResources false            signingConfig signingConfigs.debug        }        release {            // 不显示Log            buildConfigField "boolean", "LOG_DEBUG", "false"            //混淆            minifyEnabled true            //Zipalign优化            zipAlignEnabled true            // 移除无用的resource文件            shrinkResources true            //加载默认混淆配置文件 progudard-android.txt在sdk目录里面,不用管,proguard.cfg是我们自己配的混淆文件            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard.cfg'            //签名            signingConfig signingConfigs.relealse        }    }    //渠道Flavors,我这里写了一些常用的    productFlavors {        GooglePlay {}        xiaomi {}        umeng {}    }    compileOptions {        sourceCompatibility JavaVersion.VERSION_1_7        targetCompatibility JavaVersion.VERSION_1_7    }    productFlavors.all { flavor ->        flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]    }    applicationVariants.all { variant ->        variant.outputs.each { output ->            def outputFile = output.outputFile            if (outputFile != null && outputFile.name.endsWith('.apk')) {                def fileName = outputFile.name.replace(".apk", "-${defaultConfig.versionName}.apk")                output.outputFile = new File(outputFile.parent, fileName)            }        }    }}




接下来我会介绍build命令打包 Android studio 使用心得(四)---android studio 多渠道打包(二)


更多相关文章

  1. 1、android orm之greendao
  2. Android读取工程根目录下文件内容
  3. android 杂
  4. Android(安卓)中自定义控件和属性(attr.xml,declare-styleable,T
  5. android studio 编译高级篇-gradle多版本编译,定制任务
  6. 《第一行代码--android》笔记·第一章:认识资源
  7. 安卓ListView详解
  8. NDK 之大门开启
  9. 加速Android(安卓)Studio/Gradle构建的方法

随机推荐

  1. QT应用程序开发到Android
  2. ARouter 使用教程
  3. Android进程调度之adj算法
  4. Android百度地图地位当前位置和城市检索-
  5. Android(安卓)studio 快捷键汇总
  6. 【原创】Android(安卓)性能优化(一)
  7. 浅析Kotlin——新Android官方语言
  8. Android(安卓)开发艺术探索读书笔记 6 --
  9. Android布局中LinearLayout的android:lay
  10. linux传统IPC和Binder的介绍