macbook m1 JDK环境与AndResGuard编译遇到的Gradle同步报错
一.背景
入手了apple macbook m1芯片版本,迫不及待的想配置开发环境进行开发调试,但是却遇到了如下Android Studio同步报错问题:
二.复现步骤
2.1.配置jdk
首先下载jdk:
https://cdn.azul.com/zulu/bin/zulu11.50.19-ca-jdk11.0.12-macosx_aarch64.dmg
(这里为什么要用zulu jdk呢,因为zulu提供了m1芯片版本的openjdk,如果使用oracle jdk或者其他的openjdk,则是intel架构的版本,虽然m1可直接运行,但是指令转换始终会有性能损耗,故选择了专门为m1架构适配编译的zulu jdk)
然后配置jdk环境
export JAVA_HOME=/Library/Java/JavaVirtualMachines/zulu-11.jdk/Contents/Home
export PATH=$PATH:$JAVA_HOME
最后配置Studio的jdk为zulu的:
2.2.导入使用了AndResGuard的项目
配置好了m1的Android Studio开发环境后,开始导入一个使用了AndResGuard的项目,然后问题出现了:
三.问题定位
3.1日志分析
通过错误日志,可以看到是找不到SevenZip-osx-aarch_64.exe文件:
A problem occurred configuring project ':app'.
> Could not resolve all files for configuration ':app:AndResGuardLocatorSevenZip'.> Could not find SevenZip-osx-aarch_64.exe (com.tencent.mm:SevenZip:1.2.13).Searched in the following locations:https://mirrors.tencent.com/nexus/repository/maven-public/com/tencent/mm/SevenZip/1.2.13/SevenZip-1.2.13-osx-aarch_64.exe
但是一般maven仓库报错是报aar 或者jar找不到,这个exe是什么鬼,先拉源码断点调试下
3.2.断点调试
先clone AndResGuard源码
git clone https://github.com/shwenzhang/AndResGuard.git
导入Studio,做好gradle插件调试配置
这里主要是添加一个Remote JVM Debug;
(注意现在已经打开了两个项目,一个是使用了AndResGuard的项目,一个是AndResGuard源码项目)
这时候通过命令行cd到使用了AndResGuard插件的项目执行如下命令
./gradlew app:assembleDebug -Dorg.gradle.daemon=false -Dorg.gradle.debug=true
执行完,gradle会卡住,等待附加调试器,这时候切到上面添加了Remote JVM Debug的AndResGuard源码工程,打下断点,点击执行图中的按钮附加调试器:
然后可以看到执行到下断点的地方
通过断点看到内存数据,存在kv键值对:
classifier -> osx-aarch_64
osx-aarch_64是通过获取运行时系统特征获取到的:project.osdetector.classifier
单步调试完,发现代码执行到File file = config.fileCollection(dep).singleFile,就抛出了找不到SevenZip-osx-aarch_64.exe异常,所以应该是osx-aarch_64类型的exe不存在,check AndResGuard的7zip目录,确实不存在SevenZip-osx-aarch_64.exe文件:
所以这里只需要提交下SevenZip-osx-aarch_64.exe文件就可以解决这个问题了
4.问题解决
下载https://www.7-zip.org/a/7z2103-mac.tar.xz,解压改名为SevenZip-osx-aarch_64.exe提交仓库,编译一个新的版本即可解决问题
#490
macbook m1 JDK环境与AndResGuard编译遇到的Gradle同步报错相关推荐
- Yum编译安装Error Downloading Packages报错
Yum编译安装Error Downloading Packages报错 在编译安装FS环境的时候发现如何报错: yum编译执行命令如下: yum install ntpdate wget autoco ...
- 在vscode中用tsc编译ts文件的时候报错,tsc : 无法加载文件,因为在此系统上禁止运行脚本;SecurityError
一.问题描述: 1. TypeScript安装成功,在C盘的Administrator目录下,运行 tsc -v 也可看到TypeScript的版本. 2. 但在vscode中的时候运行tsc 编译t ...
- eclipse spring mysql,eclipse环境下的springboot框架+mybatis访问MySQL报错空指针
"/")public classTestController { @RequestMapping("/login")publicString login() { ...
- Linux环境搭建 - update https://apt.repos.intel.com 报错
Linux环境搭建 - update https://apt.repos.intel.com 报错 问题说明 解决方案 问题说明 执行 sudo apt-get update 之后, 出现 https ...
- 缺失头文件bit/c++config.h关于Arduinoi IDE编译类如Nodemcu板等报错
关于Arduinoi IDE编译类如Nodemcu板等报错--缺失头文件#include <bits / c ++ config.h> 错误信息 来自C:\ ProgramData \ M ...
- 软件开发Linux环境下,java通过JNA调用so报错,求大神解答,感激不尽。
软件开发Linux环境下,java通过JNA调用so报错,求大神解答,感激不尽. 图片说明 最佳答案: 专家已采纳 先用c等调用一下so,看函数能否正确调用 文章来源:https://ask.csdn ...
- Macbook M1 开发环境快速配置
前言 Macbook M1 下载软件,常用工具都会有 M1 芯片的适配版本,才能更好的发挥它滴性能,选择版本时认准: M1.arm64.Apple Silicon 即可起飞! 安装操作比 window ...
- MacBook M1 Flutter环境搭建
最近入手了Apple M1,MacBook Air,由于之前未使用苹果系列产品,并且Flutter官方和各项配套的软件环境也还没有成熟,导致搭建环境时碰到了不少坑,这里总结记录一波,来看文档的同学,有 ...
- jdk安装问题:javac不是内部命令报错
安装jdk后,通过javac命令编译HelloWorld文件时出现了javac不是内部命令的报错. 查询资料后,发现是由于安装jdk的时候将jdk和jre安装在了同一个文件夹导致的. 在执行 的时候, ...
最新文章
- 【数据结构与算法】之深入解析“平衡二叉树”的求解思路与算法示例
- 这一次,终于弄懂了协变和逆变
- python import 问题
- cmder 基本配置和使用
- 前端面试:你应该了解的JS算法相关的知识
- day8 Java学习(面向对象.多态接口)
- 抖音等多款软件涉代码抄袭,字节跳动被诉赔22.74亿元;iPhone12系统更新后性能退回3年前;Qt 6.1正式发布|极客头条...
- 作为技术人员,年会中尽量找熟人喝酒
- 河北省考计算机知识点,河北省计算机一级考试上机操作题考点总结与分析
- RoboWare Studio安装教程
- erf函数 matlab,关于ODE45初值问题和erf函数的问题
- 通过股票数据接口如何看懂Level-2行情?
- 一个像素的旅行,卷积网络可视化项目火了:点点鼠标就能看懂的扫盲神器
- Win7 Wininit.exe任意加载/执行(漏洞)
- 微信小程序实现两数相加
- ARGB_8888(ARGB32)色彩格式
- 修改 SSH 端口号
- [再寄小读者之数学篇](2015-05-01 求渐近线)
- matlab中常微分方程数值计算的方法
- 数据集的划分,验证集参与训练了吗?