升级gradle版本之后小米手机调试安装失败

升级Android Studio 2.3后,使用小米MIX进行应用调试时遇到安装失败的问题,错误提示为“Failed to establish session”。通过对比调试过程发现,此问题可能与MIUI的优化设置有关,关闭该设置虽能解决问题,但可能影响release包在开启MIUI优化的设备上的表现。

转载地址:https://zhuanlan.zhihu.com/p/25572184?utm_source=qq&utm_medium=social


昨天刚入手小米MIX,也恰好升级了AS2.3,在使用MIX调试运行的时候,却发现程序总是安装不上,报错信息是这样的:

点OK卸载之后却又提示卸载失败,然后调试安装就中断了,这就很尴尬,很明显关键字是

Failed to establish session

Google 搜一下,发现就算SO上面的解决办法,也是说在开发者选项中把小米的“MIUI优化”关掉,原因未知。试了一下关掉MIUI优化确实有用,但这我就不敢关了啊,万一发release包之后在开MIUI优化的机子上嗝屁了那我不是完蛋?

只能自己查一下问题,在安装过程中,我发现run信息是这样的

换到我的Nexus 5x上安装

一切正常


突然联想到AS2.3升级后的新特性

构建系统:支持新的 Gradle 插件 2.3.0 。有一些显着的变化:

  • 默认情况下启用 dex 文件的用户缓存,这将加快构建

  • 非常大的项目的配置时间应该明显更快

  • 对于即时运行,“启动延迟”(大应用程序在启动时停顿几秒钟)应该消失

  • 即时运行使用针对 Android N 的“APK拆分”,这比它用于定位较旧的平台的类加载器技巧更可靠

我恰好把手头上这个项目升级了gradle,于是我找了个老项目跑了一下看看

很明显老项目并没有这个“split-apk”的安装过程。这是AS2.3之后的新特性。那么基本可以确定在安装Split APKs的时候,MIUI优化对slice apk做了什么操作,返回了“failed to establish session”,让IDE判断需要卸载安装,但这个时候手机上还没有真正的apk,然后就理所当然的卸载失败了。

目前向MIUI反馈还没有什么回复嘛,在这个问题修复之前,升级了AS2.3的朋友们新项目要用小米手机调试的话,可以先考虑用老项目的Gradle覆盖一下把Gradle降级,应该不会出问题。


