美文网首页gradle
gradle常用配置汇总

gradle常用配置汇总

作者: 匠人plus | 来源:发表于2019-11-27 11:38 被阅读0次

阿里云仓库地址

maven { url "http://maven.aliyun.com/nexus/content/repositories/releases" }

全局应用配置文件,在buildscript中添加

apply from: 'thirdparty-lib/config.gradle'

全局修改所有module的build输出路径,在buildscript中添加

buildDir = new File(rootDir, "gradle-build/${path.replaceAll(':', '/')}")

加载aar

repositories {
    flatDir {
        dirs 'libs'
    }
}

配置支持多dex

在defaultConfig中添加
multiDexEnabled true
在Application的attachBaseContext方法中添加
MultiDex.install(this);

ndk配置

通常可以在defaultConfig中添加

ndk {
            abiFilters "armeabi-v7a"
        }

修改多版本support包差异导致的冲突,同步为统一版本

configurations.all {
        resolutionStrategy.eachDependency { DependencyResolveDetails details ->
            def requested = details.requested
            if (requested.group == 'com.android.support') {
                if (!requested.name.startsWith("multidex")) {
                    details.useVersion '28+'
                }
            }
        }

    }

修改apk输出路径与名称

在android中添加
android.applicationVariants.all { variant ->
        //判断是release还是debug版本
        def buildType = variant.buildType.name
        //获取渠道名称
        def channel = variant.productFlavors[0]!=null?variant.productFlavors[0].name:"home";
        def fileName//获取当前时间的"YYYY-MM-dd"格式。
        def createTime = new Date().format("yyyy_MM_dd_HH_mm", TimeZone.getTimeZone("GMT+08:00"))
        //println variant.getPackageApplicationProvider().outputFile
        //def output = variant.outputFile()
        variant.outputs.each {
            variant.getPackageApplicationProvider().get().outputDirectory = 
                    new File(project.rootDir.absolutePath + "/apks/${buildType}/${createTime}")
            fileName = "${buildType}_${channel}_v${defaultConfig.versionName}_${createTime}_${buildType}.apk"
            //it.outputFile = new File(it.outputFile.parent, fileName)
            it.outputFileName = fileName
        }
    }

混淆相关

minifyEnabled true //表示是否开启混淆,默认为false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 
zipAlignEnabled true //是否优化apk文件,将apk文件中未压缩的数据在4个字节边界上对齐
shrinkResources true  //是否去除无用资源,任何在编译过程中没有用到的资源或者代码都会被删除,可以有效减小apk体积
'proguard-rules.pro'  //混淆配置文件,一般就采用项目中默认的proguard-rules.pro文件。

proguard-rules.pro文件说明

#指定代码的压缩级别
-optimizationpasses 5

#包明不混合大小写
-dontusemixedcaseclassnames

#不去忽略非公共的库类
-dontskipnonpubliclibraryclasses

 #优化  不优化输入的类文件
-dontoptimize

 #预校验
-dontpreverify

 #混淆时是否记录日志
-verbose
#保护注解
-keepattributes *Annotation*

# 保持哪些类不被混淆
-keep public class * extends android.app.Fragment
-keep public class * extends android.app.Activity
-keep public class * extends android.app.Application
-keep public class * extends android.app.Service
-keep public class * extends android.content.BroadcastReceiver
-keep public class * extends android.content.ContentProvider
-keep public class * extends android.app.backup.BackupAgentHelper
-keep public class * extends android.preference.Preference
-keep public class com.android.vending.licensing.ILicensingService
#保持 native 方法不被混淆
-keepclasseswithmembernames class * {
    native <methods>;
}
#保持 Parcelable 不被混淆
-keep class * implements android.os.Parcelable {
  public static final android.os.Parcelable$Creator *;
}

#保持 Serializable 不被混淆
-keepnames class * implements java.io.Serializable
#保持枚举 enum 类不被混淆
-keepclassmembers enum * {
  public static **[] values();
  public static ** valueOf(java.lang.String);
}
#忽略警告
-ignorewarning

##记录生成的日志数据,gradle build时在本项目根目录输出##
#apk 包内所有 class 的内部结构
-dump proguard/class_files.txt
#未混淆的类和成员
-printseeds proguard/seeds.txt
#列出从 apk 中删除的代码
-printusage proguard/unused.txt
#混淆前后的映射
-printmapping proguard/mapping.txt
########记录生成的日志数据,gradle build时 在本项目根目录输出-end######

androidx相关

androidx适配需要在 gradle.properties中添加

android.useAndroidX=true  //表示当前项目启用 AndroidX
android.enableJetifier=true  //表示将依赖包也迁移到AndroidX

gradle中配置

compileOptions {
            sourceCompatibility JavaVersion.VERSION_1_8
            targetCompatibility JavaVersion.VERSION_1_8
        }

迁移操作:
Refactor > Migrate to AndroidX,
注意:在执行该操作时会提醒我们是否将当前项目打包备份。如果你提前已经做好了备份,可以忽略;如果没有备份,则先备份。
接下来可以build 项目,解决部分包名或者路径转化错误的问题,
通常在 AndroidStudio 的 build 选项卡中一次最多只会报 50条错误,所以后面可能还有N个50,要有耐心啊。

dexOptions 配置

dexOptions {                          
        //multiDex的一些相关配置,这样配置可以让你的编译速度更快
        preDexLibraries = false //让它不要对Lib做preDexing
        javaMaxHeapSize "4g"    //增加java堆内存大小
    }

aaptOptions

建议使用如下配置

aaptOptions {
        cruncherEnabled = false;
        useNewCruncher = false;
    }

sourceSets

sourceSets.main{
        //多资源目录的配置方式
        //写法1
        res.srcDirs += 'src/main/res'
        res.srcDirs += 'src/main/res_aa'
        res.srcDirs += 'src/main/res_bb'
        //写法2
        res.srcDirs=['src/main/res',
                     'src/main/res-aa',
                     'src/main/res-bb']
    }

相关文章

  • gradle常用配置汇总

    阿里云仓库地址 全局应用配置文件,在buildscript中添加 全局修改所有module的build输出路径,在...

  • gradle片段

    gradle 常用配置 多模块项目 setting.gradle gradle 发布jar包到本地仓库 gradl...

  • 常用Gradle配置

    1、添加aar依赖 在allprojects->repositories节点下添加 在dependencies节点...

  • Gradle 常用配置

    一、release 、debug 版本不同配置 添加不同环境的接口切换和Debug 开关配置 代码中使用: 二、统...

  • Gradle常用配置

    基本介绍 Gradle 是一个基于 Ant 和 Maven 概念的项目自动化建构工具。它使用一种基于 Groovy...

  • Gradle常用配置

    Android Studio使用Gradle进行构建,不仅可以非常方便的管理依赖,还可以自定义一些实用的功能,例如...

  • gradle 常用配置

    一 ,implementation 的使用 替换complie 直接替换使用 引入本地jar

  • Gradle基础配置

    gradle基础配置 gradle构建脚本基础 gradle常用命令 //列出项目的所有属性. 这样你就可以看到插...

  • Android Developer notes.

    一、 常用配置 1、加载阿里云镜像 二、常用资源 1、网站 Gradle 下载https://services.g...

  • Gradle 常用配置总结

    这里分享下我在日常开发中对 Gradle 的常用配置规则 一、版本号配置 当项目逐渐演进的过程中,主工程依赖的 M...

网友评论

    本文标题:gradle常用配置汇总

    本文链接:https://www.haomeiwen.com/subject/jhcywctx.html