android studio 3.0 升级问题,遇到的坑;

Android Studio 3.0 升级 配置修改详解 更新完Android Stuido 3.0 稳定版之后,打开项目会收到如下提醒 谷歌强烈建议我们更新Android Gradle Plugin 3.0 和 Gradle 4.1,所以我就习惯性的点击了Update。   结果……导致了一系列的修改。 1、Flavor Dimensions 配置 项目中用了多渠道,3.0之前配置多渠道:productFlavors配置 阅读详情

项目迁移到Android studio 3.0.0问题,官方提供资料链接:
https://developer.android.com/studio/build/gradle-plugin-3-0-0-migration.html

1、Error:(33, 0) Cannot set the value of read-only property 'outputFile' for ApkVariantOutputImpl_Decorated{apkData=Main{type=MAIN, fullName=Launcher3Debug, filters=[]}},的错误;
(1)在项目app下的build.gradle中的android标签中做如下配置:


android.applicationVariants.all { variant ->
variant.outputs.each { output ->
def outputFile = output.outputFile 
if (outputFile != null && outputFile.name.endsWith('.apk')) { 
// 这里修改apk名称 
def fileName = outputFile.name.replace("app", "xxoo_${defaultConfig.versionName}.${defaultConfig.versionCode}_${releaseTime()}") 
output.outputFile = new File(outputFile.parent, fileName) 
}
}
}

(2)在项目app下的build.gradle中的android标签中做如下配置,如果碰到以下错误:


Cannot set the value of read-only property 'outputFile’….

参考文章: Android Gradle 3.0.0-alpha2 plugin, Cannot set the value of read-only property 'outputFile'

请尝试下边的操作方式:
android.applicationVariants.all { variant ->
variant.outputs.all { output ->
def outputFile = output.outputFile 
if (outputFile != null && outputFile.name.endsWith('.apk')) { 
// 这里修改apk名称 
def fileName = outputFile.name.replace("app", "xxoo_${defaultConfig.versionName}.${defaultConfig.versionCode}_${releaseTime()}") 
outputFileName = new File(outputFile.parent, fileName) 
}
}
}

2、Unable to resolve dependency for:


 Error:Unable to resolve dependency for ':@Launcher3DefaultConfig/compileClasspath': Could not resolve project :textlibs.
<a href="openFile:E:/launcher/native_launcher/native_launcher/build.gradle">Open File</a><br><a href="Unable to resolve dependency for &#39;:@Launcher3DefaultConfig/compileClasspath&#39;: Could not resolve project :leagoolibs.">Show Details</a>

(1)setting.gradle中没有依赖appCommon和textlibs看完之后明明确实依赖了,而且这是一个老项目,在AS2.3版本的时候很正常然后我就知道这又是一个坑,无奈的又去上了一把Internet,然后试过网上说的在buildTypes中加入preview节点,然而并没有什么卵用,查了半天还是没有找到解决的方法后来看着这段报错信息的时候,我看到了signingConfigs和DefaultConfig,我想到gradle中好像有这么个节点,抱着试一试的态度我删了那个节点,然后,卧槽卧槽卧槽,可以成功编译了


3、app:transformDexArchiveWithExterLibsDexMergeForDebug

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

参考stackoverflow  :https://stackoverflow.com/questions/46233560/getting-dexarchivemergerexception-when-adding-leanback-library

解决方案详解在这里 :  https://asyoulook.com/computers%20&%20internet/android-unable-to-merge-dex/82120

4.解决Error:All flavors must now belong to a named flavor dimension. Learn more at https://d.android.com

这个问题是Android studio升级到3.0之后,运行的时候会提示gradle要升级到3.5版本才能编译。于是我把我的gradle升级到了

 gradle-4.1-milestone-1 版本,是2017年7月份最新版本了。
