[√]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开发
解决Android运行出现NDK at /Library/Android/sdk/ndk-bundle did not have a source.properties file
解决Android运行出现NDK at /Library/Android/sdk/ndk-bundle did not have a source.properties file
31 4
解决Android运行出现NDK at /Library/Android/sdk/ndk-bundle did not have a source.properties file
|
7天前
|
网络安全 图形学 Android开发
Unity与安卓丨AS报错:SSL peer shut down incorrectly
Unity与安卓丨AS报错:SSL peer shut down incorrectly
Unity与安卓丨AS报错:SSL peer shut down incorrectly
|
7天前
|
Android开发
Android编译出现Warning: Mapping new ns to old ns的解决方案
Android编译出现Warning: Mapping new ns to old ns的解决方案
17 3
|
7天前
|
开发工具 图形学 Android开发
Unity与安卓丨unity报错:SDK Tools version 0.0 < 26.1.1
Unity与安卓丨unity报错:SDK Tools version 0.0 < 26.1.1
|
7天前
|
API Android开发 图形学
UNITY与安卓⭐三、安卓报错答疑合集
UNITY与安卓⭐三、安卓报错答疑合集
|
7天前
|
Java Android开发
解决Android编译报错:Unable to make field private final java.lang.String java.io.File.path accessible
解决Android编译报错:Unable to make field private final java.lang.String java.io.File.path accessible
25 1
|
7天前
|
Android开发
解決Android报错:Could not initialize class org.codehaus.groovy.reflection.ReflectionCache
解決Android报错:Could not initialize class org.codehaus.groovy.reflection.ReflectionCache
18 1
|
8天前
|
开发工具 Android开发
解决Android Studio编译提示NDK is missing a “platforms“ directory
解决Android Studio编译提示NDK is missing a “platforms“ directory
38 1
|
7天前
|
Android开发
解决Android、Flutter编译时Gradle报错:javax.net.ssl.SSLException: Connection reset
解决Android、Flutter编译时Gradle报错:javax.net.ssl.SSLException: Connection reset
37 0
|
Java Android开发
Android Studio常见报错及处理办法
在Android Studio上点了update,系统自动升级,自动重启Android Studio后,以前的项目Gradle正常编译: Unable to start the daemon process.
1640 0