cocos3.17官方DEMO打包出错

工具android studio,只有cpp-test可以正常打包,js-test和lua-empty-test都出错,出错提示都一样的。
NDK_PROJECT_PATH=null

NDK_PROJECT_PATH=null 这提示很明显了啊, ndk 的path再设置设置啊,是android studio 没设置好,还是打包文件没设置好,找找吧

1赞

确实是NDK没设置好,谢谢楼上,不过又有新问题了,打包的时候LUA文件和JS文件打包不进去怎么办?

09-30 11:20:44.758 1150-1175/? D/cocos2d-x debug info: {
cocos2d.x.version: cocos2d-x-3.17
cocos2d.x.compiled_with_gl_state_cache: true
gl.supports_S3TC: false
cocos2d.x.build_type: DEBUG
gl.supports_vertex_array_object: true
cocos2d.x.compiled_with_profiler: false
gl.renderer: Adreno ™ 540
gl.vendor: Qualcomm
gl.version: OpenGL ES 3.1
gl.supports_ATITC: false
gl.supports_ETC1: true
gl.supports_OES_packed_depth_stencil: true
gl.max_texture_units: 16
gl.supports_PVRTC: false
gl.max_texture_size: 32768
gl.supports_NPOT: true
gl.supports_OES_map_buffer: false
gl.supports_OES_depth24: true
gl.supports_discard_framebuffer: false
gl.supports_BGRA8888: false
}
09-30 11:20:44.768 1150-1175/? D/EngineDataManager.cpp: setAnimationInterval by game: 0.0167
09-30 11:20:44.768 1150-1175/? D/EngineDataManager.cpp: JNI setAnimationInterval: 0.016667
09-30 11:20:44.768 273-285/? I/WindowManager: Screen frozen for +1s210ms due to Window{4a8bb12c u0 Starting org.cocos2dx.js_tests}
09-30 11:20:45.138 1150-1175/? D/cocos2d-x debug info: cocos2d: fullPathForFilename: No file found at script/jsb_prepare.js. Possible missing file.
09-30 11:20:45.138 1150-1175/? D/cocos2d-x debug info: cocos2d: fullPathForFilename: No file found at script/jsb_prepare.jsc. Possible missing file.
09-30 11:20:45.138 1150-1175/? D/cocos2d-x debug info: cocos2d: fullPathForFilename: No file found at script/jsb_prepare.js. Possible missing file.
09-30 11:20:45.138 1150-1175/? D/ScriptingCore.cpp: ScriptingCore:: compileScript fail:script/jsb_prepare.js

拆包看了看所有JS文件都没打包进去。

LUA也是一样的情况 所有LUA文件都没打包进去

做为一个新手,COCOS真的体验极差,什么不说好歹让我把DEMO运行起来吧。COCOSJS和COCOSLUA都运行不了。

打包过程用的 Android Studio 么?

如果你用的 cocos 命令行,请首先确认一下环境变量设置的是不是 3.17 包内的。

这些基础的功能,在版本发布前有验证过。

