VR打包安卓包失败, 日志提示NDK和Cocos偏好设置中不同

Creator 版本: 3.7.1
目标平台: Android Pico3

偏好中设置了NDK路径为 : D:\program\AndroidSdk\ndk\21.4.7075529

实际报错中发现并未使用指定的NDK

2023-2-24 14:25:07-log: [runCmd gradlew.bat] > Configure project :20230222_vr_demo
2023-2-24 14:25:07-log: [runCmd gradlew.bat - error] [CXX1101] NDK at D:\program\AndroidSdk\ndk did not have a source.properties file
[CXX1101] Location specified by android.ndkPath (D:\program\AndroidSdk\ndk) did not contain a valid NDK and couldn't be used
[CXX1101] NDK at D:\program\AndroidSdk\ndk did not have a source.properties file
[CXX1101] Location specified by android.ndkPath (D:\program\AndroidSdk\ndk) did not contain a valid NDK and couldn't be used

并且发现构建完成后, 用 Android Studio 打包还需要修改 Gradle Scripts/gradle.properties 里的PROP_NDK_PATH

PROP_NDK_PATH=D:\\program\\AndroidSdk\\ndk
修改为
PROP_NDK_PATH=D:\\program\\AndroidSdk\\ndk\\21.4.7075529

否则也会打包失败, 这是不是有一些关联性

1赞

验证没有出现你说的问题,你这边是新建工程测试的吗?

用的3.7.1, 然后打开的VR的那个实例~~~

刚用3.7.1新建了个XR项目, 在 Android Studio 中 ndk 路径正常, 也可以直接打包, 不过使用 cocos 的构建发布中的生成功能还是报错

