[√]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 构建系统,并且会自动查找并使用默认位置的构建脚本文件。

目录
相关文章
|
7月前
|
Android开发 Windows
Android studio 报错Connect to 127.0.0.1:8888 [/127.0.0.1] failed: Connection refused: connect(已解决)
这是一篇关于解决Android Studio报错“Connect to 127.0.0.1:8888 failed: Connection refused”的文章。问题通常因系统代理设置被Android Studio自动保存导致。解决方法是找到系统中Android Studio使用的gradle.properties文件(位于Windows的C:\Users\你的电脑用户名\.gradle或Mac的/Users/.{你的用户目录}/.gradle),删除或注释掉多余的代理配置后保存并重新Sync项目。希望此经验能帮助快速解决同类问题!
1193 36
|
Java Android开发 C++
Android Studio JNI 使用模板:c/cpp源文件的集成编译,快速上手
本文提供了一个Android Studio中JNI使用的模板,包括创建C/C++源文件、编辑CMakeLists.txt、编写JNI接口代码、配置build.gradle以及编译生成.so库的详细步骤,以帮助开发者快速上手Android平台的JNI开发和编译过程。
1119 1
|
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开发知识可参考相关书籍。
498 0
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
|
编译器 Android开发
配置环境变量,使CMakeLists.txt可直接使用Android NDK工具链编译项目
配置环境变量,使CMakeLists.txt可直接使用Android NDK工具链编译项目
|
Ubuntu Shell API
Ubuntu 64系统编译android arm64-v8a 的openssl静态库libssl.a和libcrypto.a
Ubuntu 64系统编译android arm64-v8a 的openssl静态库libssl.a和libcrypto.a
|
Java Android开发 C++
🚀Android NDK开发实战!Java与C++混合编程,打造极致性能体验!📊
在Android应用开发中,追求卓越性能是不变的主题。本文介绍如何利用Android NDK(Native Development Kit)结合Java与C++进行混合编程,提升应用性能。从环境搭建到JNI接口设计,再到实战示例,全面展示NDK的优势与应用技巧,助你打造高性能应用。通过具体案例,如计算斐波那契数列,详细讲解Java与C++的协作流程,帮助开发者掌握NDK开发精髓,实现高效计算与硬件交互。
546 1
|
Java Android开发 芯片
使用Android Studio导入Android源码:基于全志H713 AOSP,方便解决编译、编码问题
本文介绍了如何将基于全志H713芯片的AOSP Android源码导入Android Studio以解决编译和编码问题,通过操作步骤的详细说明,展示了在Android Studio中利用代码提示和补全功能快速定位并修复编译错误的方法。
1242 0
使用Android Studio导入Android源码:基于全志H713 AOSP,方便解决编译、编码问题
|
Android开发 数据格式 JSON
android报错 Expected BEGIN_OBJECT but was STRING at line 1 column 39 path $
      我在使用retrofit和Gson配合时,出现了这个问题,疑惑中乱七八糟瞎搞了一个下午没有解决。期间怀疑Gson解析不能使用泛型(因为我的解析使用了泛型),后来又觉得可能是我的关键字正好是解析器的某个关键字导致的异常,也打算过自定义Gson的解析过程,其实这些都不是。         第二天才搞明白,真正的问题是我的数据结构有问题,或者说我的解析出现了问题。  
4654 0
|
2月前
|
移动开发 前端开发 Android开发
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
336 12
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
2月前
|
移动开发 JavaScript 应用服务中间件
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
311 5
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