用的 Android studio,看了2天各种查资料终于定位到这里,相应的文件是复制过来的 intermediates/assets/debug/src里有齐全的LUA文件,但是不知道怎么打包到最终的APK文件里。我就想运行个DEMO罢了,不用连gradle也要精通吧,已经花了2天时间了,还是解决不了。麻烦看看。
variant.mergeAssets.doLast {
copy {
from “{buildDir}/../../../../../res" into "{buildDir}/intermediates/assets/{variant.dirName}/res" } println "path="+"{buildDir}/intermediates/assets/{variant.dirName}/res" copy { from "{buildDir}/…/…/…/…/…/src”
into “{buildDir}/intermediates/assets/{variant.dirName}/src”
}

项目的编译过程是正常的,就是打包的时候少了个assets文件夹已经里面的LUA文件和res

这边验证了一下 lua-empty-test 的 debug 和 release 两种构建,资源都有打包进去。

不清楚你那边是什么状况。

Gradle 会执行很多 task,你要了解打包的细节,可以输出 Gradle 的日志信息。比如通过执行项目目录下的 gradlew 命令

./gradlew assembleDebug -PPROP_BUILD_TYPE=ndk-build --parallel --info

1赞

你好,确实并没有打入assets,执行了 ./gradlew assembleDebug -PPROP_BUILD_TYPE=ndk-build --parallel --info

Task :test:mergeDebugAssets
file or directory ‘/Users/mars/Desktop/Test/frameworks/runtime-src/proj.android/app/libs’, not found
Task ‘:test:mergeDebugAssets’ is not up-to-date because:
Output property ‘incrementalFolder’ file /Users/mars/Desktop/Test/frameworks/runtime-src/proj.android/app/build/intermediates/incremental/mergeDebugAssets has been removed.
Output property ‘incrementalFolder’ file /Users/mars/Desktop/Test/frameworks/runtime-src/proj.android/app/build/intermediates/incremental/mergeDebugAssets/merger.xml has been removed.
Output property ‘outputDir’ file /Users/mars/Desktop/Test/frameworks/runtime-src/proj.android/app/build/intermediates/merged_assets/debug/mergeDebugAssets/out has been removed.
All input files are considered out-of-date for incremental task ‘:test:mergeDebugAssets’.
Unable do incremental execution: full task run
file or directory ‘/Users/mars/Desktop/Test/frameworks/runtime-src/proj.android/app/libs’, not found
/Users/mars/Desktop/Test/frameworks/runtime-src/proj.android/app/build/…/…/…/…/…/res
/Users/mars/Desktop/Test/frameworks/runtime-src/proj.android/app/build/intermediates/assets/debug/res
还有这些 Test:mergeDebugAssets 编译脚本是在哪个文件写的?

你是不是升级了 Gradle 到 4.6 & android plugin 3.2 ?这是 Gradle 自己的问题,你手动把 android plugin 从 3.2 调整到 3.1 就 OK 了。


参考1 PR 的讨论:
https://github.com/cocos2d/cocos2d-x/pull/19113#issuecomment-429795913

参考2

https://developer.android.com/studio/known-issues

variant-specific tasks are no longer created during the configuration sta…

assets 拷贝的逻辑在 build.gradle 中的 android.applicationVariants.all { } 代码块

这是个什么bug,我测试了一下,的确如此。我尝试用Android studio打包,把gradle改成3.2.1,就没有assets文件夹,改成3.1.0就有了。

这个BUG已经在GITHUB上报告过的,你试试最新的3.17.1吧,据说修改好了。
这个不是cocos的问题,是gradle升级变化的问题。
你要是熟悉gradle脚本,应该可以自己写钩子复制过去的。

1赞

我也是在这里折腾了很久很久很久。。。。

Android studio 3.5 打包也出现了这个问题,我真是日到狗了

@513576674

https://github.com/cocos2d/cocos2d-x/pull/19958

github 仓库搜索 gradle,另外上面 PR 也有解决方法

@leda
感谢您的回复,发帖了好几天都没人回。
看了一下里面的修复,貌似主要是修改路径 等。 我打包的时候,出现了NDK_PROJECT_PATH=null 的问题,请问一下是由于 项目的路径 长度过长导致的问题么?
或者可以方便加下我的qq,详细向您请教一下?

这是我之前的发帖:
https://forum.cocos.com/t/cocos2d-x3-17-js-testdemo-as-ndk-project-path-null/82735

感谢您的回复,发帖了好几天都没人回。
看了一下里面的修复,貌似主要是修改路径 等。 我打包的时候,出现了NDK_PROJECT_PATH=null 的问题,请问一下是由于 项目的路径 长度过长导致的问题么?
或者可以方便加下我的qq,详细向您请教一下?

这是我之前的发帖:
https://forum.cocos.com/t/cocos2d-x3-17-js-testdemo-as-ndk-project-path-null/82735

修复路径,就解决了打包后 assets 目录为空的问题。NDK_PROJECT_PATH = null 可以忽略,不是问题。

No rule to make target 可能之前已经存在问题了,建议先点击 清除缓存并重启 Android Studio,然后再看日志报错。

另外先排除一下自己电脑上有多个 cocos 版本的问题 @513576674