最近,我转向了苹果公司的M1,在创建一个最终在内置linux上运行的对接映像时遇到了问题。同样的代码在我使用英特尔芯片的MacBook上运行得很好,并成功地创建了一个对接映像。
当sdkmanager试图使用最新的commandlinetools导入build-tools;${ANDROID_BUILD_TOOLS_VERSION}时,会出现问题,但会出现以下错误:
Warning: Dependant package with key emulator not found!
Warning: Unable to compute a complete list of dependencies.ates...我能找到的最接近的问题是安装构建工具:找不到模拟器和android出错,两者都没有任何解决方案。还请注意,我已经运行了sdkmanager --list,并且emulator并不作为可用的包出现在那里(仅在M1上)。
这是我的Dockerfile (我不经常使用修理工,所以如果代码不是最干净的,请原谅):
FROM gradle:7.4-jdk11
ENV SDK_URL="https://dl.google.com/android/repository/commandlinetools-linux-8092744_latest.zip" \
ANDROID_HOME="/usr/local/android-sdk" \
ANDROID_VERSION=32 \
ANDROID_BUILD_TOOLS_VERSION=32.0.0
RUN mkdir "$ANDROID_HOME" .android \
&& cd "$ANDROID_HOME" \
&& curl -o sdk.zip $SDK_URL \
&& unzip sdk.zip \
&& rm sdk.zip \
&& yes | $ANDROID_HOME/cmdline-tools/bin/sdkmanager --sdk_root=$ANDROID_HOME --licenses \
&& $ANDROID_HOME/cmdline-tools/bin/sdkmanager --sdk_root=$ANDROID_HOME --update \
&& $ANDROID_HOME/cmdline-tools/bin/sdkmanager --sdk_root=$ANDROID_HOME "platform-tools" "build-tools;${ANDROID_BUILD_TOOLS_VERSION}" \
&& $ANDROID_HOME/cmdline-tools/bin/sdkmanager --sdk_root=$ANDROID_HOME "platforms;android-${ANDROID_VERSION}" \
&& apt-get update \
&& apt-get install -y build-essential file apt-utils curl gnupg \
&& curl -sL https://deb.nodesource.com/setup_14.x | bash - \
&& apt-get -y install nodejs \
&& npm install -g firebase-tools -y \
&& rm -rf /var/lib/apt/lists/*附带注意:我不得不将jdk8的使用升级到安卓构建代理的jdk11,之前的实现是引入sdk-tools-linux-3859397.zip而不是commandlinetools-linux-8092744_latest.zip,这也可以通过M1上的sdkmanager引入build-tools,并创建了一个码头映像。
考虑到它建立在英特尔的基础上,我的任务在技术上已经完成,但从长远来看,它在M1上运行会容易得多。有什么想法吗?或者,有人能建议什么地方来提出这个问题吗?你认为这是谷歌命令行工具问题还是码头问题?
发布于 2022-08-26 12:41:56
我在M1 Pro上也遇到了同样的问题,这也帮我解决了这个问题。
简而言之:emulator在Arm (M1)上还不可用,所以您需要手动安装它。您可以跟踪官方指南,但简而言之,这对我是有效的。
emulator (示例或您可以在官方指南(归档)中找到更多链接)SKD/emulator文件夹)SDK/emulator/package.xml创建来自这里的内容文件,并使用下载的版本更新xml <revision><major>31</major><minor>1</minor><micro>4</micro></revision>的最后一部分扰流板警报:我仍然不能完全构建M1,因为在实际构建过程中,我得到了错误
qemu-x86_64: Could not open '/lib64/ld-linux-x86-64.so.2': No such file or directory发布于 2022-10-07 07:10:32
我也有同样的问题。我认为没有用于linux/armv8 8的android‘模拟器’包。因此,您将无法使用对接与本机图像。
为了使用linux/x86_64而不是linux/armv8 8,我尝试配置文件,但还有其他问题。我在docker-compose.yaml中添加了这一行:
platform: linux/x86_64就像这样:
version: '3.7'
services:
android:
platform: linux/x86_64
build:
dockerfile: Dockerfile
context: ./Docker
working_dir: /app/Android/Scripts
volumes:
- ../:/app:rw,cached
command: ./build_distribution.sh
# command: sh -c "while true; do sleep 10; done"但我对网络有很多意见。这个体系结构上的网络层似乎是错误的,有时它被卡在下载图像或组件上。
是否有办法使它与一种或另一种架构一起工作?
https://stackoverflow.com/questions/71246017
复制相似问题