<think>首先,用户查询是:"我想查找在Ubuntu系统上升级Gradle版本的方法"。用户提供的引用包括[1]、[2]和[3],这些是关于在Ubuntu上安装Gradle的指南,但不是直接关于升级的。我需要基于系统指令和用户需求来回答。 关键系统指令: - 所有行内数学表达式必须使用$...$格式。 - 独立公式使用$$...$$并单独成段。 - LaTeX语法正确。 - 使用中文回答。 - 生成相关问题。 - 在回答中引用的段落末尾自然地添加引用标识,如[^1]。 用户提供的引用: - [^1]: 提到卸载旧版并安装最新版Gradle。 - [^2]: 是关于在Ubuntu 20.04上安装Gradle的教程。 - [^3]: 描述了配置Gradle环境变量的步骤。 用户的问题是关于升级Gradle版本,而不是初始安装。用户提到了引用[1]中说"卸载当前版本安装最新版本",这类似于升级。引用[2]和[3]更专注于安装,但可以借鉴。 在Ubuntu上升级Gradle的常见方法: 1. 卸载旧版本。 2. 下载并安装最新版本。 3. 配置环境变量。 从引用中: - [^1] 建议卸载并安装版本。 - [^3] 展示了配置环境变量的命令。 回答结构: - 回答应该清晰、逐步指导用户。 - 既然是中文回答,使用中文。 - 最后生成相关问题。 - 添加引用标识自然地。 步骤大纲: 1. 卸载现有的Gradle(如果已安装)。 2. 下载最新的Gradle版本。 3. 安装和解压。 4. 配置环境变量。 5. 验证安装。 参考引用: - 在描述卸载时,引用[^1]。 - 在配置环境变量时,引用[^3]。 生成相关问题: - 基于主题,如如何管理多个版本、常见问题等。 完整回答: - 开头解释过程。 - 逐步命令。 - 结束生成问题。 使用命令行示例。 确保LaTeX正确:没有数学表达式在这个上下文中,所以可能不需要,但如果有计算等,可以使用。这里主要是命令,所以可能不需要LaTeX。 最终输出: - 回答问题。 - 添加相关问题。 </think>以下是在Ubuntu系统上升级Gradle版本的详细方法。升级Gradle通常涉及卸载旧版本、下载最新版本、配置环境变量并验证。我将基于提供的引用(如卸载旧版和配置环境变量的步骤)逐步解释过程。整个过程在终端中操作,建议使用管理员权限(如`sudo`)。 ### 步骤 1: 卸载旧版本Gradle 首先,移除系统中已安装的旧版本Gradle。这能避免版本冲突(例如,旧版本路径残留)。引用[1]提到需要手动卸载当前版本[^1]。 - 打开终端。 - 检查当前安装Gradle版本: ```bash gradle -v ``` 如果输出类似`Gradle 1.4`,则确认需要升级。 - 卸载Gradle: - 如果Gradle是通过包管理器(如apt)安装的: ```bash sudo apt remove gradle ``` - 如果是手动安装(常见方式),直接删除相关文件和目录: ```bash sudo rm -rf /usr/bin/gradle # 删除可执行文件 sudo rm -rf /opt/gradle # 删除安装目录(或自定义路径) ``` 确保移除所有残留文件以避免干扰新版本。 ### 步骤 2: 下载最新版本Gradle 访问Gradle官网下载最新稳定版。引用[2]强调了下载最新版的必要性[^2]。 - 在终端中获取最新版URL: ```bash wget https://services.gradle.org/distributions/gradle-8.7-bin.zip # 以Gradle 8.7为例,替换为最新版本号 ``` 实际版本号请查阅[Gradle官网](https://gradle.org/releases/)。例如,最新版为8.7时,URL应为`gradle-8.7-bin.zip`。 - 下载完成后,解压文件: ```bash unzip gradle-8.7-bin.zip # 替换为你的文件名 sudo mv gradle-8.7 /opt/gradle # 移动到系统目录(推荐/opt) ``` ### 步骤 3: 配置环境变量 升级后必须更新环境变量,确保系统识别新版本。引用[3]详细描述了配置步骤[^3]。 - 编辑环境变量文件(如`~/.bashrc`或`~/.bash_profile`): ```bash nano ~/.bashrc # 或使用其他编辑器如vim ``` - 在文件末尾添加以下内容(替换路径为你的安装路径): ```bash # Gradle环境变量 export GRADLE_HOME=/opt/gradle # 替换为你的解压路径,例如/home/user/gradle-8.7 export PATH=$PATH:$GRADLE_HOME/bin ``` - 保存文件并加载配置: ```bash source ~/.bashrc ``` ### 步骤 4: 验证升级 确认新版本正确安装: - 检查版本: ```bash gradle -v ``` 输出应显示最新版本(如`Gradle 8.7`)。 - 可选:清除下载文件以释放空间: ```bash rm gradle-8.7-bin.zip ``` ### 注意事项 - **权限问题**:在解压或移动文件时,如果遇到权限错误,使用`sudo chmod 777 /path/to/folder`授予完整权限(引用[3]建议)[^3]。 - **兼容性**:确保新版本兼容你的Java版本Gradle需要JDK)。检查Java版本: ```bash java -version ``` 如果缺失JDK,先安装(引用[3]提及)。 - **替代方法**:如果使用SDKMAN!等工具,可通过`sdk install gradle`一键升级,但手动方法更通用。 升级后,Gradle项目会自动使用新版本。引用中提到在Eclipse中创建项目失败可能与旧版本相关,升级后应解决[^1]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值