Android Gradle的配置与介绍
来源:互联网 发布:网络规划开题报告 编辑:程序博客网 时间:2024/05/29 07:36
最近整理了关于Gradle一些配置和介绍,总结如下:
/** * 声明是Android程序(以插件的形式引入) * 表示该module是一个app module,应用了com.android.application插件,如果是一个android library,那么这里写apply plugin: ‘com.android.library’ */apply plugin: 'com.android.application'/** * android配置插件等属性 */android { //编译SDK的版本(基于哪个SDK编译,这里是API LEVEL) compileSdkVersion 25 // build tools的版本(基于哪个构建工具版本进行构建的) buildToolsVersion "25.0.1" //默认配置,如果没有其他的配置覆盖,就会使用这里的 defaultConfig { //应用的包名 applicationId "com.xzw.gradledemo" //最小支持的SDK版本 minSdkVersion 10 //目标SDK版本 targetSdkVersion 25 //版本号 versionCode 1 //版本名称 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" //${UMENG_CHANNEL_VALUE}占位符会被dev替换(下面可以使用多渠道) manifestPlaceholders = [UMENG_CHANNEL_VALUE: 'dev'] //移除未使用的备用资源(下面表示将语言资源限定为仅支持英语和法语) resConfigs "en", "fr" //开启multidex支持(用于解决64K方法的问题) multiDexEnabled true //指定ndk需要类型的SO库 ndk { abiFilters "armeabi-v7a" abiFilters "x86" abiFilters "armeabi" abiFilters "arm64-v8a" abiFilters "x86_64" } } //java版本 compileOptions{ sourceCompatibility JavaVersion.VERSION_1_7 targetCompatibility JavaVersion.VERSION_1_7 } /** * 忽略Lint检查 */ lintOptions { abortOnError false } /** * 在Gradle 进行dex的可能会遇到内存不够用的情况, * 错误信息大概是java.lang.OutOfMemoryError: GC overhead limit exceeded。 * 这个时候只需要配置dexOptions的javaMaxHeapSize大小即可,这里配置4g */ dexOptions { javaMaxHeapSize "4g" } //打包的时候忽略一些文件可以在这配置 packagingOptions{ exclude 'META-INF/LICENSE.txt' exclude 'META-INF/NOTICE.txt' } /** * 签名配置 */ signingConfigs { release { //签名证书文件 storeFile file("debug.keystore") //证书的密码 storePassword"secretpassword" //别名 keyAlias "gradleforandroid" //key的密码 keyPassword "secretpassword" } debug { //签名证书文件 storeFile file("release.keystore") //证书的密码 storePassword"secretpassword" //别名 keyAlias "gradleforandroid" //key的密码 keyPassword "secretpassword" } } /** * 分割apk */ splits { density { //启用或者禁用密度分割 enable true // 除了这些密度之外 exclude "ldpi", "tvdpi", "xxxhdpi", "400dpi", "560dpi" //兼容以下屏幕 compatibleScreens 'normal', 'large', 'xlarge' } } /** * 构建类型 * 构建不同类型提供团队内部使用 * 常用的有release和debug两种,可以在这里面启用混淆,启用zipAlign以及配置签名信息等。 */ buildTypes { debug{ //版本名字上加上后缀,如1.0.debug,这样方便调试的时候识别 applicationIdSuffix ".debug" buildConfigField "String","API_URL","http://www.baidu.com" buildConfigField "boolean", "LOG_HTTP_CALLS", "true" resValue "string", "app_name", "Example DEBUG" //设置默认的签名文件 //signingConfig signingConfig.release } jnidebug { // 'initWith'属性允许您从其他构建类型中复制配置,如有不同配置只需要设置不同的属性即可 initWith debug //版本名字上加上后缀,如1.0.jnidebug,这样方便调试的时候识别 applicationIdSuffix ".jnidebug" jniDebuggable true } release { //版本名字上加上后缀,如1.0.release,这样方便调试的时候识别 applicationIdSuffix ".release" buildConfigField "String","API_URL","http://www.baidu.com" buildConfigField "boolean", "LOG_HTTP_CALLS", "true" resValue "string", "app_name", "Example DEBUG" //是否开启混淆 minifyEnabled true //是否ZIP优化 shrinkResources true /** * 删除一些无用的资源(资源压缩) * 资源压缩目前不会移除 values/ 文件夹中定义的资源(例如字符串、尺寸、样式和颜色)。 * 这是因为 Android 资源打包工具 (AAPT) 不允许 Gradle 插件为资源指定预定义版本。 */ shrinkResources true /** * 使用ProGuard 缩减apk文件大小(混淆所用的文件) * getDefaultProguardFile(‘proguard-android.txt') 方法可从 Android SDK tools/proguard/ 文件夹获取默认 ProGuard 设置 * 要想做进一步的代码压缩,可尝试使用位于同一位置的 proguard-android-optimize.txt 文件。它包括相同的 ProGuard 规则, * 但还包括其他在字节码一级(方法内和方法间)执行分析的优化,以进一步减小 APK 大小和帮助提高其运行速度。 */ proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' //signingConfig signingConfig.release /** * 定制生成的apk文件名 * 输出apk名字:gradledemo_v1.0_2016-03-23_xiaomi.apk */ applicationVariants.all { variant -> if (variant.buildType.name.equals('release')) { variant.outputs.each { output -> def outputFile = output.outputFile if (outputFile != null && outputFile.name.endsWith('.apk')) { def fileName = "gradledemo${defaultConfig.versionName}_${releaseTime()}_${variant.flavorName}.apk" output.outputFile = new File(outputFile.parent, fileName) } } } } //针对很多渠道(多渠道打包,还会遇到一个问题,比如友盟统计的渠道号,Gradle处理办法:manifestPlaceholders,它允许我们动态替换我们在AndroidManifest文件里定义的占位符。) productFlavors.all { flavor -> manifestPlaceholders.put("UMENG_CHANNEL_VALUE",name) } } } /** * 用于多渠道打包.定制不同版本 */ productFlavors{ xiaomi{ //设置applicationId为: com.xzw.casedemo1 applicationId 'com.xzw.casedemo1' //设置为设置applicationId为:com.xzw.gradledemo.xiaomi applicationIdSuffix ".xiaomi" //设置mainfest里面的多渠道的值 manifestPlaceholders.put("UMENG_CHANNEL_VALUE", 'xiaomi') //设置版本号 versionName "1.0-xiaomo" } googleplay{ //设置applicationId为: com.xzw.casedemo2 applicationId 'com.xzw.casedemo2' //设置为设置applicationId为:com.xzw.gradledemo.googleplay applicationIdSuffix ".googleplay" //设置mainfest里面的多渠道的值 manifestPlaceholders.put("UMENG_CHANNEL_VALUE", 'googlepaly') //设置版本号 versionName "1.0-googleplay" } }}def releaseTime() { return new Date().format("yyyy-MM-dd", TimeZone.getTimeZone("UTC"))}/** * dependencies:不属于Android专有的配置了,它定义了该module需要依赖的jar,aar,jcenter库信息。 * dependencies有三种不同类型的依赖关系 */dependencies { //1.添加所有在libs文件夹中的jar compile fileTree(include: ['*.jar'], dir: 'libs') //仅为测试的APK添加远程依赖。 androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' }) //这种方式其实是正确的语法 compile group: 'com.android.support', name: 'appcompat-v7', version: '25.0.1' //2.远程依赖库(这个是上面的简写一般我们都这么写) compile 'com.android.support:appcompat-v7:25.0.1' //使用JUnit单元测试 testCompile 'junit:junit:4.12' //动态版本 compile 'com.android.support:recyclerview-v7:+' //3.library库输出文件是.aar文件,包含了Android 资源文件,在library工程build/output/aar/下 // app内引用本地library项目 compile project(':mylibrary') //多个library,libraries是文件夹名字 //compile project(':libraries:library名字') //64k依赖库 compile 'com.android.support:multidex:1.0.0'}
0 0
- Android Studio gradle的配置与介绍
- Android Gradle的配置与介绍
- gradle的配置与介绍
- Android Studio之gradle的配置与介绍
- Android Studio之gradle的配置与介绍
- Android Studio之gradle的配置与介绍
- Android Studio之gradle的配置与介绍
- Android Studio之gradle的配置与介绍
- Android Studio之gradle的配置与介绍
- Android Studio之Gradle的介绍与配置
- Android Studio之gradle的配置与介绍
- Android Studio之gradle的配置与介绍
- Android Studio Gradle 之基础配置与介绍
- android中gradle的介绍
- 【Gradle】Gradle的安装与配置
- Android Studio Gradle的配置使用与解析总结
- Android apk签名 Structure配置与Gradle的关係
- Android gradle SourceSets介绍与使用
- py2.7 : 《机器学习实战》 朴素贝叶斯 1.12号 4.5.3 训练算法:从词向量计算概率
- 【微信开发】给用户发送模板消息
- eclipse vm插件的安装
- 设计Mysql索引的原则
- Springboot入门
- Android Gradle的配置与介绍
- no module named google.protobuf.internal
- LeetCode笔记:406. Queue Reconstruction by Height
- React普通样式(className)和行内样式(LineStyle)多种设置样式设置详解
- android webkit学习笔记1,QT
- Problem_3(2015级期末) 超大数的运算
- Python算法实践——最长回文串
- 使用blackhole存储引擎表模拟多主复制
- 构造器代理