<强>简介强>
Android工作室升级到3.0后,有不少的改动和新特性,先贴出官方的迁移说明。
本文会持续收集与总结本人在使用Android Studio 3.0进行开发的过程中所遇到的问题。
<>强版本配置强>
<强> Gradle版本强>
-
<李> Android Studio 3.0需要的Gradle版本至少为4.1。李>
<李>如果是使用gradle包装,则工程根目录/gradle/包装/gradle-wrapper.properties中的distributionUrl字段为https \://services.gradle.org/distributions/gradle - 4.1 all.zip。李>
<强> Android Gradle插件版本强>
Android Studio 3.0需要安卓Gradle插件版本为3.0.0。
Android Studio 3.0默认使用谷歌的Maven存储库来下载Android支持库,所以在脚本中要使用谷歌()来加入谷歌仓库。
工程根目录/build.gradle的相关配置如下。
buildscript { 存储库{ 谷歌() } 依赖关系{ 类路径“com.android.tools.build: gradle: 3.0.0” } } >之前<强>使用annotationProcessor 强>
从Android Studio 3.0开始,使用annotationProcessor代替恰当的。不可再使用,否则会编译报错。
错误:android-apt插件不兼容Android Gradle插件只请使用“annotationProcessor”配置。
比如在Android Studio 3.0之前在应用模块导入ButterKnife 8.4.0的gradle配置如下。
buildscript { 依赖关系{ 类路径“com.neenbedankt.gradle.plugins: android-apt: 1.8” } }应用插件:“com.neenbedankt.android-apt” 依赖关系{ 编译的com.jakewharton: butterknife: 8.4.0 恰当的“com.jakewharton: butterknife-compiler: 8.4.0” } >之前而工作室在Android 3.0中,使用annotationProcessor代替贴切,不用再导入android-apt插件。
依赖关系{ 编译的com.jakewharton: butterknife: 8.4.0 annotationProcessor com.jakewharton: butterknife-compiler: 8.4.0 }<>强修改apk名称强>
常用的修改输出的apk文件的名称的脚本如下。
def apkBaseName () {//先查找project.ext.apkName变量,若无则使用项目名 如果(project.hasProperty (“apkName”)) { 返回project.apkName 其他}{ 返回project.name } } def buildTime () { 返回新的日期().format(“名称”) } def delUnderline (String str) { def结果=str.startsWith (“_”) & # 63;str.substring (1): str 返回result.endsWith (“_”) & # 63;结果。substring (0, result.length() - 1):结果 } android.applicationVariants。所有{变体→//ApplicationVariant variant.outputs。每个{输出→//BaseVariantOutput def文件=output.outputFile 如果(文件!=零,,file.name.endsWith (. apk)) { def flavorName=delUnderline (variant.flavorName) def buildTypeName=delUnderline (variant.buildType.name) def apkFile=新文件(文件。父:“$ {apkBaseName ()} _”+ “$ {buildTypeName。空& # 63;”“:buildTypeName +}”+“_” “$ {flavorName。空& # 63;”“:flavorName +}”+“_” “v ${变体。versionName} _”+ " $ {buildTime ()} . apk”) 输出。outputFile=apkFile } } } >之前在Android Studio 3.0中执行此脚本会报错如下,原因是ApkVariantOutputImpl的outputFile属性改为只读。
不能设置只读属性的值的outputFile ApkVariantOutputImpl_Decorated {apkData=https://www.yisu.com/zixun/Main {type=主要fullName=调试、过滤器=[]}}com.android.build.gradle.internal.api.ApkVariantOutputImpl型
不再设置outputFile属性,而是设置outputFileName。同时把每()改为()。
android.applicationVariants。所有{变体→//ApplicationVariant variant.outputs。所有{ 如果(outputFileName.endsWith (. apk)) { def flavorName=delUnderline (variant.flavorName) def buildTypeName=delUnderline (variant.buildType.name) outputFileName="文件名" } } } >之前<强> AAPT2 强>
为了改进增量资源处理,Android Gradle插件3.0默认开启AAPT2。
在旧项目中开启AAPT2,有时候会报的错,如:
详解Android Studio 3.0的新特性与适配