2023-2-24 15:15:57-debug: // ---- build task native:onAfterCompressSettings ----
2023-2-24 15:15:57-debug: native:(onAfterCompressSettings) start...81%
2023-2-24 15:15:57-debug: Process: heapTotal 233.32MB heapUsed 219.00MB rss 648.28MB
2023-2-24 15:15:57-debug: generateCMakeConfig, {"CC_USE_GLES3":"set(CC_USE_GLES3 ON)","CC_USE_GLES2":"set(CC_USE_GLES2 OFF)","USE_SERVER_MODE":"set(USE_SERVER_MODE OFF)","NET_MODE":"set(NET_MODE 0)","XXTEAKEY":"","CC_ENABLE_SWAPPY":"set(CC_ENABLE_SWAPPY OFF)","APP_NAME":"set(APP_NAME 20230224_vr_helloworld)","COCOS_X_PATH":"set(COCOS_X_PATH \"C:/CocosDashboard_1.1.1/resources/editors/Creator/3.7.1/resources/resources/3d/engine/native\")","USE_JOB_SYSTEM_TASKFLOW":"set(USE_JOB_SYSTEM_TASKFLOW OFF)","USE_JOB_SYSTEM_TBB":"set(USE_JOB_SYSTEM_TBB OFF)","ENABLE_ANTIALIAS_FXAA":"set(ENABLE_ANTIALIAS_FXAA OFF)","USE_PHYSICS_PHYSX":"set(USE_PHYSICS_PHYSX OFF)","USE_OCCLUSION_QUERY":"set(USE_OCCLUSION_QUERY OFF)","USE_GEOMETRY_RENDERER":"set(USE_GEOMETRY_RENDERER OFF)","USE_DEBUG_RENDERER":"set(USE_DEBUG_RENDERER OFF)","USE_AUDIO":"set(USE_AUDIO ON)","USE_VIDEO":"set(USE_VIDEO ON)","USE_WEBVIEW":"set(USE_WEBVIEW ON)","USE_SOCKET":"set(USE_SOCKET ON)","USE_WEBSOCKET_SERVER":"set(USE_WEBSOCKET_SERVER OFF)","USE_SPINE":"set(USE_SPINE ON)","USE_DRAGONBONES":"set(USE_DRAGONBONES ON)","USE_XR":"set(USE_XR ON)","XR_OEM_HUAWEI":"set(XR_OEM_PICO ON)","CC_USE_VULKAN":"set(CC_USE_VULKAN OFF)"}
2023-2-24 15:15:57-log: While replace template content, file D:\web\study\cc\20230224_vr_helloworld\build\xr-pico\proj\main.cpp
2023-2-24 15:15:57-log: While replace template content, file D:\web\study\cc\20230224_vr_helloworld\build\xr-pico\proj\main.m
2023-2-24 15:15:57-log: While replace template content, file D:\web\study\cc\20230224_vr_helloworld\native\engine\xr-pico/entry/src/main/config.json
2023-2-24 15:15:57-log: update settings.properties
2023-2-24 15:15:57-log: update gradle.properties
2023-2-24 15:15:57-log: AndroidAPI level 26
2023-2-24 15:15:57-log: android instant not configured
2023-2-24 15:15:57-debug: // ---- build task native:onAfterCompressSettings ---- (62ms)
2023-2-24 15:15:57-debug: native:(onAfterCompressSettings) in 62 ms82%
2023-2-24 15:15:57-debug: xr-pico:(onAfterCompressSettings) start...82%
2023-2-24 15:15:57-debug: // ---- build task xr-pico:onAfterCompressSettings ----
2023-2-24 15:15:57-debug: Process: heapTotal 233.32MB heapUsed 219.57MB rss 648.39MB
2023-2-24 15:15:57-debug: // ---- build task xr-pico:onAfterCompressSettings ---- (1ms)
2023-2-24 15:15:57-debug: cocos-service:(onAfterCompressSettings) start...83%
2023-2-24 15:15:57-debug: xr-pico:(onAfterCompressSettings) in 1 ms83%
2023-2-24 15:15:57-debug: // ---- build task cocos-service:onAfterCompressSettings ----
2023-2-24 15:15:57-debug: Process: heapTotal 233.32MB heapUsed 218.95MB rss 648.42MB
2023-2-24 15:15:57-debug: // ---- build task cocos-service:onAfterCompressSettings ---- (13ms)
2023-2-24 15:15:57-debug: cocos-service:(onAfterCompressSettings) in 13 ms83%
2023-2-24 15:15:57-debug: native:(onAfterBuild) start...83%
2023-2-24 15:15:57-debug: // ---- build task native:onAfterBuild ----
2023-2-24 15:15:57-debug: Process: heapTotal 233.32MB heapUsed 219.42MB rss 648.42MB
2023-2-24 15:15:57-debug: // ---- build task native:onAfterBuild ---- (15ms)
2023-2-24 15:15:57-debug: native:(onAfterBuild) in 15 ms84%
2023-2-24 15:15:57-debug: // ---- build task xr-pico:onAfterBuild ----
2023-2-24 15:15:57-debug: xr-pico:(onAfterBuild) start...84%
2023-2-24 15:15:57-debug: Process: heapTotal 233.32MB heapUsed 219.52MB rss 648.42MB
2023-2-24 15:15:57-debug: // ---- build task xr-pico:onAfterBuild ---- (1ms)
2023-2-24 15:15:57-debug: xr-pico:(onAfterBuild) in 1 ms85%
2023-2-24 15:15:57-debug: cocos-service:(onAfterBuild) start...85%
2023-2-24 15:15:57-debug: // ---- build task cocos-service:onAfterBuild ----
2023-2-24 15:15:57-debug: Process: heapTotal 233.32MB heapUsed 219.60MB rss 648.42MB
2023-2-24 15:15:57-debug: // ---- build task cocos-service:onAfterBuild ---- (13ms)
2023-2-24 15:15:57-debug: cocos-service:(onAfterBuild) in 13 ms86%
2023-2-24 15:15:57-log: Asset DB is resume!
2023-2-24 15:15:57-debug: builder:build-project-total (11591ms)
2023-2-24 15:15:57-debug: build success in 11591 ms!
2023-2-24 15:15:57-debug: ================================ Build Task (xr-pico) Finished in (11601)ms ================================
2023-2-24 15:15:59-debug: // ---- builder:run-build-stage-make ----
2023-2-24 15:15:59-debug: Use build file cocos.compile.config.json in root(D:\web\study\cc\20230224_vr_helloworld\build\xr-pico)
2023-2-24 15:15:59-debug: init options success
2023-2-24 15:15:59-log: [task:make]: init options success, 10%
2023-2-24 15:15:59-log: [task:make]: native:(make) start..., 10%
2023-2-24 15:15:59-debug: native:(make) start...
2023-2-24 15:15:59-debug: // ---- build task native:make ----
2023-2-24 15:15:59-log: [runCmd]: gradlew.bat 20230224_vr_helloworld:assembleRelease
2023-2-24 15:16:00-log: [runCmd gradlew.bat] WARNING: The specified Android SDK Build Tools version (28.0.0) is ignored, as it is below the minimum supported version (29.0.2) for Android Gradle Plugin 4.1.0.
Android SDK Build Tools 29.0.2 will be used.


