-
Creator 版本:2.4.4
-
目标平台: Android
-
重现方式:
原生平台打包, 经常会遇到编译失败问题:
build/jsb-link/frameworks/runtime-src/proj.android-studio/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/cocos2dx_static/scripting/js-bindings/jswrapper/v8/debugger/inspector_socket_server.o.d: No such file or directory
经查,出现此问题的根本原因是因为windows 系统下,文件路径最长只能达到255个字符, 而cc引擎编辑出来的build文件路径太长, 导致编译工具截断了文件路径,从而出现无法找到文件异常.
- 此问题对于android 小白来说, 可能要浪费三五天时间还是无从下手解决,白白浪费大家时间.
期望引擎组能够从根本上解决这一问题, 解决方案也比较简单, 就是修改buildDir 指定为一个较短的临时目录即可. 相应的需要修改各模块里的相关目录. 具体修改方案如下:
- jsb-link/project-root/build.gradle
ext {
// 增加项目全局变量, 定义cocos js构建目录
assetRootDir = ""
}
allprojects {
// 增加以下内容,重写buildDir.
assetRootDir = "${new File(getRootDir(), "../../../").getAbsolutePath()}"
if (Os.isFamily(Os.FAMILY_WINDOWS)) {
setBuildDir("D:/temp/${getRootProject().name}/${getProject().name}")
} else {
setBuildDir("/temp/${getRootProject().name}/${getProject().name}")
}
}
- 修改各模块中的build.gradle
android.applicationVariants.all { variant ->
// delete previous files first
delete "${buildDir}/intermediates/merged_assets/"
variant.mergeAssets.doLast {
// 移除这一句, 改为: def sourceDir = assetRootDir
// def sourceDir = "${buildDir}/../../../../.."
def sourceDir = assetRootDir
copy {
from "${sourceDir}/assets"
into "${outputDir}/assets"
}
}
}
求引擎组直接修改引擎的编译模板内容, 直接做到一步到位.