首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

获得"多目标模式.停止." 尝试使用ndk-build为Android构建时出错

问题:在 Android 开发中,使用 NDK Build 时遇到 "多目标模式.停止." 错误。

错误原因

通常,这个错误是由于项目中的多个目标(例如,ARM 和 x86 设备)要求使用不同的 CMake 版本导致的。当项目使用多个目标时,务必确保为每个目标单独配置 CMake。

解决方案

  1. 首先,检查项目中的 CMakeLists.txt 文件,确保为每个目标(例如,ARM 和 x86 设备)提供了正确的 CMake 版本。
  2. 如果 CMakeLists.txt 尚未提供针对不同目标的 CMake 版本,请添加以下代码:
代码语言:cmake
复制

if(ANDROID)

代码语言:txt
复制
   # Set the desired CMake version for the ARM target
代码语言:txt
复制
   set(CMAKE_ANDROID_ARM_MODE TRUE)
代码语言:txt
复制
   set(CMAKE_ANDROID_ARCH_ABI "arm64")
代码语言:txt
复制
   # Set the desired CMake version for the x86 target
代码语言:txt
复制
   set(CMAKE_ANDROID_ARM_MODE FALSE)
代码语言:txt
复制
   set(CMAKE_ANDROID_ARCH_ABI "x86")

endif()

代码语言:txt
复制
  1. 保存 CMakeLists.txt 文件,然后在 Android Studio 的 Build 菜单中选择 Clean Project 以清除缓存并重新构建项目。
  2. 如果问题仍然存在,请尝试在 Android Studio 的 File 菜单中选择 Invalidate Caches / Restart,并重新构建项目。

注意:上述解决方案仅针对遇到 "多目标模式.停止." 错误的情况。如果错误是由其他原因引起的,请根据具体情况进行排查。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Android Studio 4.0.+NDK .so库生成打包

什么是.so库 NDK为了方便使用,提供了一些脚本,使得更容易的编译C/C++代码,这个编译文件.so文件,它就C/C++库,类似java库.jar文件一样。...执行指令javah获得C声明的.h文件 在terminal中cd 到\app\src\main\java目录下执行如下指令: terminal可能出现不能用,则使用cmd命令行 javah -encoding...-16不配置,打包.so会出错 APP_PLATFORM := android-16 如果我们需要进行多个C++文件一起编译或者已有的.so参与编译,这里给出配置示例 # Android.mk //...同样另一种方式是使用External tools工具,使用ndk-build指令,该指令需要我们自行配置,后面会单独讲解。 6. 测试.so库 测试.so库生成完毕,正常可用。...在我们使用.so文件,一定要记得做好配置,否则会出现无法找到.so库的异常 android { compileSdkVersion 30 buildToolsVersion

1.4K40

代码的“真面目”---如何查看cpp预处理后程序代码

使用宏定义后,宏在预处理阶段才展开,会造成代码阅读的不便;尤其是宏嵌套,会极大加深代码阅读和了解难度。 [恐怖的宏定义] 用宏封装后,使用起来会非常方便。但是第一次阅读,会比较难以理解。...二、定位分析 我们先看下传统编译模型下,源码的编译步骤: [C/C++ 代码编译过程] 对于单文件,我们可以简单的使用gcc -E 获得预处理文件,使用gcc -S获得汇编文件,其他文件输出详见GCC...但是当我准备把这套方案挪到Android NDK项目上,才忽然意识到,Android NDK项目是基于CMake+ninja构建系统,不是CMake+makefile这套。...3. ndk-build + Android.mk 但是Android NDK还有legacy NDK构建系统 ndk-build,配合魔改过的Android.mk。...到这里,对于Android、iOS涉及cpp,生成预处理文件我们都有了方案,探索到此结束,共勉。

5.3K41

Android JNI学习(二)——实战JNI之“hello world”

请切换到CMake构建系统或者ndk-build中集成。...如果Project模式则如下: ? Project模式.png 那我们简单介绍下这两个多出来的文件夹: 在 cpp 文件夹中:可以找到属于项目的所有原生源文件等构建库。...PS:这个位置不是不固定的,位置可以随意,但是配置构建脚本,需要将这个位置写入构建脚本 3、输入CMakeLists.txt作为文件并点击OK 创建后,目录如下: ?...在构建应用时,Gradle会以依赖项的形式运行CMake或ndk-build,并将共享的库打包到APK中。Gradle还是用构建脚本来了解将那些文件添加到Android 项目中。...在此之间,您可以继续使用Android Studio3.0或者更高版本的experimental插件,或者使用Android Studio支持的外部原生构建工具。

