序言

Android Studio 3.0

上篇讲了: 全面总结Android Studio2.X的填坑指南

这篇讲一下AS3.0的坑。。


作为这个世界上走在最前沿的生物“猿”,怎么能对新事物一无所知呢,10月26日,随着Android 8.1 Oreo的预览版发布,Android Studio3.0正式版也发布了,作为Android开发的猿们我们应该早就知道谷歌在今年5月的开发者大会上就说了要支持Kotlin语言,所以这次更新一个比较大的点就在于支持Kotlin语言了,下面就跟着LZ的脚步来探索一下AS3.0吧
相信很多人很早就体验过谷歌爸爸放出来的体验版本了,虽然说正式版已经出了,但是很多人也不敢轻易贸然的更新,因为怕会掉进坑里出不来(真是一只胆小的猿,鉴定完毕)。


安装

如果你从Android Studio内部点击更新的话,会跳转到Android的官网,没有梯子的同学可以点击 谷歌官方Android 开发中文网 下载更新:

网址: https://developer.android.google.cn/studio/index.html

不同平台版本

如何加快下载速度? ----- 设置代理(必备操作)

貌似从2017年的中旬开始,AS就不能搜索依赖库了,后来gradle插件也不能搜索了,只有通过设置代理,或者翻墙(这个有风险,不推荐,怕查水表)的方式去解决问题。这里讲一下代理如何操作:

代理地址:mirrors.neusoft.edu.cn
端口号:80

打开设置页面 --> Appearance & Behavior --> System Settings --> HTTP Proxy,找到Manual proxy configuration,选择HTTP
,填入代理地址和端口号,点击ok
如图所示:

操作方式2:
在搜索插件页面,同样可以设置代理:


安装过程中遇到的问题

1、Gradle Sync failed:

Gradle sync failed: Cause:com.android.build.gradle.api.BaseVariant.getOutputs()Ljava/util/List;Consult IDE log for more details (Help | Show Log) (8s 123ms)

其实一开始不是这个错,最开始是一个redownload的一个错,后来LZ把2.3版本的给删了,缓存给清除了,然后就变成这个错了。既然有错,那就解决呗,顺手百度了一个,下面看看stackoverflow的解决方案:

同步失败问题在stackflow上的解决

这个方法确实也适用于我,把ButterKnife降级之后就OK了。如果有其他更好的解决方法,欢迎私信我。

“一个问题的解决是为了更好的迎接下一个问题的出现”——鲁迅

解决方案1:把项目中依赖的ButterKnife降级到8.4.0

解决方案2:把gradle plugin版本降低至2.3.3 重新编译下就可以了


2、Unable to resolve dependency for:

出现了Unable to resolve dependency for:这个问题

第一眼看这个错的时候我以为我setting.gradle中没有依赖appCommon,看完之后明明确实依赖了,而且这是一个老项目,在AS2.3版本的时候很正常,然后我就知道这又是一个坑,无奈的又去上了一把Internet,然后试过网上说的在buildTypes中加入preview节点,然而并没有什么卵用,查了半天还是没有找到解决的方法,后来看着这段报错信息的时候,我看到了signingConfigs,我想到gradle中好像有这么个节点,抱着试一试的态度我删了那个节点,然后,卧槽卧槽卧槽,可以成功编译了,这是不是有一种躺着过坑的赶脚。如果有其他更好的解决方法,欢迎私信我,有偿给发红包

解决方案: 把项目中的signingConfigs节点删除掉就好了,如果你担心多渠道打包的事情,那么就用打包工具吧。


3、app:transformDexArchiveWithExterLibsDexMergeForDebug

app:transformDexArchiveWithExterLibsDexMergeForDebug

解决方案:将电脑中的.gradle目录删除掉(清除掉gradle缓存)重新build


4、gradle打包,自定义apk名称代码报错(Cannot set the value of read-only property 'outputFile' )

Error:(56, 0) Cannot set the value of read-only property 'outputFile' forApkVariantOutputImpl_Decorated{apkData=Main{type=MAIN, fullName=debug, filters=[]}} of type com.android.build.gradle.internal.api.ApkVariantOutputImpl.

解决方案: 修改文件名代码请这样写:(必须配置了productFlavors节点才可以这样写)

android.applicationVariants.all { variant ->variant.outputs.all {outputFileName = "driver_${variant.productFlavors[0].name}_v${variant.versionName}.apk"}
}

如果这样不行的话,请按下面这个写,这个是通用的:

android.applicationVariants.all { variant ->variant.outputs.all {outputFileName = rootProject.getName()+ "-" + buildType.name+ "-" + releaseTime()+ "-v" + defaultConfig.versionName+ "-" + defaultConfig.versionCode+ ".apk";}
}

=================================================