于是我把主程序的build.gradle中的gradle版本改成了这个,具体指定哪个版本我也不知道,于是就写了个3.0+
 dependencies {
        classpath 'com.android.tools.build:gradle:3.0+' 
}
然后再次编译,又发现了毒。
提示: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 
这个一个错误,意思是:所有的flavors都必须属于同一个风格。
=。=懵逼
去翻墙看了它提供的地址才知道:
 Plugin 3.0.0 includes a new dependency mechanism that automatically matches variants when consuming a library. This means an app's debug variant automatically consumes a library's debug variant, and so on. It also works when using flavors—an app's redDebug variant will consume a library's redDebug variant. To make this work, the plugin now requires that all flavors belong to a named flavor dimension —even if you intend to use only a single dimension. Otherwise, you will get the following build error:
  1. Error:All flavors must now belong to a named flavor dimension.  
  2. The flavor 'flavor_name' is not assigned to a flavor dimension.  

 To resolve this error, assign each flavor to a named dimension, as shown in the sample below. Because dependency matching is now taken care of by the plugin, you should name your flavor dimensions carefully. For example, if all your app and library modules use the foo dimension, you'll have less control over which flavors are matched by the plugin. 
  1. // Specifies a flavor dimension.  
  2. flavorDimensions "color"  
  3.   
  4. productFlavors {  
  5.      red {  
  6.       // Assigns this product flavor to the 'color' flavor dimension.  
  7.       // This step is optional if you are using only one dimension.  
  8.       dimension "color"  
  9.       ...  
  10.     }  
  11.   
  12.     blue {  
  13.       dimension "color"  
  14.       ...  
  15.     }  
  16. }  

大致是说,Plugin 3.0.0之后有一种自动匹配消耗库的机制,便于debug variant 自动消耗一个库,然后就是必须要所有的flavor 都属于同一个维度。
为了避免flavor 不同产生误差的问题,应该在所有的库模块都使用同一个foo尺寸。
= 。=还是懵逼。说一堆依然不是很理解。
但是我们从中已经知道解决方案了:
在主app的build.gradle里面的
 defaultConfig {
 targetSdkVersion:***
minSdkVersion :***
versionCode:***
 versionName :***
//版本名后面添加一句话,意思就是flavor dimension 它的维度就是该版本号,这样维度就是都是统一的了
flavorDimensions "versionCode"
}

5、android studio 3.0 升级问题:原来module中的包没法引用

问题

Android studio升级到3.0以上之后,也随之升级到了3.0.0版本。

classpath 'com.android.tools.build:gradle:3.0.0'
 
  • 1

在3.0版本中,compile 指令被标注为过时方法,而新增了两个依赖指令,一个是implement 和api,这两个都可以进行依赖添加,但是有什么区别呢?

implementation和api的区别。

新建工程默认生成的app的build.gradle文件中的依赖:

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation 'com.android.support:appcompat-v7:26.1.0'
    implementation 'com.android.support.constraint:constraint-layout:1.0.2'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.1'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
}

api 指令

完全等同于compile指令,没区别,你将所有的compile改成api,完全没有错。

implementation指令

这个指令的特点就是,对于使用了该命令编译的依赖,对该项目有依赖的项目将无法访问到使用该命令编译的依赖中的任何程序,也就是将该依赖隐藏在内部,而不对外部公开。

简单的说,就是使用implementation指令的依赖不会传递。
例如,有一个module为testsdk,testsdk依赖于gson:

implementation 'com.google.code.gson:gson:2.8.2'

这时候,在testsdk里边的java代码是可以访问gson的。

另一个module为app,app依赖于testsdk:

implementation project(':testsdk')

这时候,因为testsdk使用的是implementation 指令来依赖gson,所以app里边不能引用gson。

但是,如果testsdk使用的是api来引用gson:

api 'com.google.code.gson:gson:2.8.2'

则与gradle3.0.0之前的compile指令的效果完全一样,app的module也可以引用gson。这就是api和implementation的区别。

建议

在Google IO 相关话题的中提到了一个建议,就是依赖首先应该设置为implementation的,如果没有错,那就用implementation,如果有错,那么使用api指令。使用implementation会使编译速度有所增快。

参考:

http://blog.youkuaiyun.com/soslinken/article/details/73114637

https://zhuanlan.zhihu.com/p/27475883

https://stackoverflow.com/questions/44413952/gradle-implementation-vs-api-configuration

http://blog.youkuaiyun.com/JF_1994/article/details/52781751














Android studio 安装3.0遇到的坑 1.JDK安装和配置:网上太多相关教程了,在这里不重复,简单的提一下要点,Android Studio3.0需要Gradle 4.1以上的版本要求,同样对jdk也有要求,要求1.8以上的版本,如果你的jdk版本在1.8以下,可能就是jdk版本的问题。 2.Gradle安装和配置: 2.1 下载地址 http://www.gradle.org/downloads 2.2选择gradle 阅读详情

