cocoscreator 2.1.2 编译app的问题

  • Creator 版本:2.1.2
    CC上的模拟器,浏览器测试均运行正常
    构建正常,编译报错。
    编译环境:


    NDK:E:\Android\Sdk\ndk\21.0.6113669
    其他版本 17.2.4988734/18.1.5063045/19.2.5345600 也都试过
    SDK:23,26,28都试过

  • 目标平台:Android
    *重现方式: 编译

  • 首个报错:
    编译模式:release
    使用 Android Studio 工程:D:\Work\Coscos2dProject\MahjongAppV01\build\jsb-link\frameworks\runtime-src\proj.android-studio
    正在生成 apk 文件…
    正在执行:’“D:\Work\Coscos2dProject\MahjongAppV01\build\jsb-link\frameworks\runtime-src\proj.android-studio\gradlew.bat” --parallel --info assembleRelease’

Initialized native services in: C:\Users\longk.gradle\native
Found daemon DaemonInfo{pid=18124, address=[5e601340-19a8-470d-85de-18b23d3bf596 port:55617, addresses:[/127.0.0.1, /0:0:0:0:0:0:0:1]], state=Idle, lastBusy=1622446112520, context=DefaultDaemonContext[uid=2d7a670e-a628-4023-a09f-4ef6159da1f9,javaHome=E:\Android\Android Studio\jre,daemonRegistryDir=C:\Users\longk.gradle\daemon,pid=18124,idleTimeout=10800000,daemonOpts=-XX:+HeapDumpOnOutOfMemoryError,-Xmx1024m,-Dfile.encoding=GBK,-Duser.country=CN,-Duser.language=zh,-Duser.variant]} however its context does not match the desired criteria.
Java home is different.
Wanted: DefaultDaemonContext[uid=null,javaHome=C:\Program Files\Java\jdk1.8.0_05,daemonRegistryDir=C:\Users\longk.gradle\daemon,pid=1584,idleTimeout=null,daemonOpts=-XX:+HeapDumpOnOutOfMemoryError,-Xmx1024m,-Dfile.encoding=GBK,-Duser.country=CN,-Duser.language=zh,-Duser.variant]
Actual: DefaultDaemonContext[uid=2d7a670e-a628-4023-a09f-4ef6159da1f9,javaHome=E:\Android\Android Studio\jre,daemonRegistryDir=C:\Users\longk.gradle\daemon,pid=18124,idleTimeout=10800000,daemonOpts=-XX:+HeapDumpOnOutOfMemoryError,-Xmx1024m,-Dfile.encoding=GBK,-Duser.country=CN,-Duser.language=zh,-Duser.variant]

Looking for a different daemon…
Removing 2 daemon stop events from registry
Starting a Gradle Daemon, 1 incompatible Daemon could not be reused, use --status for details
Starting process ‘Gradle build daemon’. Working directory: C:\Users\longk.gradle\daemon\4.10.1 Command: C:\Program Files\Java\jdk1.8.0_05\bin\java.exe -XX:+HeapDumpOnOutOfMemoryError -Xmx1024m -Dfile.encoding=GBK -Duser.country=CN -Duser.language=zh -Duser.variant -cp C:\Users\longk.gradle\wrapper\dists\gradle-4.10.1-all\25vec0eimrsoqjasnun8prrj45\gradle-4.10.1\lib\gradle-launcher-4.10.1.jar org.gradle.launcher.daemon.bootstrap.GradleDaemon 4.10.1
Successfully started process ‘Gradle build daemon’
An attempt to start the daemon took 1.693 secs.
The client will now receive all logging from the daemon (pid: 17128). The daemon log file: C:\Users\longk.gradle\daemon\4.10.1\daemon-17128.out.log
Starting build in new daemon [memory: 954.7 MB]
Using 12 worker leases.
Starting Build
Settings evaluated using settings file ‘D:\Work\Coscos2dProject\MahjongAppV01\build\jsb-link\frameworks\runtime-src\proj.android-studio\settings.gradle’.
Projects loaded. Root project using build file ‘D:\Work\Coscos2dProject\MahjongAppV01\build\jsb-link\frameworks\runtime-src\proj.android-studio\build.gradle’.
Included projects: [root project ‘proj.android-studio’, project ‘:libcocos2dx’, project ‘:MahjongAppV01’]
Parallel execution is an incubating feature.

Configure project :
Evaluating root project ‘proj.android-studio’ using build file ‘D:\Work\Coscos2dProject\MahjongAppV01\build\jsb-link\frameworks\runtime-src\proj.android-studio\build.gradle’.

Configure project :libcocos2dx
Evaluating project ‘:libcocos2dx’ using build file ‘D:\CocosCreator_2.1.2\resources\cocos2d-x\cocos\platform\android\libcocos2dx\build.gradle’.

FAILURE: Build failed with an exception.

  • Where:
    Build file ‘D:\CocosCreator_2.1.2\resources\cocos2d-x\cocos\platform\android\libcocos2dx\build.gradle’ line: 1
    Creating configuration androidTestUtil

  • What went wrong:
    A problem occurred evaluating project ‘:libcocos2dx’.

