浅析Android Studio 3.0 升级各种坑(推荐)

所属分类: 软件编程 / Android 阅读数: 71
收藏 0 赞 0 分享

点击 Check for Updates 增量更新:

下载完成,会提示更新 您将 Gradle 更新至 4.1:

这里建议您对老项目先暂时点击 Don't remind me on this project,以防有坑。当然我不入地狱谁入地狱,我点 Update,于是问题来了,一直处于下载中,不过,莫担心,我下载好了,公众号聊天界面回复「 gradle-4.1-all 」,下载 gradle-4.1-all.zip 文件,放到:

重启 Android Studio。

gradle 目录:

Mac系统默认:/Users/(用户名)/.gradle

Windows系统默认:C:\Users(用户名).gradle

修改旧项目

首先我们新建项目,看看发生了哪些变化。

1、app/build.gradle

buildToolsVersion:这里没有构建工具的版本 buildToolsVersion 属性了,Android Studio 3.0 默认情况下,插件会自动为您使用的 Android 插件版本使用最低要求的构建工具版本;

implementation:由以前的 compile 改成了 implementation。老版本的构建关键字 compile 被废弃了,而是改成了这两个:api:同 compile 作用一样,即认为本 module 将会泄露其依赖的 module 的内容;

implementation:本 module 不会通过自身的接口向外部暴露其依赖 module 的内容。

2、项目 build.gradle

google():Android Studio 3.0 现在默认使用 Google 的 Maven 存储库,而不是依赖于 Android SDK Manager 来获取 Android 支持库,Google Play 服务,Firebase 和其他依赖项的更新;

build.gradle:指定的是Gradle插件的版本,由之前的 2.3.3 改成了 3.0.0。

3、gradle-wrapper.properties

gradle-wrapper.properties 中配置的是的 Gradle 的版本。

可以对老项目就以上几点进行修改。

butterknife

如果您在 lib 里使用了 butterknife,会遇到以下错误:


网上说将 apply plugin: ‘com.jakewharton.butterknife' 注掉,是能解决问题,但是对于 lib 里使用了 butterknife 依旧报 R2 找不到,还得放开 apply plugin: ‘com.jakewharton.butterknife',最后我只能退而求其次,将 build.gradle 中 3.0.0 改成之前的 2.3.3,解决。

打包自定义 APK 文件名

打包时,要是自定义输出 APK 文件名可以这样做:

buildTypes {
  release {
    minifyEnabledfalse
    proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    applicationVariants.all { variant ->
      if (variant.buildType.name == 'release') {
        variant.outputs.each { output ->
          def outputFile = output.outputFile
          if (outputFile !=null && outputFile.name.endsWith('.apk')) {
            def fileName = "Sample_v${defaultConfig.versionName}_${releaseTime()}_${variant.flavorName}.apk"
            output.outputFile = new File(outputFile.parent, fileName)
          }
        }
      }
    }
  }
}

使用 Gradle Plugin 3.0.0 时报错:

Cannot set the value of read-only property 'outputFile' for ApkVariantOutputImpl_Decorated{apkData=Main{type=MAIN, fullName=release, filters=[]}} of type com.android.build.gradle.internal.api.ApkVariantOutputImpl. Open File

需要修改 each() 和 outputFile() 方法为 all() 和 outputFileName:

buildTypes {
  release {
    minifyEnabledfalse
    proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    applicationVariants.all { variant ->
      if (variant.buildType.name == 'release') {
        variant.outputs.all { output ->
          def outputFile = output.outputFile
          if (outputFile !=null && outputFile.name.endsWith('.apk')) {
            def fileName = "Sample_v${defaultConfig.versionName}_${releaseTime()}_${variant.flavorName}.apk"
            output.outputFileName = new File(outputFile.parent, fileName)
          }
        }
      }
    }
  }
}

补充

build.gradle 和 gradle-wrapper.properties 区别,了解更多: https://developer.android.com/studio/releases/gradle-plugin.html

最后

目前遇到这些坑,欢迎一起吐槽您在升级开发遇到的坑,这次升级又折腾了很久。另外如果需要gradle-4.1-all.zip 文件,公众号「吴小龙同学」聊天界面回复「 gradle-4.1-all 」获取。

PS:下面给大家补充介绍android studio升级到3.0的各种坑。

项目的build.gradle(不是module):

解决方案:

关掉AAPT2即可

在Project/gradle.properties中添加 android.enableAapt2=false

以上所述是小编给大家介绍的浅析Android Studio 3.0 升级各种坑(推荐),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

更多精彩内容其他人还在看

Android样式和主题之选择器的实例讲解

今天小编就为大家分享一篇关于Android样式和主题之选择器的实例讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
收藏 0 赞 0 分享

Android应用动态修改主题的方法示例

今天小编就为大家分享一篇关于Android应用动态修改主题的方法示例,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
收藏 0 赞 0 分享

Flutter 网络请求框架封装详解

这篇文章主要介绍了Flutter 网络请求框架封装详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

Flutter倒计时/计时器的实现代码

这篇文章主要介绍了Flutter倒计时/计时器的实现代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

Android使用google breakpad捕获分析native cash

这篇文章主要介绍了Android使用google breakpad捕获分析native cash 的相关知识,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

详解Flutter WebView与JS互相调用简易指南

这篇文章主要介绍了详解Flutter WebView与JS互相调用简易指南,分为JS调用Flutter和Flutter调用JS,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

Android开发实现ListView和adapter配合显示图片和文字列表功能示例

这篇文章主要介绍了Android开发实现ListView和adapter配合显示图片和文字列表功能,涉及Android使用ListView结合adapter适配器实现图文显示功能相关的布局、解析、权限控制等操作技巧,需要的朋友可以参考下
收藏 0 赞 0 分享

Android文字基线Baseline算法的使用讲解

今天小编就为大家分享一篇关于Android文字基线Baseline算法的使用讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
收藏 0 赞 0 分享

Flutter自定义实现神奇动效的卡片切换视图的示例代码

这篇文章主要介绍了Flutter自定义实现神奇动效的卡片切换视图的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

Android实现自定义滑动刻度尺方法示例

这篇文章主要给大家介绍了关于Android实现自定义滑动刻度尺的相关资料,文中通过示例代码介绍的非常详细,对各位Android开发者们具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
收藏 0 赞 0 分享
查看更多