博客
关于我
简述Android中gradle的简单知识
阅读量:605 次
发布时间:2019-03-13

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

Gradle在Android开发中的应用指南

作为Android开发的核心工具,Gradle在项目构建、依赖管理和多渠道打包等方面发挥着重要作用。本文将详细介绍Gradle的使用方法、常用配置以及开发技巧。

Gradle编译参数配置

内存配置

Gradle的性能表现依赖于合理的内存分配。以下是推荐的内存配置:

org.gradle.jvmargs=-Xmx4096m -XX:MaxPermSize=1024m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
  • -Xms-Xmx 用于设置堆内存的最小值和最大值,默认值为物理内存的1/64和1/4。
  • -XX:PermSize-XX:MaxPermSize 用于设置非堆内存的最小值和最大值,同样默认值为物理内存的1/64和1/4。
  • 其他常用配置包括启用守护进程(org.gradle.daemon=true)、并行编译(org.gradle.parallel=true)以及启用缓存(android.enableBuildCache=true)。

依赖管理

  • 固定版本依赖:建议使用固定版本号,例如:
    dependencies {    compile 'com.google.code.gson:gson:2.2.1'

    这样可以避免因库更新带来的潜在问题。

  • 模块和JAR依赖:使用implementation关键字,例如:
    implementation project(':commonlibrary')implementation files('libs/alipaysdk.jar')
  • 依赖冲突解决:使用exclude关键字,例如:
    compile('com.facebook.fresco:animated-webp:0.13.0') {    exclude group: 'com.android.support'

    或者精确排除:

    compile('com.android.support:appcompat-v7:23.2.0') {    exclude group: 'com.android.support', module: 'support-annotations'    exclude group: 'com.android.support', module: 'support-compat'    exclude group: 'com.android.support', module: 'support-v4'    exclude group: 'com.android.support', module: 'support-vector-drawable'

查看依赖关系

要查看某个模块的依赖树,可以执行以下命令:

  • Windowsgradlew :app:dependencies > dependencies.txt
  • MAC./gradlew :app:dependencies > dependencies.txt

Java版本设置

如果需要自定义Java版本:

  • 模块级别:在build.gradle中添加:
    android {    compileOptions {        sourceCompatibility JavaVersion.VERSION_1_8        targetCompatibility JavaVersion.VERSION_1_8    }
  • 项目级别:在根目录添加:
    allprojects {    repositories {        jcenter()    }    tasks.withType(JavaCompile) {        sourceCompatibility = JavaVersion.VERSION_1_8        targetCompatibility = JavaVersion.VERSION_1_8    }

多渠道配置

渠道设置

build.gradle中定义多渠道配置:

android {    productFlavors {        baidu {            manifestPlaceholders = [UMENG_CHANNEL_VALUE: "baidu", APP_NAME: "app应用01"]            buildConfigField "String", "API_APP_ID", "\"10001\""        }        xiaomi {            manifestPlaceholders = [UMENG_CHANNEL_VALUE: "xiaomi", APP_NAME: "app应用02"]            buildConfigField "String", "API_APP_ID", "\"10002\""        }    }}

APK名称自定义

build.gradle中添加自定义打包逻辑:

proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'applicationVariants.all { variant ->    variant.outputs.each { output ->        def outputFile = output.outputFile        if (outputFile != null && outputFile.name.endsWith('.apk')) {            def fileName = "App_V${variant.productFlavors[0].versionName}_${variant.productFlavors[0].name}.apk"            output.outputFile = new File(outputFile.parent, fileName)        }    }}

打包属性解释

  • name:指定构建类型名称。
  • applicationIdSuffix:自定义应用ID后缀。
  • versionNameSuffix:自定义版本名称后缀。
  • debuggable:是否生成debug版本。
  • minifyEnabled:是否启用混淆。
  • shrinkResources:是否去除未使用的资源,默认为false
  • zipAlignEnable:是否使用zipalign工具压缩。
  • multiDexEnabled:是否拆分成多个Dex文件。
  • multiDexKeepFile:将文本文件编译到主Dex。
  • multiDexKeepProguard:将混淆文件编译到主Dex。

常用Gradle命令

  • 生成依赖文件gradlew :app:dependencies > dependencies.txt
  • 查看编译日志gradlew compileDebugSource --stacktrace -info
  • 输出编译日志gradlew assembleDebug --info > log2.txt

通过以上方法,开发者可以充分利用Gradle的强大功能,提升Android项目的开发效率和代码质量。

转载地址:http://eviaz.baihongyu.com/

你可能感兴趣的文章
CSS入门总结
查看>>
使用 TortoiseGit 时,报 Access denied 错误
查看>>
基于 HTML5 WebGL 的污水处理厂泵站自控系统
查看>>
django-表单之模型表单渲染(六)
查看>>
c++之程序流程控制
查看>>
spring-boot-2.0.3之redis缓存实现,不是你想的那样哦!
查看>>
有道云笔记 同步到我的博客园
查看>>
李笑来必读书籍整理
查看>>
Hadoop(十六)之使用Combiner优化MapReduce
查看>>
《机器学习Python实现_10_06_集成学习_boosting_gbdt分类实现》
查看>>
CoreCLR源码探索(八) JIT的工作原理(详解篇)
查看>>
flume使用中的一些常见错误解决办法 (地址已经使用)
查看>>
andriod 开发错误记录
查看>>
C语言编译错误列表
查看>>
看明白这两种情况,才敢说自己懂跨链! | 喵懂区块链24期
查看>>
CentOS5 Linux编译PHP 报 mysql configure failed 错误解决办法
查看>>
《web安全入门》(四)前端开发基础Javascript
查看>>
pycharm新建文件夹时新建python package和新建directory有什么区别?
查看>>
python中列表 元组 字典 集合的区别
查看>>
python struct 官方文档
查看>>