Ati*_*Asi 50 android-ndk android-studio arm64 apple-m1
我有一个在 Windows 操作系统中运行良好的项目,但是当我切换笔记本电脑并在MacBook Pro M1中打开现有项目时。我无法在MacBook pro M1中运行现有的 Android 项目。首先我得到
任务“:app:kaptDevDebugKotlin”执行失败。> 执行 org.jetbrains.kotlin.gradle.internal.KaptExecution 时发生失败 > java.lang.reflect.InvocableTargetException(无错误消息)
这个错误是由于 Room 数据库造成的,我应用了一个修复程序,在 Room 数据库之前添加了以下库,并且还将我的 JDK 位置从文件结构从 JRE 更改为 JDK。
卡普特“org.xerial:sqlite-jdbc:3.34.0”
//Room components
kapt "org.xerial:sqlite-jdbc:3.34.0"
implementation "androidx.room:room-ktx:$rootProject.roomVersion"
kapt "androidx.room:room-compiler:$rootProject.roomVersion"
androidTestImplementation "androidx.room:room-testing:$rootProject.roomVersion"
Run Code Online (Sandbox Code Playgroud)
之后,我遇到了一个问题,即未知主机 CPU 架构:arm64
我的项目中有一个 SDK 使用下面的行。
android {
externalNativeBuild {
ndkBuild {
path 'Android.mk'
}
}
ndkVersion '21.4.7075529'
}
Run Code Online (Sandbox Code Playgroud)
应用程序摇篮
externalNativeBuild {
cmake {
path "src/main/cpp/CMakeLists.txt"
version "3.18.1"
//version "3.10.2"
}
}
Run Code Online (Sandbox Code Playgroud)
[CXX1405] 使用 /Users/mac/Desktop/Consumer-Android/ime/dictionaries/jnidictionaryv2/Android.mk 进行 ndkBuild 构建时出错:构建命令失败。使用参数 {NDK_PROJECT_PATH=null APP_BUILD_SCRIPT=/Users/mac/Desktop/Consumer-Android/ime/dictionaries/jnidictionaryv2/Android 执行进程 /Users/mac/Library/Android/sdk/ndk/21.4.7075529/ndk-build 时出错.mk APP_ABI=arm64-v8a NDK_ALL_ABIS=arm64-v8a NDK_DEBUG=1 APP_PLATFORM=android-21 NDK_OUT=/Users/mac/Desktop/Consumer-Android/ime/dictionaries/jnidictionaryv2/build/intermediates/cxx/Debug/4k4s2lc6/obj NDK_LIBS_OUT=/Users/mac/Desktop/Consumer-Android/ime/dictionaries/jnidictionaryv2/build/intermediates/cxx/Debug/4k4s2lc6/lib APP_SHORT_COMMANDS=false LOCAL_SHORT_COMMANDS=false -B -n} 错误:未知主机 CPU 架构:arm64
这导致了这个问题,每当我对此行发表评论时
路径“Android.mk”
它开始工作正常,有什么办法可以帮助我使用这段代码运行这个项目而不会遇到这个 NDK 问题吗?
更新- 看来 Room 在最新的更新中得到了修复,因此您可以考虑将 Room 更新到最新版本(2.3.0-alpha01 / 2.4.0-alpha03 或更高版本)
使用 ndkVersion "24.0.8215888" 将 ndk 更新到此版本,无需编辑任何脚本:)
Ati*_*Asi 118
解决了这个问题。
Finder -> 转到文件夹(/Users/mac/Library/Android/sdk/ndk/21.4.7075529) -> 现在编辑ndk-build在文本编辑器中打开它并粘贴下面的代码脚本并重新运行您的项目。
从
#!/bin/sh
DIR="$(cd "$(dirname "$0")" && pwd)"
$DIR/build/ndk-build "$@"
Run Code Online (Sandbox Code Playgroud)
到
#!/bin/sh
DIR="$(cd "$(dirname "$0")" && pwd)"
arch -x86_64 /bin/bash $DIR/build/ndk-build "$@"
Run Code Online (Sandbox Code Playgroud)
han*_*ach 33
为了在 Apple Silicon M1 上解决这个问题,我找到了三个选项
使用NDK 24
android {
ndkVersion "24.0.8215888"
...
}
Run Code Online (Sandbox Code Playgroud)
你可以安装它
echo "y" | sudo ${ANDROID_HOME}/tools/bin/sdkmanager --install 'ndk;24.0.8215888'
Run Code Online (Sandbox Code Playgroud)
或者
echo "y" | sudo ${ANDROID_HOME}/sdk/cmdline-tools/latest/bin/sdkmanager --install 'ndk;24.0.8215888'
Run Code Online (Sandbox Code Playgroud)
更改ndk-build为使用 Rosetta x86。搜索您安装的 ndk
find ~ -name ndk-build 2>/dev/null
Run Code Online (Sandbox Code Playgroud)
例如
vi ~/Library/Android/sdk/ndk/22.1.7171670/ndk-build
Run Code Online (Sandbox Code Playgroud)
并改变
DIR="$(cd "$(dirname "$0")" && pwd)"
$DIR/build/ndk-build "$@"
Run Code Online (Sandbox Code Playgroud)
到
DIR="$(cd "$(dirname "$0")" && pwd)"
arch -x86_64 /bin/bash $DIR/build/ndk-build "$@"
Run Code Online (Sandbox Code Playgroud)
将你的转化ndk-build为cmake构建
| 归档时间: |
|
| 查看次数: |
31659 次 |
| 最近记录: |