相关推荐

升级 Android Studio 3.4 和 gradle 插件 3.4.0 引发的问题

升级 Android Studio 3.4 和 gradle 插件 3.4.0 引发的问题 Android Studio: 3.4 gradle 插件: 3.4.0 gradle: 5.1.1 升级之后编译项目,遇到错误如下: Build project > Build failed: Caused by: com.android.tools.r8.uti...

凹凸曼一枚的学习之路 4258

Could not resolve com.google.code.gson:gson:2.8.2

需要用到Gson,在Project Structure------>Dependencies--->library dependency添加依赖 添加了Gson的依赖之后,报错:Could not resolve com.google.code.gson:gson:2.8.2 起初以为是没打开HTTP Proxy,打开之后,依然报这个错 查看gradle.properties发现...

qq_32973061的博客 1万+

Android Studio2.2.直接导入config升级到3.0的

安装包的下载http://www.android-studio.org/开始安装升级说明一下子: 我一直在使用的是AS2.2.2版本,工作的需要,我想在电脑是有2.2.2的版本和3.0的版本.注意的是下面的那个选项就是选中会卸载掉已经安装的旧的版本,我们不要选择,后期会有AS的安装的目录我们选择我们单独的位置来区别,之后的就是next点击.点击安转完成后开始启动:我们看看我们的安转目录:我们在看看我

kunkun5love的博客 2632

报错:Cannot set the value of read-only property ‘additionalSourceDirs‘ for task ‘:jacocoRootReport‘ of

完整报错: Build file ‘F:\mycode\kafka-0.10.1.0-src\build.gradle’ line: 297 A problem occurred evaluating root project ‘kafka-0.10.1.0-src’. Cannot set the value of read-only property ‘additionalSourceDirs’ for task ‘:jacocoRootReport’ of type org.gradle.testi

Chenftli的博客 2856

记录升级Android studio3.0遇到的一些问题和解决方法

一、升级Android studio3.0后新建一个project。1.目录结构2.build.gradle文件3.gradle-wrapper.properties文件4.app/build.gradle文件划重点:(1)buildToolsVersion 不见了(2)依赖 compile 换成了 implementation(实现)compile和apiapi完全等同于compile,二者没有...

christyleylh的博客 1489

Vitis HLS 学习指南与实践教程

Vitis HLS 学习指南与实践教程摘要:本文系统介绍了AMD Vitis HLS工具及其应用。HLS技术将C/C++代码自动转换为硬件描述语言,显著提升FPGA开发效率(5-10倍)。文章对比了HLS与传统RTL设计的优势,包括抽象级别高、开发周期短、代码重用性强等特点。详细讲解了Vitis HLS工具链的核心功能,包括支持的C/C++特性(如任意精度数据类型)、开发流程(项目创建-代码编写-仿真-综合)以及关键优化技术(流水线、循环展开、数组分割等编译指示)。通过具体代码示例展示了HLS设计方法,为F

weixin_44707118的博客 1401

Android引入Jacoco遇到的问题

Android引入Jacoco遇到的问题

NightWatchers的博客 1888

DINOv3 网络结构解析:从 ViT 到 ConvNeXt 的双路线设计

本文深入解析了DINOv3网络结构的双路线设计,包括ViT和ConvNeXt两种主干架构。ViT路线通过轴向旋转位置编码解决了传统ViT对固定分辨率的依赖,而ConvNeXt路线则优化了卷积设计,提升了实时处理能力。文章还探讨了Gram Anchoring、混合自监督目标等关键技术,展示了DINOv3在多任务和多模态应用中的强大潜力。

weixin_29214199的博客 563

Cannot set the value of read-only property 'outputFile'

