DexOptions ( build.gradle#android#dexOptions ) 文档位置 : https://google.github.io/android-gradle-dsl/2.3/com.android.build.gradle.internal.dsl.DexOptions.html
BaseExtension 文档位置 : android-gradle-dsl/2.3/com.android.build.gradle.BaseExtension.html
总新欢第一时间尝试新鲜的东西,跟随google的脚步更新了Android studio,总体还是很顺,但是编译时出现一个警告:Warning:The `android.dexOptions.incremental` property is deprecated and it has; 强迫症的我开始找原因,原来在Android开发过程中突破的方法数的限制,就在build.gralde中做了解决操作,其中有个如下的配置
1 修改项目的gradle.properties文件 将#org.gradle.parallel=true 去掉注释,增加org.gradle.daemon=true这句表示开启gradle单独的守护进程。
项目的build.gradle: classpath 'com.jakewharton:butterknife-gradle-plugin:8.4.0'
或是mac下,打开访达,然后打开user目录,command+shift+.显示隐藏文件夹,找到.bash_profile文件,查看或配置java环境
首先 , 在 " build.gradle#android#buildTypes#multiDexEnabled " 处配置 多 dex 机制 启用 ;
PackagingOptions ( build.gradle#android#packagingOptions ) 文档位置 : android-gradle-dsl/2.3/com.android.build.gradle.internal.dsl.PackagingOptions.html
到目前为止,Gradle基础以及Kotlin基础讲解完毕。因此,在本篇里,将会以Gradle的构建优化以及如何从Groovy迁移到KTS进行详解!
TestOptions ( build.gradle#android#testOptions ) 文档位置 : android-gradle-dsl/2.3/com.android.build.gradle.internal.dsl.TestOptions.html
一个非常离奇的 bug , Google 许久无果,看到 stackoverflow 有个回答是设置 dex 分包的配置,猜想可能是和 dex 分包有问题,果断删除以下的 dex 分包配置,果然运行成功。
序言: 一开始遇到这错的时候就懵逼了,想到内存溢出异常怎么会在打包的时候出来呢, 后来经过查阅得知,是因为如下原因:
参考 android-gradle-dsl/2.3/com.android.build.gradle.internal.dsl.Splits.html 文档 ;
LibraryExtension ( Library 依赖库的 build.gradle#android 配置 ) 文档 : android-gradle-dsl/2.3/com.android.build.gradle.LibraryExtension.html
分组是在 org.gradle.api.Project 中的 configurations 中配置的 ,
LintOptions ( build.gradle#android#lintOptions ) 文档位置 : android-gradle-dsl/2.3/com.android.build.gradle.internal.dsl.LintOptions.html
添加构建依赖项 参考文档 : https://developer.android.google.cn/studio/build/dependencies
在上一篇博客中 , 生成的 lint 检查报告 , 其中左侧的 就是 问题 id , 如 " VectorRaster "
点击 Android Studio 右侧的 Gradle 面板 , 可以查看该 Android 工程的一系列 Gradle 任务 , 这些 Task 任务都分好了组 , 有如下分组 :
ProductFlavor ( build.gradle#android#defaultConfig 配置 ) 文档 : android-gradle-dsl/2.3/com.android.build.gradle.internal.dsl.ProductFlavor.html
如果执行一个 Gradle 任务 , 该任务名称比较长 , 如 compileDebugAndroidTestSources 任务 ,
导入后gradle building 一直到跑,卡住了,一般是gradle没有下载,又下不下来的原因。
Task#finalizedBy 函数 的作用是为 Gradle 任务 设置任务执行完毕后执行的任务 ;
UnitTestOptions ( build.gradle#android#testOptions#unitTests ) 文档位置 : android-gradle-dsl/2.3/com.android.build.gradle.internal.dsl.TestOptions.UnitTestOptions.html
org.gradle.api.Project 配置 ( build.gradle 根配置 ) 文档 : https://docs.gradle.org/current/javadoc/org/gradle/api/Project.html
org.gradle.api.Task 配置 ( Gradle 任务类型 ) 文档 : https://docs.gradle.org/current/javadoc/org/gradle/api/Task.html
Task#shouldRunAfter 函数的作用是为 Gradle 任务设置该任务执行时 , 应该在某个任务之后 ;
如果 Gradle 任务 A 的执行 是在 Gradle 任务 B 执行的基础上的 , 那么可以将任务 B 设置为 任务 A 的依赖 ;
Task#dependsOn 函数的作用是为 Gradle 任务设置依赖任务 , 执行该任务前 , 依赖任务必须被满足 ;
直接看重点部分------> 看log的第3行,大概意思是Java运行时进程异常,分析这应该是运行时的异常,不是代码问题,根据以往经验,首先查看gradle配置文件开始检查,发现在编译时多了出现了一个这样的一段代码:
Android 12 发布已经有好几个月了,而且随着各大市场对应用适配的要求逐渐提高,和尚也尝试将一个历史的应用简单升级适配 Android 12;
也可以 通过 project.ext.hello 访问该扩展属性 , 代码如下 :
xxx一般是一个整数,比如66345等,从这个提示看,和Dex方法超过64K的限制一样,应该是同一个问题。不过App已经解决了这个64K方法的问题,怎么还会提示呢。
领取专属 10元无门槛券
手把手带您无忧上云