2.1K42

详解sh ndk-build.cmd command not found

这个错误通常出现在使用Windows操作系统进行NDK编译。问题描述一般来说,当我们使用NDK进行Android原生代码的编译,需要在命令行中使用ndk-build来执行编译操作。...原因分析当我们执行ndk-build命令,实际上是在调用一个名为ndk-build.cmd的批处理脚本。在这个脚本中,会用到sh命令来执行一些Shell脚本命令。...现在,当你执行ndk-build命令,系统将能够正确找到sh命令,并成功执行编译操作,而不再出现sh ndk-build.cmd command not found错误。...以下是 ndk-build.cmd 的一些重要功能和用法:CMake 构建系统支持: 从 Android NDK r14 开始,Google 推荐使用 CMake 构建本地代码工程。...ndk-build.cmd 可以与基于 CMake 构建系统的项目一起使用,并支持基于 Android.mk 和 Application.mk 构建文件的旧版 Makefile 构建系统。

25810

Android | 迁移到搭载M1芯片的Mac的问题

现象 项目中使用了 NDK , 版本 17,初次在 M1 电脑中编译时报错: Unknown host CPU architecture: arm64 Process 'command 'xx/xx...打开方式1 打开终端,使用 open -e 命令直接打开 ndk-build 文件,具体如下: open -e /Users/cnpeng/Library/Android/sdk/ndk/17.2.4988734.../bin/sh DIR="$(cd "$(dirname "$0")" && pwd)" arch -x86_64 /bin/bash $DIR/build/ndk-build "$@" 修改前的内容...解决 由于 Android 使用 gradle 作为包管理工具,在编译时会将依赖的库下载到本机,所以我们可以考虑到 gradle 的缓存目录中找一找该库的 aar 文件,然后手动将其拷贝到项目的 libs...修改新电脑中的项目 一开始尝试将该库的缓存直接拷贝到新电脑的同级目录下,非常遗憾的是依旧编译失败。所以才考虑拷贝 aar 作为依赖项。

3.3K40

NDK开发(一) :NDK入门指南

CMake 使用 lib库名称.so 的规范来库文件命名,库名称即为我们定义的 native-lib。不过我们在Java代码中加载,还是使用我们定义的库名称 native-lib。...如果现有的原生库已有 CMakeLists.txt 编译脚本,或使用 ndk-build 并包含 Android.mk编译脚本,则可跳过此步骤。...add_library() 向您的 CMake 构建脚本添加源文件或库Android Studio 还会在您同步项目后在 Project 视图下显示关联的标头文件。...以 Android 特定的日志支持库 例,为了确保您的原生库可以在 log 库中调用函数,您需要使用 CMake 构建脚本中的 target_link_libraries()命令关联库: add_library...在您构建应用时,Gradle 会以依赖项的形式运行 CMake 或 ndk-build,并将共享的库打包到您的 APK 中。

79840