更新Android Studio 3.0之后,出现Cannot set the value of read-only property ‘outputFile’报错,也就是用来打包后重命名的gradle出现了问题旧版本AS 2.3时用的代码:applicationVariants.all { variant -> variant.outputs.each { output ->

依风听雨锋的专栏 2万+

先进半导体材料与器件Chapter3

Chapter3 异质结双极晶体管(HBT) 作者:毛茏玮 / Saint 掘金:https://juejin.im/user/5aa1f89b6fb9a028bb18966a 微博:https://weibo.com/5458277467/profile?topnav=1&wvr=6&is_all=1 GitHub:github.com/saint-000 知乎:https:/...

一个会写代码的烤鸭 5802

别再死磕MuJoCo了!用PyBullet+Stable-Baselines3搞定机械臂强化学习(保姆级环境配置)

本文详细介绍了如何使用PyBullet和Stable-Baselines3构建机械臂强化学习系统,绕过昂贵的MuJoCo许可壁垒。通过实战指南,包括环境配置、机械臂Gym环境构建、训练策略与调优技巧,帮助开发者快速掌握机器人强化学习技术,提升智能控制效率。

weixin_42667269的博客 264

关于android studio升级3.0以后自动输出apk名的报错问题

升级gradle到3.0.1的时候,app.gradle报了如下几种错误错误:Could not get unknown property 'outputFile' for BuildType_Decorated{name=output, debuggable=false, testCoverageEnabled=false, jniDebuggable=false, pseudoLocalesE...

sunchaohui5741的博客 5663

Agent框架系列:1-低代码智能体平台深度解析Dify、Coze、n8n

Dify、Coze 和 n8n 是三大主流低代码智能体平台,各有侧重。Dify 适合企业级 AI 应用,具备强大的 RAG 和知识库管理能力,技术栈为 Python + React。Coze 由字节推出,主打零代码和快速原型开发,集成 60+ 插件,极适合非技术用户。n8n 以工作流自动化和系统集成为核心,支持 400+ 外部应用,基于 Node.js + Vue,扩展性极强。选择建议:非技术团队选 Coze,AI 应用选 Dify,复杂自动化与集成选 n8n。可根据实际需求混合使用,最大化平台优势。

3078

升级了AndroidStudio3.0之后遇到的奇怪问题

趁着公司新版本还没开始的时候,把as升级到了3.0。升级完成是没发现什么问题,也没发现有什么特别的好处。 没发现问题主要是因为有各种踩坑指南,一路都把坑都填平了,升完级心里还美滋滋的。 过了不久,要更新版本了。做好需求之后,打包给测试,这个时候坑就来了: 一、编译release需要选择V1,v2。不然会出现无法安装的情况 二、项目里面用了原生的Json解析,需要在混淆规则中加入-keep ...

l_user的专栏 359

PCL点云DBSCAN聚类算法:基于密度的点云聚类

核心点是在给定半径内拥有足够多邻居点的点,边界点是在给定半径内没有足够多邻居点但是位于核心点的邻域内的点,噪声点是既不是核心点也不是边界点的点。本文将介绍PCL中的DBSCAN(基于密度的空间聚类应用噪声)算法,用于点云数据的聚类。上述示例代码首先从PCD文件中读取点云数据,并设置了DBSCAN聚类的参数,包括邻域搜索半径(epsilon)和邻域内最小点数(min_points)。需要注意的是,示例代码中的点云数据格式为pcl::PointXYZ,如果使用其他类型的点云数据,需要相应地修改代码。

LpmShell的博客 1237

【麒麟系统】Rsync文件复制与同步工具

本文摘要: Rsync是一款Linux/Unix系统标配的高效文件同步工具,支持增量传输、SSH加密、断点续传等核心功能,相比SCP具有显著优势。文章详细解析了Rsync的五种标准语法格式和常用参数组合,重点介绍了本地同步、远程SSH同步(推送/拉取)的实操方法,并提供了密钥免密登录配置方案。针对企业运维场景,还讲解了文件过滤、镜像同步(--delete)、迁移同步(--remove-source-files)、空运行预校验(--dry-run)等高级功能,以及带宽限速等优化技巧,帮助用户安全高效地完成各类

信创运维工程师 · 银河麒麟 & 容器实战 | 金融生产环境迁移·等保加固 | 142篇原创·17万+阅读 997

Android Studio3.0升级gradle遇到的坑

升级了android studio3.0后,对于文件的搜索和方法中参数的使用,是一个重大的改变,但升级gradle后,缺出现很多的问题。个人整理一下,希望对大家有所帮助。 说明:我原来的环境是as2.3+gralde2.14.1+plugin2.2.3 升级后的环境是:as3.0+gradle4.2.1+plugin3.0.0 1、 Error:(82, 0) Ca

刘文龙 4010

被滑块虐了3个月!我终于写出了零失败的Python滑块验证码通杀方案(AI识别+真人轨迹)

缺口识别的偏移量一定要算对:滑块的初始位置一般在图片左侧,宽度约50像素,一定要减去这个初始宽度,不然会滑多了;绝对不要用Selenium的drag_and_drop方法:这个方法是匀速滑动,直接被风控秒识别,必须自己分步控制鼠标移动;滑动前后必须加停顿:真人按住滑块会停0.1-0.3秒再开始滑,松开之前也会停0.05-0.1秒,不要按下去立刻就滑,滑完立刻就松;不要每次都滑的完美无缺:可以设置10%的概率故意滑错一次,然后刷新验证码重新滑,更像真人;无头模式通过率极低。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 500

android studio项目gradle从3.0.0升级到7.4.2的详细步骤

最近因项目需要必须要将gradle升级到7.4.2,升级过程一波三折,问题太多,因此将详细过程记录下来,为以后升级做参考。我的android studio目前的版本是Arctic Fox | 2020.3.1。

weixin_48336327的博客 3628

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

你升级Android Studio 3.0正式版了吗?来看看这些坑!

你升级Android Studio 3.0正式版了吗?来看看这些坑!

鑫鱻的博客 1511

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Android Studio从2.2.3升级到3.0.1遇到的问题

昨天开会时,领导突然冒出一句“项目停止开发”,做了近一年的项目就这样草草结束。离过年还有一个多月呢,就没什么事了。左右无事,就来升级下AS。(补充于2018-01-15:刚才又看到的博客https://www.jianshu.com/p/15afb8234d19) 开发阶段AS使用的版本是2.2.3的,升级使忘了使用AS的Help-->Check for update来直接升级,就将AS先卸载了

北极冰神殿的博客 5415

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

android studio 升级到 3.5.0,遇到的问题和解决方案

一直忙于开发as一直没有升级,这几天有时间正好as发布新版本3.5.0,把as升级的到3.5.0也遇到一系列问题,在这里发问题分享一下,大家可以借鉴一下。 1、依赖包的引用问题 (1)compile 不推荐使用 ,api 是和compile完全等效的,怕出问题的话可以用api替换,表示其他的模块也可以引用。 如果确定只在本模块中引用可以用 implementation替换,mod...

old_land的博客 1万+

安卓项目3.0.1升级到最新的3.4.0

安卓项目3.0.1升级到最新的3.4.0升级背景: 升级背景: 项目比较大,也比较老,想用点新的api,布局,或者什么新功能的都不可以,所以觉醒把项目从2.3.3升级到了3.0.1然后发现ConstraintLayout这个用不了,然后又再次进行了升级,吧Android Studio升级到最新3.4 ,把build:gradle 升级到了3.4.0,同时Gradle升级到了5.1.1 本篇文章用于...

SummerCloudXT的博客 2116

升级安卓开发环境到Android Studio和Genymotion

2014新年第一天,全面升级安卓开发环境。主要做两件事:1. 把IDE从eclipse转到Android Studio(又去掉了一个与IBM Rational的联系,多少有些感伤,可是,旧的不去新的不来啊),将以前的安卓projects移到新的IDE下 2. 使用Genymotion 替代安卓自带的emulator。 安装Genymotion 1. 下载安装Genymotion之前需要免费注册

swingseagull的专栏 1万+

Android Studio升级3.0之后趟的坑

看了android studio3.0的特性分析的相关文章(https://mp.weixin.qq.com/s/2XmVG4mKEDX6-bvZ0vvmcw 等)后,决定升级(我当前版本是2.3.3).基于以往升级所遇的坑的经验,我在升级前详细搜索了查看了别人的升级之旅,避坑…嗯 呵呵呵 升级过程中遇到的一些问题,都能按找网上已有的方法解决

LRP的博客 3474

android studio升级到3.0之后的一些配置变化

上周android 3.0稳定版终于面世,自己也是更新了一波。但是这次的版本算是一个大版本了,直接从2.3.3到了3.0。所以跟之前升级相比也有很多配置方面的变化,现在记录如下。         1、升级完成之后首先是会提示升级gradle插件到3.0.0,而gradle版本升级到4.1,如下图所示:  直接点击update就好了,其实这里修改的是两个地方,一个是project目录下的gr

和小胖 2961
上一篇: git 常用命令使用实践总结-wish
下一篇: Android7.1.1之去掉workspace顶部的快速搜索条Qsb
秋天不落叶-
博客等级 码龄13年 65粉丝 65原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值