Mac M1芯片上的AAPT/AAPT2执行错误

发布于 2025-02-04 14:30:08 字数 3503 浏览 1 评论 0原文

我有一个带有M1 Max Chip运行蒙特雷的Mac(12.3.1)。我正在运行Android Studio Chipmunk(2021.2.1补丁1)。由于我更新操作系统和工作室,因此在运行Android SDK方面面临挑战。我的代码在编译过程中丢弃了以下错误:

FAILURE: Build failed with an exception.

    * What went wrong:
    Execution failed for task ':app:mergeInternalDebugResources'.
    > Multiple task action failures occurred:
       > A failure occurred while executing com.android.build.gradle.internal.res.Aapt2CompileRunnable
          > AAPT2 aapt2-7.0.3-7396180-osx Daemon #0: Daemon startup failed
            This should not happen under normal circumstances, please file an issue if it does.
       > A failure occurred while executing com.android.build.gradle.internal.res.Aapt2CompileRunnable
          > AAPT2 aapt2-7.0.3-7396180-osx Daemon #1: Daemon startup failed 
    ....


    Caused by: com.android.builder.internal.aapt.v2.Aapt2InternalException: AAPT2 aapt2-7.0.3-7396180-osx Daemon #7: Daemon startup failed
    This should not happen under normal circumstances, please file an issue if it does.
            at com.android.builder.internal.aapt.v2.Aapt2Daemon.handleError(Aapt2Daemon.kt:193)
            at com.android.builder.internal.aapt.v2.Aapt2Daemon.handleError$default(Aapt2Daemon.kt:190)
            at com.android.builder.internal.aapt.v2.Aapt2Daemon.checkStarted(Aapt2Daemon.kt:77)
            at com.android.builder.internal.aapt.v2.Aapt2Daemon.compile(Aapt2Daemon.kt:100)
            at 

    com.android.builder.internal.aapt.v2.Aapt2DaemonManager$LeasedAaptDaemon..compile(Aapt2DaemonManager.kt:170)
    .....
    
        Caused by: java.io.IOException: Cannot run program "/Users/myuser/.gradle/caches/transforms-3/83c6baf2eeddcf66af012c889d39d1c1/transformed/aapt2-7.0.3-7396180-osx/aapt2": error=86, Bad

 CPU type in executable
            at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1143)
            at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1073)
            at com.android.builder.internal.aapt.v2.Aapt2DaemonImpl.startProcess(Aapt2DaemonImpl.kt:86)
            at com.android.builder.internal.aapt.v2.Aapt2Daemon.checkStarted(Aapt2Daemon.kt:56)
            ... 37 more
    Caused by: java.io.IOException: error=86, Bad CPU type in executable
            at java.base/java.lang.ProcessImpl.forkAndExec(Native Method)
            at java.base/java.lang.ProcessImpl.<init>(ProcessImpl.java:314)
            at java.base/java.lang.ProcessImpl.start(ProcessImpl.java:244)
            at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1110)
            ... 40 more

由于这是AAPT错误,所以我转到了SDK Build-Tools文件夹30.0.2,并尝试从终端本身运行它,并给出了以下错误(对于AAPT和AAPT2) :

zsh: bad CPU type in executable: ./aapt2

我尝试从32.1.0-RC1和33.0.0-RC4运行相同的操作,它运行得很好。因此,我试图从 /用户位置删除.gradle和.android文件夹,并从录音室工作区中删除.gradle。然后从SDK Manager中删除其他构建工具,然后再次构建APK。但令我惊讶的是,Gradle正在寻找30.0.2的构建工具

License for package Android SDK Build-Tools 30.0.2 accepted.
Preparing "Install Android SDK Build-Tools 30.0.2 (revision: 30.0.2)".
"Install Android SDK Build-Tools 30.0.2 (revision: 30.0.2)" ready.
Installing Android SDK Build-Tools 30.0.2 in /Users/myuser/Library/Android/sdk/build-tools/30.0.2
"Install Android SDK Build-Tools 30.0.2 (revision: 30.0.2)" complete.
"Install Android SDK Build-Tools 30.0.2 (revision: 30.0.2)" finished.

,因此我认为此版本的工作室对构建工具有最低要求,因此这就是为什么下载它的原因!但是仍然期望它下载适当的工作!但是仍然给我同样的AAPT错误!

知道为什么AAPT/AAPT2对我不起作用吗?

预先感谢 愉快的编码!

I have a Mac with M1 Max chip running Monterey (12.3.1). I am running Android Studio Chipmunk(2021.2.1 Patch 1). Since I update the OS and the studio, I am having challenges in running Android SDK. My code was throwing following error during compilation:

FAILURE: Build failed with an exception.

    * What went wrong:
    Execution failed for task ':app:mergeInternalDebugResources'.
    > Multiple task action failures occurred:
       > A failure occurred while executing com.android.build.gradle.internal.res.Aapt2CompileRunnable
          > AAPT2 aapt2-7.0.3-7396180-osx Daemon #0: Daemon startup failed
            This should not happen under normal circumstances, please file an issue if it does.
       > A failure occurred while executing com.android.build.gradle.internal.res.Aapt2CompileRunnable
          > AAPT2 aapt2-7.0.3-7396180-osx Daemon #1: Daemon startup failed 
    ....


    Caused by: com.android.builder.internal.aapt.v2.Aapt2InternalException: AAPT2 aapt2-7.0.3-7396180-osx Daemon #7: Daemon startup failed
    This should not happen under normal circumstances, please file an issue if it does.
            at com.android.builder.internal.aapt.v2.Aapt2Daemon.handleError(Aapt2Daemon.kt:193)
            at com.android.builder.internal.aapt.v2.Aapt2Daemon.handleError$default(Aapt2Daemon.kt:190)
            at com.android.builder.internal.aapt.v2.Aapt2Daemon.checkStarted(Aapt2Daemon.kt:77)
            at com.android.builder.internal.aapt.v2.Aapt2Daemon.compile(Aapt2Daemon.kt:100)
            at 

    com.android.builder.internal.aapt.v2.Aapt2DaemonManager$LeasedAaptDaemon..compile(Aapt2DaemonManager.kt:170)
    .....
    
        Caused by: java.io.IOException: Cannot run program "/Users/myuser/.gradle/caches/transforms-3/83c6baf2eeddcf66af012c889d39d1c1/transformed/aapt2-7.0.3-7396180-osx/aapt2": error=86, Bad

 CPU type in executable
            at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1143)
            at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1073)
            at com.android.builder.internal.aapt.v2.Aapt2DaemonImpl.startProcess(Aapt2DaemonImpl.kt:86)
            at com.android.builder.internal.aapt.v2.Aapt2Daemon.checkStarted(Aapt2Daemon.kt:56)
            ... 37 more
    Caused by: java.io.IOException: error=86, Bad CPU type in executable
            at java.base/java.lang.ProcessImpl.forkAndExec(Native Method)
            at java.base/java.lang.ProcessImpl.<init>(ProcessImpl.java:314)
            at java.base/java.lang.ProcessImpl.start(ProcessImpl.java:244)
            at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1110)
            ... 40 more

Since it was an AAPT error, I went to the SDK build-tools folder 30.0.2 and tried to run it from the terminal itself and it gave the following error(for both AAPT and AAPT2):

zsh: bad CPU type in executable: ./aapt2

I tried running the same from 32.1.0-rc1 and 33.0.0-rc4, it ran perfectly. So I tried to delete the .gradle and .android folder from the /Users location and .gradle from the studio workspace. Then removed the other build tools from the sdk manager and build apk again. But to my surprise, the gradle was looking for 30.0.2 build tool

License for package Android SDK Build-Tools 30.0.2 accepted.
Preparing "Install Android SDK Build-Tools 30.0.2 (revision: 30.0.2)".
"Install Android SDK Build-Tools 30.0.2 (revision: 30.0.2)" ready.
Installing Android SDK Build-Tools 30.0.2 in /Users/myuser/Library/Android/sdk/build-tools/30.0.2
"Install Android SDK Build-Tools 30.0.2 (revision: 30.0.2)" complete.
"Install Android SDK Build-Tools 30.0.2 (revision: 30.0.2)" finished.

So I assumed that this version of the studio have a minimum requirement for the build tool so that's why its downloading it! But still was expecting it to download a proper working one ! but still the gave me the same AAPT error !!

Any idea why AAPT/AAPT2 is not working for me?

Thanks in advance and
Happy coding !!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

愁以何悠 2025-02-11 14:30:08

终于在安全模式下启动并重新安装Rosetta 2后解决了它!

Finally resolved it after booting in safe mode and reinstall Rosetta 2 !!

秉烛思 2025-02-11 14:30:08

我遇到了同样的问题,由于我不想重新启动,因此我通过“强迫”使用简单的hack来解决它:

# Go to the directory where there is the aapt that's not working
cd /Users/username/Library/Android/sdk/build-tools/30.0.1

# Backup the aapt file
mv aapt aapt_

# Create a new aapt with the following contents
cat > aapt << EOF
#!/bin/bash
exec /Users/username/Library/Android/sdk/build-tools/29.0.2/aapt "$@"
EOF

# Make it executable
chmod +x aapt

请确保替换/userse/username/userame/username/library/android/android/sdk/build -tools/29.0.2/AAPT带有工作AAPT路径。

I had the same problem and since I didn't want to reboot I solved it by "forcing" to use the old aapt with a simple hack:

# Go to the directory where there is the aapt that's not working
cd /Users/username/Library/Android/sdk/build-tools/30.0.1

# Backup the aapt file
mv aapt aapt_

# Create a new aapt with the following contents
cat > aapt << EOF
#!/bin/bash
exec /Users/username/Library/Android/sdk/build-tools/29.0.2/aapt "$@"
EOF

# Make it executable
chmod +x aapt

Make sure to replace /Users/username/Library/Android/sdk/build-tools/29.0.2/aapt with a working aapt path.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文