#Cocos Creator# 安卓包运行时找不到settings.js文件?
问题环境
CocosCreator工程,输出Android Studio工程,用Android Studio打开,根据提示升级相关的Gradle:
然后打包,安装到安卓手机上,运行测试,咦,怎么闪退了?
如果查看logcat日志,可以看到错误:
完整的错误信息:
E/jswrapper: ScriptEngine::onGetStringFromFile jsb-adapter/jsb-builtin.js not found, possible missing file.
ScriptEngine::runScript script jsb-adapter/jsb-builtin.js, buffer is empty!
E/jswrapper: ScriptEngine::onGetStringFromFile src/settings.js not found, possible missing file.
ScriptEngine::runScript script src/settings.js, buffer is empty!
[ERROR] Failed to invoke require, location: /Applications/CocosCreator.app/Contents/Resources/cocos2d-x/cocos/scripting/js-bindings/manual/jsb_global.cpp:292
ScriptEngine::onGetStringFromFile src/cocos2d-jsb.js not found, possible missing file.
ScriptEngine::runScript script src/cocos2d-jsb.js, buffer is empty!
[ERROR] Failed to invoke require, location: /Applications/CocosCreator.app/Contents/Resources/cocos2d-x/cocos/scripting/js-bindings/manual/jsb_global.cpp:292
D/vndksupport: Loading /vendor/lib64/hw/android.hardware.graphics.mapper@2.0-impl.so from current namespace instead of sphal namespace.
E/jswrapper: ScriptEngine::onGetStringFromFile jsb-adapter/jsb-engine.js not found, possible missing file.
ScriptEngine::runScript script jsb-adapter/jsb-engine.js, buffer is empty!
[ERROR] Failed to invoke require, location: /Applications/CocosCreator.app/Contents/Resources/cocos2d-x/cocos/scripting/js-bindings/manual/jsb_global.cpp:292
D/vndksupport: Loading /vendor/lib64/hw/gralloc.sdm845.so from current namespace instead of sphal namespace.
E/jswrapper: ERROR: Uncaught TypeError: Cannot read property 'debug' of undefined, location: main.js:0:0
STACK:
[0]window.boot@main.js:10
[1]anonymous@main.js:212
ScriptEngine::evalString script main.js, failed!
A/libc: /Applications/CocosCreator.app/Contents/Resources/cocos2d-x/cocos/scripting/js-bindings/jswrapper/Value.cpp:539: se::Object *se::Value::toObject() const: assertion "isObject()" failed
Fatal signal 6 (SIGABRT), code -6 in tid 32669 (GLThread 109567), pid 32595 (dowgame.balance)
Application terminated.
这是怎么回事?
原因
首先,检查一下导出的apk包是不是正常的。
直接在Android Studio里,双击打开对应的apk,可以查看包里的内容
果然没有js文件!
有什么办法呢?
解决方法
- 重新打一个包,然后不升级Gradle,直接打包。
看看这时候的apk包是否正常:
居然是正常的,看来是升级Gradle以后的产生的问题。
- 如果升级Gradle,需要修改一下build.gradle
android.applicationVariants.all { variant ->
// delete previous files first
delete "${buildDir}/intermediates/merged_assets/${variant.dirName}"
variant.mergeAssets.doLast {
def sourceDir = "${buildDir}/../../../../.."
// 以下几行是旧的代码,在新版Gradle下有问题
// copy {
// from "${sourceDir}/res"
// into "${outputDir}/res"
// }
//
// copy {
// from "${sourceDir}/src"
// into "${outputDir}/src"
// }
//
// copy {
// from "${sourceDir}/jsb-adapter"
// into "${outputDir}/jsb-adapter"
// }
// 新的拷贝文件的方法,在新版Gradle可用
copy{
from "${sourceDir}"
include "res/**"
include "src/**"
include "jsb-adapter/**"
into outputDir
}
copy {
from "${sourceDir}/main.js"
from "${sourceDir}/project.json"
into outputDir
}
}
}
打包测试,这次从打包的临时目录查看一下,文件都在
临时文件目录:xx/app/build/intermediates/merged_assets/debug/out