一.背景

入手了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同步报错相关推荐

  1. Yum编译安装Error Downloading Packages报错

    Yum编译安装Error Downloading Packages报错 在编译安装FS环境的时候发现如何报错: yum编译执行命令如下: yum install ntpdate wget autoco ...

  2. 在vscode中用tsc编译ts文件的时候报错,tsc : 无法加载文件,因为在此系统上禁止运行脚本;SecurityError

    一.问题描述: 1. TypeScript安装成功,在C盘的Administrator目录下,运行 tsc -v 也可看到TypeScript的版本. 2. 但在vscode中的时候运行tsc 编译t ...

  3. eclipse spring mysql,eclipse环境下的springboot框架+mybatis访问MySQL报错空指针

    "/")public classTestController { @RequestMapping("/login")publicString login() { ...

  4. Linux环境搭建 - update https://apt.repos.intel.com 报错

    Linux环境搭建 - update https://apt.repos.intel.com 报错 问题说明 解决方案 问题说明 执行 sudo apt-get update 之后, 出现 https ...

  5. 缺失头文件bit/c++config.h关于Arduinoi IDE编译类如Nodemcu板等报错

    关于Arduinoi IDE编译类如Nodemcu板等报错--缺失头文件#include <bits / c ++ config.h> 错误信息 来自C:\ ProgramData \ M ...

  6. 软件开发Linux环境下,java通过JNA调用so报错,求大神解答,感激不尽。

    软件开发Linux环境下,java通过JNA调用so报错,求大神解答,感激不尽. 图片说明 最佳答案: 专家已采纳 先用c等调用一下so,看函数能否正确调用 文章来源:https://ask.csdn ...

  7. Macbook M1 开发环境快速配置

    前言 Macbook M1 下载软件,常用工具都会有 M1 芯片的适配版本,才能更好的发挥它滴性能,选择版本时认准: M1.arm64.Apple Silicon 即可起飞! 安装操作比 window ...

  8. MacBook M1 Flutter环境搭建

    最近入手了Apple M1,MacBook Air,由于之前未使用苹果系列产品,并且Flutter官方和各项配套的软件环境也还没有成熟,导致搭建环境时碰到了不少坑,这里总结记录一波,来看文档的同学,有 ...

  9. jdk安装问题:javac不是内部命令报错

    安装jdk后,通过javac命令编译HelloWorld文件时出现了javac不是内部命令的报错. 查询资料后,发现是由于安装jdk的时候将jdk和jre安装在了同一个文件夹导致的. 在执行 的时候, ...

最新文章

  1. 【数据结构与算法】之深入解析“平衡二叉树”的求解思路与算法示例
  2. 这一次,终于弄懂了协变和逆变
  3. python import 问题
  4. cmder 基本配置和使用
  5. 前端面试:你应该了解的JS算法相关的知识
  6. day8 Java学习(面向对象.多态接口)
  7. 抖音等多款软件涉代码抄袭,字节跳动被诉赔22.74亿元;iPhone12系统更新后性能退回3年前;Qt 6.1正式发布|极客头条...
  8. 作为技术人员,年会中尽量找熟人喝酒
  9. 河北省考计算机知识点,河北省计算机一级考试上机操作题考点总结与分析
  10. RoboWare Studio安装教程
  11. erf函数 matlab,关于ODE45初值问题和erf函数的问题
  12. 通过股票数据接口如何看懂Level-2行情?
  13. 一个像素的旅行,卷积网络可视化项目火了:点点鼠标就能看懂的扫盲神器
  14. Win7 Wininit.exe任意加载/执行(漏洞)
  15. 微信小程序实现两数相加
  16. ARGB_8888(ARGB32)色彩格式
  17. 修改 SSH 端口号
  18. [再寄小读者之数学篇](2015-05-01 求渐近线)
  19. matlab中常微分方程数值计算的方法
  20. 数据集的划分,验证集参与训练了吗?

热门文章

  1. window11日常使用中的小知识
  2. 一张照片搜出你的所有信息,有多少人在用你的脸换钱?
  3. 网红KOL是什么意思?从零开始,教你如何运营网红KOL
  4. jQuery(三)常规选择器
  5. bp利率最新消息是多少,bps利率是什么意思
  6. 软件教程还有cad施工图看法
  7. 1.1.1 java基础知识总结
  8. 随机过程及应用(二) - E[X|Y] = E[Y E[X|Y]]证明
  9. 订单编号生成方案研究
  10. QQ在线咨询控件的制作