[√]Android NDK 编译报错

简介: [√]Android NDK 编译报错

Looking for a different daemon

Looking for a different daemon... Found daemon DaemonInfo{
    pid=3616, 
    address=[
        3144f9fe-2fea-41c1-a176-2039eaabae50 
        port:34100, 
        addresses:[/127.0.0.1, /0:0:0:0:0:0:0:1]
    ], 
    state=Idle, 
    lastBusy=1687680511356, 
    context=DefaultDaemonContext[
        uid=be4966ef-ef9d-4c68-815f-83fccf193c6c,
        javaHome=C:\Program Files\Java\jdk1.8.0_202,   
        daemonRegistryDir=C:\Users\cc\.gradle\daemon,
        pid=3616,idleTimeout=10800000,
        daemonOpts=-Xmx4096m,
        -Dfile.encoding=UTF-8,
        -Duser.country=CN,-Duser.language=zh,-Duser.variant
    ]
} 
however its context does not match the desired criteria. Java home is different.

这里的jdk版本有问题,202是我之前的一个版本,现在我是切换到了361

删除

  • C:\Users\cc.gradle\daemon
  • C:\Users\cc.gradle\native

compileDebugJavaWithJavac失败

> Task :libcocos2dx:compileDebugJavaWithJavac
Putting task artifact state for task ':libcocos2dx:compileDebugJavaWithJavac' into context took 0.0 secs.
file or directory 'frameworks\cocos2d-x\cocos\platform\android\libcocos2dx\src\main\java', not found
file or directory 'frameworks\cocos2d-x\cocos\platform\android\libcocos2dx\src\main\java', not found
file or directory 'frameworks\cocos2d-x\cocos\platform\android\libcocos2dx\src\debug\java', not found
file or directory 'frameworks\cocos2d-x\cocos\platform\android\libcocos2dx\build\generated\source\rs\debug', not found
Skipping task ':libcocos2dx:compileDebugJavaWithJavac' as it is up-to-date (took 0.006 secs).

一直提示这个报错,各种蛋疼的折腾都无法解决,根本就没有src\main\java,这个错误很明显是因为其他问题导致的后续错误,不是源头。

后来发现gradle.properties里面

PROP_APP_ABI=armeabi:armeabi-v7a:arm64-v8a # 加上abi
PROP_APP_ABI=armeabi:armeabi-v7a

和build.gradle里面

android {
    externalNativeBuild {
        ndkBuild {
            // 编译生成的目标abi
            abiFilters.addAll(PROP_APP_ABI.split(':').collect { it as String })
        }
    }
    defaultConfig {
        ndk {
            // 打包的目标abi
            abiFilters 'arm64-v8a' 
        }
    }
}

abi不一致导致的

在 Gradle 中,使用 externalNativeBuildndk 块来配置 NDK 构建时,主要区别如下:

  1. 语法和位置:externalNativeBuild 是一个 Gradle 插件,用于配置使用外部构建系统进行原生代码构建。它是在 android 块的直接子级中进行配置。而 ndk 是一个内置的 Android 构建插件,用于配置 NDK 构建相关的参数。它是在 android 块中的 defaultConfigbuildTypesproductFlavors 块的内部进行配置。
  2. 灵活性:externalNativeBuild 更为灵活,可以支持不同的外部构建系统,如 cmakendk-build 等。你可以根据需要选择最适合的构建系统,并通过 externalNativeBuild 配置其参数。而 ndk 只能用于配置使用 ndk-build 进行构建的情况。
  3. 文件位置: 如果使用 externalNativeBuild,你需要将外部构建系统的脚本文件(如 CMakeLists.txtAndroid.mk)放置在指定的位置,并使用 path 属性指定文件的路径。而 ndk 允许你将 NDK 构建脚本文件直接放置在默认的位置,Gradle 会自动查找和使用它们。
  4. ABI 过滤器:externalNativeBuild 中,你可以使用 abiFilters 属性指定需要构建的 ABI 列表,过滤掉其他不需要的 ABI。而在 ndk 块中,你可以直接在其内部使用 abiFilters 方法来设置相同的过滤器。

总的来说,externalNativeBuild 提供了更灵活的配置选项,可以适应不同的外部构建系统,并且需要手动指定构建脚本文件的位置。而 ndk 是 Android 默认的构建插件,只支持 ndk-build 构建系统,并且会自动查找并使用默认位置的构建脚本文件。