2023-2-24 15:16:00-log: [runCmd gradlew.bat - error] Warning: Mapping new ns http://schemas.android.com/repository/android/common/02 to old ns http://schemas.android.com/repository/android/common/01

Warning: Mapping new ns http://schemas.android.com/repository/android/generic/02 to old ns http://schemas.android.com/repository/android/generic/01

Warning: Mapping new ns http://schemas.android.com/sdk/android/repo/addon2/02 to old ns http://schemas.android.com/sdk/android/repo/addon2/01

Warning: Mapping new ns http://schemas.android.com/sdk/android/repo/addon2/03 to old ns http://schemas.android.com/sdk/android/repo/addon2/01

Warning: Mapping new ns http://schemas.android.com/sdk/android/repo/repository2/02 to old ns http://schemas.android.com/sdk/android/repo/repository2/01

Warning: Mapping new ns http://schemas.android.com/sdk/android/repo/repository2/03 to old ns http://schemas.android.com/sdk/android/repo/repository2/01

Warning: Mapping new ns http://schemas.android.com/sdk/android/repo/sys-img2/03 to old ns http://schemas.android.com/sdk/android/repo/sys-img2/01

Warning: Mapping new ns http://schemas.android.com/sdk/android/repo/sys-img2/02 to old ns http://schemas.android.com/sdk/android/repo/sys-img2/01

2023-2-24 15:16:00-log: [runCmd gradlew.bat] To suppress this warning, remove "buildToolsVersion '28.0.0'" from your build.gradle file, as each version of the Android Gradle Plugin now has a default version of the build tools.



2023-2-24 15:16:00-log: [runCmd gradlew.bat - error] 



2023-2-24 15:16:00-log: [runCmd gradlew.bat] > Task :20230224_vr_helloworld:preBuild UP-TO-DATE

> Task :20230224_vr_helloworld:extractProguardFiles

2023-2-24 15:16:00-log: [runCmd gradlew.bat]  UP-TO-DATE

> Task :20230224_vr_helloworld:preReleaseBuild UP-TO-DATE

> Task :libcocos:preBuild UP-TO-DATE

> Task :libcocos:preReleaseBuild UP-TO-DATE

> Task :libcocos:compileReleaseAidl NO-SOURCE

> Task :libservice:preBuild UP-TO-DATE

> Task :libservice:preReleaseBuild UP-TO-DATE

> Task :libservice:compileReleaseAidl NO-SOURCE

> Task :libxrcommon:preBuild UP-TO-DATE

> Task :libxrcommon:preReleaseBuild UP-TO-DATE

> Task :libxrcommon:compileReleaseAidl NO-SOURCE

> Task :20230224_vr_helloworld:compileReleaseAidl NO-SOURCE

> Task :libcocos:packageReleaseRenderscript NO-SOURCE

> Task :libservice:packageReleaseRenderscript NO-SOURCE

> Task :libxrcommon:packageReleaseRenderscript NO-SOURCE



2023-2-24 15:16:00-log: [runCmd gradlew.bat] > Task :20230224_vr_helloworld:compileReleaseRenderscript NO-SOURCE

> Task :20230224_vr_helloworld:generateReleaseBuildConfig UP-TO-DATE

> Task :20230224_vr_helloworld:javaPreCompileRelease UP-TO-DATE

> Task :libcocos:writeReleaseAarMetadata UP-TO-DATE

> Task :libservice:writeReleaseAarMetadata UP-TO-DATE

> Task :libxrcommon:writeReleaseAarMetadata UP-TO-DATE

> Task :20230224_vr_helloworld:checkReleaseAarMetadata UP-TO-DATE



2023-2-24 15:16:00-log: [runCmd gradlew.bat] > Task :20230224_vr_helloworld:generateReleaseResValues UP-TO-DATE

> Task :20230224_vr_helloworld:generateReleaseResources

2023-2-24 15:16:00-log: [runCmd gradlew.bat]  UP-TO-DATE

> Task :libcocos:compileReleaseRenderscript NO-SOURCE

> Task :libcocos:generateReleaseResValues UP-TO-DATE

> Task :libcocos:generateReleaseResources UP-TO-DATE

> Task :libcocos:packageReleaseResources UP-TO-DATE

> Task :libservice:compileReleaseRenderscript NO-SOURCE

> Task :libservice:generateReleaseResValues UP-TO-DATE

> Task :libservice:generateReleaseResources UP-TO-DATE