Failed to apply plugin [id ‘com.android.library’]
Could not create an instance of type com.android.build.gradle.LibraryExtension_Decorated.
Could not create an instance of type com.android.build.gradle.internal.api.DefaultAndroidSourceSet.
Uninitialized object exists on backward branch 70
Exception Details:
Location:
com/android/build/gradle/internal/scope/BuildArtifactsHolder.newArtifact(Lcom/android/build/api/artifact/BuildableArtifact;)Lcom/android/build/gradle/internal/scope/BuildArtifactsHolder$BuildableArtifactData; @119: goto
Reason:
Error exists in the bytecode
Bytecode:
0000000: bb02 0559 2bb9 0208 0100 c000 b82b b902
0000010: 0c01 0001 b902 1202 0059 1302 14b8 0051
0000020: c001 734d 3a0d 3a0c 3a0b 2c4e bb01 a659
0000030: 2c10 0ab8 0177 b701 a7c0 00b8 3a04 2db9
0000040: 018e 0100 3a05 1905 b901 9401 0099 002d
0000050: 1905 b901 9801 003a 0619 0419 06c0 00f1
0000060: 3a07 3a0e 1907 b902 1501 003a 0f19 0e19
0000070: 0fb9 01ad 0200 57a7 ffcf 1904 c001 af3a
0000080: 0e19 0b19 0c19 0d19 0eb7 0218 b0
Stackmap Table:
full_frame(@70,{Object[#2],Object[#83],Object[#371],Object[#371],Object[#184],Object[#400],Top,Top,Top,Top,Top,Uninitialized[#0],Uninitialized[#0],Object[#184]},{})
same_frame(@122)

  • Try:
    Run with --stacktrace option to get the stack trace. Run with --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 5s
执行命令出错,返回值:1。

  • 重现概率: 100%

z最后在AS中编译,t在moudlex下的build.gradle的android节点下添加:

compileOptions {
sourceCompatibility org.gradle.api.JavaVersion.VERSION_1_8
targetCompatibility org.gradle.api.JavaVersion.VERSION_1_8
}
同时添加ant.jar包
AS编译通过,但是安装到真机(华为NOVA 7 SE 5G上),运行就黑屏b
S的环境:A




贴下android的运行日志,先确认下是否运行报错了。

这是运行AS编译成功,但是运行黑屏时的错误代码:
2021-05-31 19:22:45.244 17764-17848/com.quehaojd.mahjongapp E/jswrapper: ScriptEngine::evalString script src/project.js, failed!
2021-05-31 19:22:45.244 17764-17848/com.quehaojd.mahjongapp E/jswrapper: [ERROR] Failed to invoke require, location: D:/CocosCreator_2.1.2/resources/cocos2d-x/cocos/scripting/js-bindings/manual/jsb_global.cpp:292
2021-05-31 19:22:45.244 17764-17848/com.quehaojd.mahjongapp E/jswrapper: ERROR: Uncaught TypeError: Cannot read property ‘0’ of undefined, location: src/project.js:0:0
STACK:
[0]o@src/project.js:17
[1]anonymous@src/project.js:18
[2]window.__require.calc.calc/Envir@src/project.js:92
[3]o@src/project.js:17
[4]e@src/project.js:23
[5]anonymous@src/project.js:25
[6]o@jsb-adapter/jsb-engine.js:1
[7]anonymous@jsb-adapter/jsb-engine.js:1
[8]downloadScript@jsb-adapter/jsb-engine.js:1430
[9]153.p.handle@src/cocos2d-jsb.js:22289
[10]o@src/cocos2d-jsb.js:22970
[11]o@src/cocos2d-jsb.js:22988
[12]o@src/cocos2d-jsb.js:22988
[13]160.c.flowIn@src/cocos2d-jsb.js:23036
[14]157.y.append@src/cocos2d-jsb.js:22749
[15]147.x.load@src/cocos2d-jsb.js:21644
[16]prepare@src/cocos2d-jsb.js:8215
[17]run@src/cocos2d-jsb.js:8225
[18]window.boot@main.js:180
[19]anonymous@main.js:221
2021-05-31 19:22:45.244 17764-17848/com.quehaojd.mahjongapp E/jswrapper: ScriptEngine::evalString script main.js, failed!

报错位置是 [0]o@src/project.js:17,project.js 包含的是业务逻辑代码,所以检查你自己游戏的业务逻辑代码。你可以尝试远程调试。
https://docs.cocos.com/creator/manual/zh/publish/debug-jsb.html#真机调试

结贴:
问题已解决:
1、build.gradle line:1的错误估计是由于我们的开发主机安装了非常多的版本的jdk和vs造成
在重装系统以及按照官网攻略重装CC环境后,问题解决;
但是,我们仍然强烈建议官方给出各版本匹配的环境(以及环境的配置版本),不要让新手逐个去测试,太花时间了,一张表可以解决的问题;
2、关于编译黑屏 jsb_global.cpp:292 的问题
是由于低版本纹理压缩的bug,在我们把2.1.2升级到2.4.5后,问题解决;
最后:
建议官网开辟一个专区,可以根据问题内容查找到官方测试过的解决方案,不要和论坛内容放在一起大杂烩。论坛我们搜索到的方案,几乎无效;

该主题在最后一个回复创建后14天后自动关闭。不再允许新的回复。