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 中,使用 externalNativeBuild
和 ndk
块来配置 NDK 构建时,主要区别如下:
- 语法和位置:
externalNativeBuild
是一个 Gradle 插件,用于配置使用外部构建系统进行原生代码构建。它是在android
块的直接子级中进行配置。而ndk
是一个内置的 Android 构建插件,用于配置 NDK 构建相关的参数。它是在android
块中的defaultConfig
、buildTypes
或productFlavors
块的内部进行配置。 - 灵活性:
externalNativeBuild
更为灵活,可以支持不同的外部构建系统,如cmake
、ndk-build
等。你可以根据需要选择最适合的构建系统,并通过externalNativeBuild
配置其参数。而ndk
只能用于配置使用ndk-build
进行构建的情况。 - 文件位置: 如果使用
externalNativeBuild
,你需要将外部构建系统的脚本文件(如CMakeLists.txt
或Android.mk
)放置在指定的位置,并使用path
属性指定文件的路径。而ndk
允许你将 NDK 构建脚本文件直接放置在默认的位置,Gradle 会自动查找和使用它们。 - ABI 过滤器: 在
externalNativeBuild
中,你可以使用abiFilters
属性指定需要构建的 ABI 列表,过滤掉其他不需要的 ABI。而在ndk
块中,你可以直接在其内部使用abiFilters
方法来设置相同的过滤器。
总的来说,externalNativeBuild
提供了更灵活的配置选项,可以适应不同的外部构建系统,并且需要手动指定构建脚本文件的位置。而 ndk
是 Android 默认的构建插件,只支持 ndk-build
构建系统,并且会自动查找并使用默认位置的构建脚本文件。