【附:】Android Studio3.0之前自定义输出apk名字的方式:
android {android.applicationVariants.all { variant ->variant.outputs.each { output ->output.outputFile = new File(output.outputFile.parent, rootProject.getName()+ "-" + buildType.name+ "-" + releaseTime()+ "-v" + defaultConfig.versionName+ "-" + defaultConfig.versionCode+ ".apk");}}
}

5、AAPT2 编译报错 AAPT2 error

Error:java.util.concurrent.ExecutionException: com.android.tools.aapt2.Aapt2Exception: AAPT2 error: check logs for details

解决方案:在gradle.properties中关闭APPT2 编译,加上下面这行代码就好了:

android.enableAapt2=false

注:如果是eclipse转到as上的项目,可能没有gradle.properties文件,请在项目根目录中手动创建。


6、apt插件问题

Error:Cannot choose between the following configurations of project :mylibrary:)
Error:Cannot choose between the following configurations of project :mylibrary:
- debugApiElements
- debugRuntimeElements
- releaseApiElements
- releaseRuntimeElementsAll of them match the consumer attributes:

解决方案:

  • 1.在project的build.gradle中删除
    classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
  • 2.在module的build.gradle中删除
    apply plugin: 'android-apt'
  • 3.将module的build.gradle文件中的dependency的apt 'com.jakewharton:butterknife-compiler:8.1.0'
    改为 annotationProcessor 'com.jakewharton:butterknife-compiler:8.1.0'

7、Execution failed for task ':app:preDebugAndroidTestBuild

Error:Execution failed for task ':app:preDebugAndroidTestBuild'.
Conflict with dependency 'com.android.support:support-annotations' in project ':app'.
Resolved versions for app (26.1.0) and test app (27.1.1) differ. See
https://d.android.com/r/tools/test-apk-dependency-conflicts.html for details.

原因:
发生这种类型的错误,原因是当我们修改了.build中的compileSdkVersion,产生所依赖的dependency与当前版本不一致导致的。

解决方案:点击 Build->Rebuid Project 菜单,重新编译一下项目,就OK了,如果还不行,先点击 Build->Clean Project 菜单,然后再点击 Build->Rebuid Project 菜单。


8、Error:Execution failed for task ':react-native-update:compileDebugNdk'.

Error: Flag android.useDeprecatedNdk is no longer supported and will be removed in the next version of
Android Studio. Please switch to a supported build system.
Consider using CMake or ndk-build integration. For more information, go to:
[https://d.android.com/r/studio-ui/add-native-code.html#ndkCompile](https://link.jianshu.com?
t=https%3A%2F%2Fd.android.com%2Fr%2Fstudio-ui%2Fadd-native-code.html%23ndkCompile)
To get started, you can use the sample ndk-build script the Android
plugin generated for you at:
D:\react-native\yiguan_rn_demo\node_modules\react-native-update\android\build\intermediates\ndk\debug\Android.mk
Alternatively, you can use the experimental plugin:
[https://developer.android.com/r/tools/experimental-plugin.html](https://link.jianshu.com?
t=https%3A%2F%2Fdeveloper.android.com%2Fr%2Ftools%2Fexperimental-plugin.html)
To continue using the deprecated NDK compile for another 60 days, set
android.deprecatedNdkCompileLease=1521518279826 in gradle.properties

解决方案:在gradle.properties文件,把android.useDeprecatedNdk去掉,换成android.deprecatedNdkCompileLease=1521518279826 (后面这个数字按错误日志里的填)

9、Error:Resource shrinker cannot be used for libraries.

Error:All flavors must now belong to a named flavor dimension. Learn more at https://d.android.com/r/tools/flavorDimensions-missing-error-message.html

错误提示如下图所示:

其实这个两个问题:

Error:Resource shrinker cannot be used for libraries.原因是library中使用了混淆,并移除了无用的资源文件,解决办法:把该library中的shrinkResources字段移除就可以了,如下图所示:

Error:All flavors must now belong to a named flavor dimension.原因是使用了productFlavors分包,解决方法:在build.gradle中的defaultConfig中添加一个flavorDimensions "XXX"就可以了,后面的XXX一般是跟你的versionCode相同,入下图所示:


本文转自 [Android Studio3.0更新之路(遇坑必入)],另外也加入了一些自己遇到的坑写在了里面。(https://mp.weixin.qq.com/s/VzMHjmKcI0hOHYrWK3Eqrw)
参考文章:https://www.jianshu.com/p/15afb8234d19


最后,推荐一本书给大家看看,希望对大家有帮助。

【好消息】我的微信公众号正式开通了,关注一下吧!
关注一下我的公众号吧

开发工具总结(4)之Android Studio3.0填坑指南相关推荐

  1. 关于Android studio3.0的坑之butterknife 8.4.0

    关于Android studio3.0的坑之butterknife 8.4.0 大家都知道新版本问题很多,butterknife 8.4.0版本无法直接使用要配置很多东西: 首先得安装butterkn ...

  2. 关于Android studio3.0的坑之butterknife 7.0.1(低版本)

    关于Android studio3.0的坑之butterknife 7.0.1(低版本) 我们在AS3.0里面是无法直接使用butterknife 内库插件的,会报错,如下图: 接下来看看怎么设置呢? ...

  3. Android 7.0脱坑指南

    本文已授权微信公众号:鸿洋(hongyangAndroid)原创首发. Android适配系列: Android 6.0 的动态权限管理 Android 7.0脱坑指南 Android 8.0适配指北 ...

  4. 职坐标 Android,IOS开发入门之MacOs安装Android Studio3.0的常见问题及解决方案

    本文将带你了解IOS开发入门MacOs安装Android Studio3.0的常见问题及解决方案,希望本文对大家学IOS有所帮助. MacOs安装Android   Studio3.0的常见问题及解决 ...

  5. Android Studio3.x填坑路

    序言 自从更新升级了AS后,各种报错,各种的配置问题,让人一脸懵逼,甚至有点后悔升级了:但是出了问题还是要去解决问题,填坑之路就此开始. 欲知后事如何,请移驾:Android Studio3.0正式版 ...

  6. Android微信视频播放填坑指南

    某日,正在愉快着敲着代码的我,突然发现了一个诡异的现象,在Android微信中,只要视频播放后,不能把普通dom元素(div等)覆盖在video上,就算是z-index为9999999也无法实现,如图 ...

  7. 开发工具总结(2)之全面总结Android Studio2.X的填坑指南

    前言:好多 Android 开发者都在说Android Studio太坑了,老是出错,导致开发进度变慢,出错了又不知道怎么办,网上去查各种解决方案五花八门,有些可以解决问题,有些就是转来转去的写的很粗 ...

  8. Android Studio3.0中dependencies依赖由compile变为implementation的区别

    前言 Android Studio版本更新至3.0了,更新后,连带着com.android.tools.build:gradle 工具也升级到了3.0.0,在3.0.0中使用了最新的Gralde 4. ...

  9. android studio3.0——Error:All flavors must now belong to a named flavor dimension. Learn more at ...

    android studio3.0正式版在千呼万唤中于2017年10月下旬正式发布,各种变化就不说了,目前还没全面了解,只是知道起码不用插件就能用kotlin开发了<迷之微笑>. 和大多数 ...

最新文章

  1. 学习自然语言处理,一张图就够了
  2. python机器学习、数据分析常用第三方库(实时更新)
  3. 整数因子分解c语言递归,整数因子分解:计算一个整数所有的分解式(递归实现)...
  4. 01-单一职责原则(SPR)
  5. [转]自定义SqlMembershipProvider方法
  6. Strus2第一次课:dom4j操作xml
  7. 什么是python基础教程-最好的Python入门教程是?
  8. php 检查货币类型_PHP如何获取货币汇率-百度经验
  9. mentohust找不到服务器 重启认证,mentohust官方使用说明(全+转)
  10. c语言变量报存在bss段,浅谈c语言代码段 数据段 bss段
  11. 文件下载之断点续传(客户端与服务端的实现)
  12. 目前主流的电脑操作系统
  13. 七、D3D12学习笔记——根签名动态顶点缓冲区
  14. java excel 图表_java POI实现向Excel中插入图片
  15. linux编写脚本读取txt文件,用bash脚本或者批处理 bat脚本 读取一个目录下.txt文件第一行内容存放到新文件a.txt...
  16. 最近20年天文学有什么重大的进展
  17. Buffon投针实验 · 数学的直观理解 · 基础知识很重要
  18. 校园二手商城小程序,手把手带你开发一款云开发版商城小程序,校园二手微信小程序,可升级社区团购小程序
  19. 验证本地缓冲区溢出漏洞攻击
  20. 祥云杯2022 writeup

热门文章

  1. 脑电传感器并不复杂,那精度呢?
  2. 刘忠范院士:新型研发机构建设成了口号
  3. 云计算与边缘计算协同发展的一些思考
  4. 2018 年最引人注目的科学时刻,《科学》杂志选出14 张年度最佳科学照片
  5. 谷歌自动驾驶是个大坑,还好中国在构建自己的智能驾驶大系统
  6. 程序员圈的鄙视链 | 每日趣闻
  7. 王兴:一鸣开始动手了
  8. Eclipse的java代码出错:The import org.apache cannot be resolved
  9. NHibernate 2.0 Beta 1 Released和一些工具
  10. 虚拟机类加载机制的了解