> Task :libservice:packageReleaseResources UP-TO-DATE

> Task :libxrcommon:compileReleaseRenderscript NO-SOURCE

> Task :libxrcommon:generateReleaseResValues UP-TO-DATE

> Task :libxrcommon:generateReleaseResources UP-TO-DATE

> Task :libxrcommon:packageReleaseResources UP-TO-DATE



2023-2-24 15:16:00-log: [runCmd gradlew.bat] > Task :20230224_vr_helloworld:mergeReleaseResources UP-TO-DATE

> Task :20230224_vr_helloworld:createReleaseCompatibleScreenManifests UP-TO-DATE

> Task :20230224_vr_helloworld:extractDeepLinksRelease UP-TO-DATE

> Task :libcocos:extractDeepLinksRelease UP-TO-DATE

> Task :libcocos:processReleaseManifest UP-TO-DATE

> Task :libservice:extractDeepLinksRelease UP-TO-DATE

> Task :libservice:processReleaseManifest UP-TO-DATE

> Task :libxrcommon:extractDeepLinksRelease UP-TO-DATE



2023-2-24 15:16:00-log: [runCmd gradlew.bat] > Task :libxrcommon:processReleaseManifest UP-TO-DATE

> Task :20230224_vr_helloworld:processReleaseMainManifest FAILED



2023-2-24 15:16:00-log: [runCmd gradlew.bat - error] 

FAILURE: Build failed with an exception.



* What went wrong:

Execution failed for task ':20230224_vr_helloworld:processReleaseMainManifest'.

> Unable to make field private final java.lang.String java.io.File.path accessible: module java.base does not "opens java.io" to unnamed module @63616fc1



* Try:

Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.



* Get more help at https://help.gradle.org



BUILD FAILED in 1s



2023-2-24 15:16:00-log: [runCmd gradlew.bat] 24 actionable tasks: 1 executed, 23 up-to-date



2023-2-24 15:16:01-warn: failed to exec gradlew.bat 20230224_vr_helloworld:assembleRelease
2023-2-24 15:16:01-error: make package D:\web\study\cc\20230224_vr_helloworld\build\xr-pico failed!
2023-2-24 15:16:01-log: [task:make]: failed!

这个还是没有复现。

你这边全局环境变量有设置 java_home 吗?像是 java 版本不对。可以移除掉全局的 java_home 试试

嗯, 目前可以用 Android Studio 打包, 也还行~~~ , JAVA_HOME C:\Program Files\Java\jdk-18.0.2.1 我用的这个, 刚删除了, 还是没成功, 不知道是不是要重启~

能用 AS 打包的话就用 AS 打包吧,编辑器的 APK 生成功能一直以来在不同的用户设备的开发环境下都不能保证 100% 的成功率。所以建议使用 AS 打包比较稳妥。

你好,桌球的技术分享里面,我把冲量值40改成80发现球有几率重出球桌,桌子边缘的碰撞失效了,这个要怎么解决或者从什么方向入手解决?

你把 CCD 打开试试:

https://docs.cocos.com/creator/manual/zh/physics/physics-ccd.html#开启-ccd

好的 我一会儿试试,还有个问题咨询一下代码里自己起一个定时器调用postUpdate自己刷新物理步进,这样的话目的是覆盖物理系统自己的postupdate吗?也没看到是hack了物理系统的postupdate

建议是像开源方案里面一样自己写一个 postUpdate 函数。这样你可以比较好的控制物理刷新。如果你直接重写引擎内的 postUpdate ,那么之后如果你想切换回自动物理刷新,就麻烦了。

会不会覆盖你自己跑一下自动物理刷新就知道啦哈哈

就是这里感觉有点奇怪,而且固定跑120帧,自己控制物理刷新然后每一帧引擎调用的postupdate也会刷新物理,如果同步的话不是应该直接接管物理刷新频率然后每次设置冲量前同步物理状态让误差最小吗?为什么不是接管而是在起一个定时器刷新没搞懂

https://docs.cocos.com/creator/manual/zh/editor/project/physics-configs.html#属性说明

把下图红色箭头所指的勾去掉,这样引擎就不会自动刷新物理世界了。这样就只能靠手动刷新才能更新物理世界。

你可以按你的思路试试,条条大路通罗马。

好吧,原来自动刷新关了

我的思路不就是源码的思路吗?每次同步前先同步所有球的状态,然后设置冲量固定步进刷新物理。我就是看的源码的! :joy:

1赞