目录
相关文章
|
5月前
|
Java Android开发 C++
Android Studio JNI 使用模板:c/cpp源文件的集成编译,快速上手
本文提供了一个Android Studio中JNI使用的模板,包括创建C/C++源文件、编辑CMakeLists.txt、编写JNI接口代码、配置build.gradle以及编译生成.so库的详细步骤,以帮助开发者快速上手Android平台的JNI开发和编译过程。
388 1
|
3月前
|
Linux API 开发工具
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
ijkplayer是由B站研发的移动端播放器,基于FFmpeg 3.4,支持Android和iOS。其源码托管于GitHub,截至2024年9月15日,获得了3.24万星标和0.81万分支,尽管已停止更新6年。本文档介绍了如何在Linux环境下编译ijkplayer的so库,以便在较新的开发环境中使用。首先需安装编译工具并调整/tmp分区大小,接着下载并安装Android SDK和NDK,最后下载ijkplayer源码并编译。详细步骤包括环境准备、工具安装及库编译等。更多FFmpeg开发知识可参考相关书籍。
120 0
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
|
3月前
|
编译器 Android开发
配置环境变量,使CMakeLists.txt可直接使用Android NDK工具链编译项目
配置环境变量,使CMakeLists.txt可直接使用Android NDK工具链编译项目
|
3月前
|
Ubuntu Shell API
Ubuntu 64系统编译android arm64-v8a 的openssl静态库libssl.a和libcrypto.a
Ubuntu 64系统编译android arm64-v8a 的openssl静态库libssl.a和libcrypto.a
|
4月前
|
Java Android开发 C++
🚀Android NDK开发实战!Java与C++混合编程,打造极致性能体验!📊
在Android应用开发中,追求卓越性能是不变的主题。本文介绍如何利用Android NDK(Native Development Kit)结合Java与C++进行混合编程,提升应用性能。从环境搭建到JNI接口设计,再到实战示例,全面展示NDK的优势与应用技巧,助你打造高性能应用。通过具体案例,如计算斐波那契数列,详细讲解Java与C++的协作流程,帮助开发者掌握NDK开发精髓,实现高效计算与硬件交互。
176 1
|
5月前
|
Java Android开发 芯片
使用Android Studio导入Android源码:基于全志H713 AOSP,方便解决编译、编码问题
本文介绍了如何将基于全志H713芯片的AOSP Android源码导入Android Studio以解决编译和编码问题,通过操作步骤的详细说明,展示了在Android Studio中利用代码提示和补全功能快速定位并修复编译错误的方法。
257 0
使用Android Studio导入Android源码:基于全志H713 AOSP,方便解决编译、编码问题
|
5月前
|
Ubuntu 开发工具 Android开发
Repo下载、编译AOSP源码:基于Ubuntu 21.04,android-12.1.0_r27
文章记录了作者在Ubuntu 21.04服务器上配置环境、下载并编译基于Android 12.1.0_r27版本的AOSP源码的过程,包括解决编译过程中遇到的问题和错误处理方法。
272 0
|
XML 存储 Android开发
解决 Android N 上报错:android.os.FileUriExposedException: file:///storage/emulated/0/
解决 Android N 上报错:android.os.FileUriExposedException: file:///storage/emulated/0/
1668 0
|
1月前
|
搜索推荐 前端开发 API
探索安卓开发中的自定义视图:打造个性化用户界面
在安卓应用开发的广阔天地中,自定义视图是一块神奇的画布,让开发者能够突破标准控件的限制,绘制出独一无二的用户界面。本文将带你走进自定义视图的世界,从基础概念到实战技巧,逐步揭示如何在安卓平台上创建和运用自定义视图来提升用户体验。无论你是初学者还是有一定经验的开发者,这篇文章都将为你打开新的视野,让你的应用在众多同质化产品中脱颖而出。
55 19
|
1月前
|
JSON Java API
探索安卓开发:打造你的首个天气应用
在这篇技术指南中,我们将一起潜入安卓开发的海洋,学习如何从零开始构建一个简单的天气应用。通过这个实践项目,你将掌握安卓开发的核心概念、界面设计、网络编程以及数据解析等技能。无论你是初学者还是有一定基础的开发者,这篇文章都将为你提供一个清晰的路线图和实用的代码示例,帮助你在安卓开发的道路上迈出坚实的一步。让我们一起开始这段旅程,打造属于你自己的第一个安卓应用吧!
60 14