Android 安装包优化】使用 lib7zr.a 静态库处理压缩文件 ( 交叉编译 lib7zr.a 静态库 | 安卓工程导入静态库 | 配置 CMakeLists.txt 构建脚本 )

) 【Android 安装包优化】使用 lib7zr.so 动态库处理压缩文件 ( 拷贝 lib7zr.so 动态库头文件到 Android 工程中 | 配置 CMakeLists.txt 构建脚本...\7zip\p7zip_16.02\CPP\ANDROID\7zr 目录下是 7zr 项目的构建脚本 Android.mk 和 Application.mk , 主要使用构建脚本交叉编译出 可执行文件..., 可以使用 ndk-build 进行编译 ; 打开该 makefile 文件 , 该文件最后几行代码给出了相关操作方法 ; # FIXME debug: cd jni ; ndk-build NDK_DEBUG...CPU 架构 , ${ANDROID_ABI} 值 armeabi-v7a # 当本次编译 x86 CPU 架构 , ${ANDROID_ABI} 值 x86 message...NDK 编译构建脚本参考文档 : ndk-build 脚本 : https://developer.android.google.cn/ndk/guides/ndk-build Android.mk

3.1K30

Android 安装包优化】使用 lib7zr.so 动态库处理压缩文件 ( 拷贝 lib7zr.so 动态库头文件到 Android 工程中 | 配置 CMakeLists.txt 构建脚本 )

构建脚本示例 四、参考资料 前置博客 : 【Android 安装包优化】使用 lib7zr.so 动态库处理压缩文件 ( 修改 7zr 交叉编译脚本 Android.mk | 交叉编译 lib7zr.so...构建脚本 ) 一、拷贝 p7zip 源码中的头文件到 Android Studio 项目中 ---- 参考 【Android 安装包优化】使用 lib7zr.so 动态库处理压缩文件 ( 修改 7zr...1、导入动态库 导入动态库 : 参考 【Android NDK 开发】Android Studio 使用 CMake 导入动态库 ( 构建脚本路径配置 | 指定动态库查找路径 | 链接动态库 ) 博客...armeabi-v7a CPU 架构 , ${ANDROID_ABI} 值 armeabi-v7a # 当本次编译 x86 CPU 架构 , ${ANDROID_ABI} 值...NDK 编译构建脚本参考文档 : ndk-build 脚本 : https://developer.android.google.cn/ndk/guides/ndk-build Android.mk

2.8K20

Android NDK开发基础

(2)ndk-build:可在Android.mk 和 Application.mk文件中配置编译选项,ndk-build的C++运行时默认值none,ndk-build中默认停用C++异常,默认停用...2.1.1 CMake构建脚本 CMakeLists.txt是CMake的构建脚本,在CMakeLists.txt中可以使用cmake的一些命令来自定义构建过程,以下列举了一些常用的cmake命令: #..."编译ANDROID则定义'ON',其他定义'OFF'" ON) # if-endif:cmake的逻辑控制 if(IS_ANDROID) message("Building for Android...') } } 2.3 native api 在常用的cmake命令中介绍过,cmake可以使用find_library命令找到 NDK native api库并将其路径存储一个变量;或者也可以在...Android中每个进程只允许有一个JavaVM。JNIEnv作用域单个线程,可通过JavaVM的getEnv来获得当前线程的JNIEnv,JNIEnv可通过GetJavaVM来获得JavaVM。

1.8K21

.NET 8 中 Android 资源生成的改进和变化

此外,每个Resource类都需要在运行时更新以获得正确的值。这是因为只有当我们构建最终应用程序并生成 R.txt 文件,我们才知道每个资源的Id。...有些人可能担心通过此更改,现有的包引用将停止工作。不用担心,新系统引入了一个修剪步骤,它将会升级旧系统的程序集引用以使用新系统。这将作为构建的一部分自动完成。...这个功能将适用于 net8.0-android 之前的任何 Android 程序集引用。 使用新系统构建的包不能与以前版本的.NET Android 一起使用。...如果您需要支持 .NET 7 或 Classic Xamarin.Android,请考虑使用多目标定位。...首先,不需要随 NuGet 一起提供新的 _Microsoft.Android.Resource.Designer.dll。它将由使用 NuGet 的应用程序在构建生成。

19710

Android Gradle 插件】Gradle 基础配置 ⑥ ( Android工程 Gradle 常用命令 | gradlew 可执行文件 | 查看帮助文档 | 查看应用依赖 )

Gradle将尝试重用以前构建中的构建配置。[孵化] --configuration-cache-problems 配置配置缓存如何处理问题(失败或警告)。默认为失败。...[孵化] --no-daemon 不要使用Gradle守护程序运行构建。如果您已将Gradle配置默认情况下始终与守护程序一起运行,则偶尔会有用。...--parallel 并行构建项目。Gradle将尝试确定要使用的执行器线程的最佳数量。...-w, --warn 将日志级别设置警告。 --warning-mode 指定要生成的警告模式。...三、执行 help 任务 ---- 执行 gradlew help 命令 , 其作用是 执行 help 任务 , 这是一个 Gradle 任务 , 是系统默认提供的任务 , 该任务的作用是 查询构建过程中代码是否出错

1.4K30

Bazel 7 发布:全新模块化依赖管理、无字节构建多目标构建性能提升

、得益于 Project Skymeld 的多目标构建性能改进等等。...虽然 BwoB 已经存在很长时间,但现在它已经稳定,并且在边缘情况下变得可靠,因此可以作为新的默认选项使用。 Skymeld 是另一个旨在提高生产力的功能,特别是对于具有多个顶级目标的构建。...它引入了一种评估模式,消除了分析和执行阶段之间的障碍,并且允许目标在其分析完成后独立执行,以提高构建速度。...Android 项目需要停止使用传统标志 --fat_apk_cpu,而改用使用以 @platforms//os:android 约束定义的平台的 --android_platforms。...原文链接: https://www.infoq.com/news/2023/12/bazel-7-released/ 声明:本文 InfoQ 翻译整理,未经许可禁止转载。

14410

Bazel 7 发布:全新模块化依赖管理、无字节构建多目标构建性能提升

、得益于 Project Skymeld 的多目标构建性能改进等等。...虽然 BwoB 已经存在很长时间,但现在它已经稳定,并且在边缘情况下变得可靠,因此可以作为新的默认选项使用。 Skymeld 是另一个旨在提高生产力的功能,特别是对于具有多个顶级目标的构建。...它引入了一种评估模式,消除了分析和执行阶段之间的障碍,并且允许目标在其分析完成后独立执行,以提高构建速度。...Android 项目需要停止使用传统标志 --fat_apk_cpu,而改用使用以 @platforms//os:android 约束定义的平台的 --android_platforms。...原文链接: https://www.infoq.com/news/2023/12/bazel-7-released/ 声明:本文 InfoQ 翻译整理,未经许可禁止转载。

25810

【CMake】CMake 引入 ( Android NDK 构建脚本 | CMake 命令手册 )

下 NDK 编程 , 使用 CMake 构建 C/C++ 工程 ; 一、Android NDK 构建脚本 ---- Android使用 NDK 编译 C/C++ 源码有两种方式 , 参考 Android...官网 https://developer.android.google.cn/ndk/guides ; 方式一 : 使用 ndk-build 脚本 , 包括 Android.mk 和 Application.mk...两个脚本 , 详细的细节参考如下链接 ndk-build Android.mk Application.mk 使用构建的库 老的 Android 开发环境使用的是这种方式编译 C/C++ 源码 ;...armeabi-v7a CPU 架构 , ${ANDROID_ABI} 值 armeabi-v7a # 当本次编译 x86 CPU 架构 , ${ANDROID_ABI} 值...NDK 开发】Android Studio 使用 CMake 导入静态库 ( CMake 简介 | 构建脚本路径配置 | 引入静态库 | 指定静态库路径 | 链接动态库 ) 复制来的 ; 三、CMake

3.7K01

重磅!中科院计算所开源SeetaFace2人脸识别算法

中科视拓的人脸识别技术来自于国家万人计划领军人才山世光研究员和国家自然科学基金委杰出青年基金获得者陈熙霖研究员共同领导的中科院计算所视觉信息处理与学习研究组,研究成果先后获得过国家科技进步二等奖一次和国家自然科学二等奖一次...linux 和 windows上的SDK编译方法: 打开终端(windows上VS2015 x64 Native Tools Command Prompt 工具,linux 上bash),cd 到编译脚本所在目录...windows 上 example 的编译运行方法: 使用 vs2015 打开 SeetaExample.sln 构建工程,修改 Opencv3.props 属性表中变量 OpenCV3Home 的值本机上的...2.3 Android平台编译说明 Android 版本的编译方法: 安装 ndk 编译工具; 环境变量中导出 ndk-build 工具; cd 到各模块的 jni 目录下(如SeetaNet 的 Android...编译脚本位置SeetaNet/sources/jni, FaceDetector的Android 编译脚本位置FaceDetector/FaceDetector/jni),执行 ndk-build

2.5K31

Android Studio 简单生成so文件并调用「建议收藏」

然后在终端进入到jni目录,输入指令 ndk-build,就会生成相应的so文件。...创建项目,默认的MainActivity package com.example.jnihellowrold1 import androidx.appcompat.app.AppCompatActivity...project("jnihellowrold1") # 创建并命名库,将库设置静态的或者共享的,并提供源代码文件的相对路径。 # 你可以定义多个库,CMake会为你构建它们。...native-lib.cpp ) # 搜索指定的预构建库并将其路径存储变量。 # 因为CMake会在搜索路径上默认包含系统库,你只需要指定你想添加的公共的NDK库。...NDK之旅(二),使用ndk-build构建Jni Android JNI学习(二)——实战JNI之“hello world” 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。

3.9K10
领券