'sh: 1: file: not found' 在 docker 容器中创建 android 模拟器时

'sh: 1: file: not found' when creating a android emulator inside a docker container

我正在尝试在 docker 容器中创建一个 android 模拟器,但遇到了一些问题。

SDK 更新和 AVD 创建成功,我尝试创建模拟器,出现以下错误:

./emulator -avd test-22 -no-skin -no-audio -no-window

sh: 1: file: not found
sh: 1: file: not found

WARNING: Cannot decide host bitness because $SHELL is not properly defined; 32 bits assumed.

ERROR: 32-bit Linux Android emulator binaries are DEPRECATED, to use them

注意:运行 最后 docker 版本并使用 java:8-jdk 图片。

我的 docker 文件可以在这里找到 => https://gist.github.com/leoGalani/1f74621b8e82bd5bc8db586d1f34b8a2

-- 有人告诉我为 API22 安装 x86 intel ABI/ARM 但我找不到包名所以我可以通过命令行安装它。

我有同样的问题,我通过 apt 使用安装文件命令修复了这个问题。但还是不行,等我找到解决办法再更新。

apt-get install  -y --no-install-recommends file libmagic1 libglu1-mesa mesa-utils libpci3 pciutils libpulse0

编辑: 在将包添加到您的 docker 文件

后,我找到了解决方案

也添加您的 docker 文件这些命令

mv /bin/sh /bin/sh.backup 
cp /bin/bash /bin/sh

并使用

创建新容器
--device /dev/dri --device /dev/video0 --device /dev/snd --device /dev/kvm 

现在应该是在工作吧。

我用 emulator64 代替模拟器解决了同样的问题。
在这种情况下:

emulator64 -avd test-22 -no-skin -no-audio -no-window