博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android Studio 多渠道打包
阅读量:6109 次
发布时间:2019-06-21

本文共 4209 字,大约阅读时间需要 14 分钟。

hot3.png

build.gradle实例:

apply plugin: 'com.android.application'android {    /**     * 设置编译 sdk 和编译工具的版本     */    compileSdkVersion 19    buildToolsVersion "24.0.3"    /**     * 为所有的 build variants 设置默认的值. 关于 build variant, 我们后面会用一张图片说明     */    defaultConfig {        applicationId "com.dingxiaoyu.iweather"        minSdkVersion 19        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"]    }    /**     * 关于签名, 请参考 google 官方文档:     * Sign Your App     */    signingConfigs {        /**         * As 会自动帮我们使用 debug certificate 进行签名. 这个 debug certificate 每次安装 As 都会变,         * 因此不适合作为发布之用.         */        debug {        }        release {            storeFile file("$System.env.STORE_FILE")            storePassword "$System.env.STORE_PASSWORD"            keyAlias "$System.env.KEY_ALIAS"            keyPassword "$System.env.KEY_PASSWORD"        }    }    /**     * type 默认会有 debug 和 release. 不管你写不写都如此.     * 通常, 我们在 debug 中保留默认值, release 中开启混淆, 并使用私有的签名     */    buildTypes {        release {            // 不显示Log            buildConfigField "boolean", "LOG_DEBUG", "false"            // 移除无用的resource文件            shrinkResources true            //Zipalign优化            zipAlignEnabled true            // 混淆            minifyEnabled false            //加载默认混淆配置文件            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'            // 签名            signingConfig signingConfigs.release        }        debug {            //apk打包文件后缀            versionNameSuffix "-debug"        }    }    /**     * flavor 强调的是不同的版本, 比如付费版和免费版.     * 在国内, 这个字段更多被用于区分不同的渠道, 即 360 渠道, 小米渠道等等.     */    productFlavors {        main {            // 定制包名的            //applicationId "com.dingxiaoyu.iweather"            // manifests引用的            //manifestPlaceholders = [ CHANNEL_NAME:"YINGYONGBAO"]        }        m360 {        }        xiaomi {        }        flyme {        }    }    // 设置路径    sourceSets {        main {            assets.srcDirs = ['src/main/assets']            jniLibs.srcDirs = ['libs']            //manifest.srcFile 'src/main/AndroidManifest.xml'            //java.srcDirs = ['src/main/java']            //resources.srcDirs = ['src/main/res']            //aidl.srcDirs = ['src']            //renderscript.srcDirs = ['src']            //res.srcDirs = ['src/main/res']        }    }    /**     * 这个选项基本不用.     * 官方说: 使用 splits 可以比使用 flavor 更加有效创建多 apk.     * 目前而言, 仅支持 Density 和 ABIs 这两个分类.     */    splits {        // 按屏幕尺寸        density {            enable false            // 默认包含全部分辨率, 这里是剔除一些我们不要的            exclude "ldpi", "mdpi", "xxxhdpi", "400dpi", "560dpi", "tvdpi"        }        // 按架构        abi {            enable false            // 使用 `reset()` 后, 我们就相当于不包含任何架构,            // 这种情况下我们就可以通过 `include` 指定想要使用的架构            reset()            include 'x86', 'armeabi-v7a'            universalApk true       // 是否同时生成一个包含全部 Architecture 的包        }    }    //打包完成后修改文件名,加版本号    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)            }        }    }}/** * 配置依赖目录 */repositories {    flatDir {        dirs 'libs'    }}/** * 项目的依赖 */dependencies {    /**     * `fileTree` 导入 libs 目录下的所有 jar 文件     */    compile fileTree(dir: 'libs', include: ['*.jar'])    compile 'com.android.support:support-v4:24.2.1'    compile 'com.android.volley:volley:1.0.0'    compile 'com.squareup.okhttp:okhttp:2.1.0'    // flyme 推送    compile(name:'common-1.0.10', ext:'aar')    compile(name:'gslb-3.0.9', ext:'aar')    compile(name:'push-internal-3.1.160901', ext:'aar')    compile(name:'usage-stats-2.5.1', ext:'aar')    compile 'com.google.android.gms:play-services-appindexing:8.4.0'}

转载于:https://my.oschina.net/dingdayu/blog/759342

你可能感兴趣的文章
在使用EF开发时候,遇到 using 语句中使用的类型必须可隐式转换为“System.IDisposable“ 这个问题。...
查看>>
PHP使用DES进行加密和解密
查看>>
Oracle 如何提交手册Cluster Table事务
查看>>
BeagleBone Black第八课板:建立Eclipse编程环境
查看>>
在服务器上用Fiddler抓取HTTPS流量
查看>>
文件类似的推理 -- 超级本征值(super feature)
查看>>
【XCode7+iOS9】http网路连接请求、MKPinAnnotationView自定义图片和BitCode相关错误--备用...
查看>>
各大公司容器云的技术栈对比
查看>>
记一次eclipse无法启动的排查过程
查看>>
【转】jmeter 进行java request测试
查看>>
读书笔记--MapReduce 适用场景 及 常见应用
查看>>
SignalR在Xamarin Android中的使用
查看>>
走过电竞之路的程序员
查看>>
Eclipse和MyEclipse使用技巧--Eclipse中使用Git-让版本管理更简单
查看>>
[转]响应式表格jQuery插件 – Responsive tables
查看>>
8个3D视觉效果的HTML5动画欣赏
查看>>
C#如何在DataGridViewCell中自定义脚本编辑器
查看>>
【linux】crontab定时命令
查看>>
Android UI优化——include、merge 、ViewStub
查看>>
Office WORD如何取消开始工作右侧栏
查看>>