3.17.2版本新建工程打包没有assets咋回事

3.17.2版本新建工程打包成功发现没有assets是需要在哪里修改配置么?

1赞

新建的工程,打包成功就这样了,怎么才能把cocos代码和资源打包进去?

android.applicationVariants.all { variant ->
    delete "${buildDir}/intermediates/merged_assets/${variant.name}/${variant.mergeAssetsProvider.name}/out/src"
    delete "${buildDir}/intermediates/assets/${variant.name}/src"

    variant.assembleProvider.getOrNull().doLast{
        delete "${buildDir}/intermediates/merged_assets/${variant.name}/${variant.mergeAssetsProvider.name}/out/src"
        delete "${buildDir}/intermediates/assets/${variant.name}/src"
        delete "${buildDir}/../src/main/assets/src"
    }

    variant.mergeAssetsProvider.getOrNull().doFirst{
        delete "${buildDir}/../src/main/assets/src"

        if (USE_COMPILE_LUA == 'false'){
            copy {
                from "${buildDir}/../../../../../src"
                into "${buildDir}/../src/main/assets/src"
            }
        }else{
            copy {
                from "${buildDir}/../../../../../${COMPILE_LUA_PATH}"
                into "${buildDir}/../src/main/assets/src"
            }
        }
    }

老哥你这个哪个版本的gradle和as?我这边试了下好像还是不行,as 3.30 3.20 和gralde 4.6 4.10.1这几个版本都试过了不行

打的包不管是relese还是debug都是黑屏的,解压看了下都都没有assets

:joy:

我猜有可能是新版gradle不兼容cocos官方(设定的gradle),建议使用Android Studio标准目录,删除cocos设定的sourceSet 即src/main/java这种标准默认目录结构
然后手动复制资源和代码到assets目录结构中

建议这种问题了解一下gradle和Android Gradle plugin dsl

https://google.github.io/android-gradle-dsl/current/

把官方的这个sourceset删掉,使用默认标准sourceset试试,src/main/java src/main/cpp src/main/assets

亲测Android Gradle Plugin Version用3.1.0没问题,资源会打进包里,但AS会建议你升级到3.4.1,手贱升级后就GG了,需要自己新建app/assets,资源拷贝进去,然后assets.srcDir "assets"告诉AS资源目录在这里

我看了下是资源没有被拷贝进去的问题,现在改了下,就可以了
android.applicationVariants.all { variant ->
// delete previous files first
delete “{buildDir}/intermediates/assets/{variant.dirName}”
delete “{buildDir}/intermediates/merged_assets/{variant.dirName}”

variant.mergeAssets.doLast {
    copy {
        from "${buildDir}/../../../../../res"
        into "${buildDir}/intermediates/assets/${variant.dirName}/res"
    }

    copy {
        from "${buildDir}/../../../../../src"
        into "${buildDir}/intermediates/assets/${variant.dirName}/src"
    }

    if (variant.name.compareTo('release') == 0) {
        copy {
            from "${buildDir}/../../../../../res"
            into "${buildDir}/intermediates/merged_assets/release/mergeReleaseAssets/out/res"
        }

        copy {
            from "${buildDir}/../../../../../src"
            into "${buildDir}/intermediates/merged_assets/release/mergeReleaseAssets/out/src"
        }

    }else{
        copy {
            from "${buildDir}/../../../../../res"
            into "${buildDir}/intermediates/merged_assets/debug/mergeDebugAssets/out/res"
        }

        copy {
            from "${buildDir}/../../../../../src"
            into "${buildDir}/intermediates/merged_assets/debug/mergeDebugAssets/out/src"
        }

    }

    // copy {
    //     from "${buildDir}/../../../../cocos2d-x/cocos/scripting/lua-bindings/script"
    //     into  "${buildDir}/intermediates/assets/${variant.dirName}/src/cocos"
    // }

    // compile & encrypt the scripts if necessary
    def compileScript = (variant.name.compareTo('release') == 0)
    if (project.hasProperty('PROP_COMPILE_SCRIPT')) {
        compileScript = (PROP_COMPILE_SCRIPT.compareTo('1') == 0)
    }

    def encryptLua = project.hasProperty('PROP_LUA_ENCRYPT') && (PROP_LUA_ENCRYPT.compareTo('1') == 0)
    if (compileScript || encryptLua) {
        // -1 means not build bytecode
        // 0 means build 32bit only
        // 1 means build 64bit only
        // 2 means build both 32bit & 64bit
        def buildType = -1
        def mergeAssets = "mergeDebugAssets"
        def dirName = "debug"
        if (compileScript) {
            def need64 = false
            def need32 = false
            def abis = PROP_APP_ABI.split(':').collect{it as String}
            abis.each{ abi->
                if (abi.compareTo('arm64-v8a') == 0) {
                    need64 = true
                }
                else
                {
                    need32 = true
                }
            }

            if (need64 && need32) {
                buildType = 2
            }
            else if (need64) {
                buildType = 1
            }
            else {
                buildType = 0
            }
            mergeAssets = "mergeReleaseAssets"
            dirName = "release"
        }

        // invoke cocos command to compile & encrypt the lua files
        switch (buildType) {
            case -1:
                compileLua("${buildDir}/intermediates/merged_assets/${dirName}/${mergeAssets}/out/src",
                        "${buildDir}/intermediates/merged_assets/${dirName}/${mergeAssets}/out/src",
                        false, false, encryptLua)
                break
            case 0:
                compileLua("${buildDir}/intermediates/merged_assets/${dirName}/${mergeAssets}/out/src",
                        "${buildDir}/intermediates/merged_assets/${dirName}/${mergeAssets}/out/src",
                        true, false, encryptLua)
                break
            case 1:
                compileLua("${buildDir}/intermediates/merged_assets/${dirName}/${mergeAssets}/out/src",
                        "${buildDir}/intermediates/merged_assets/${dirName}/${mergeAssets}/out/src/64bit",
                        true, true, encryptLua)

                // remove the lua files in src dir
                delete fileTree("${buildDir}/intermediates/merged_assets/${dirName}/${mergeAssets}/out/src") {
                    include '**/*.lua'
                }
                delete "${buildDir}/intermediates/merged_assets/${dirName}/${mergeAssets}/out/src/cocos"
                break
            case 2:
                compileLua("${buildDir}/intermediates/merged_assets/${dirName}/${mergeAssets}/out/src",
                        "${buildDir}/intermediates/merged_assets/${dirName}/${mergeAssets}/out/src/64bit",
                        true, true, encryptLua)
                compileLua("${buildDir}/intermediates/merged_assets/${dirName}/${mergeAssets}/out/src",
                        "${buildDir}/intermediates/merged_assets/${dirName}/${mergeAssets}/out/src",
                        true, false, encryptLua)
                break
        }
    }
}

}

果然是没有自动拷贝进去的问题,手动改了下资源的就可以了

很有用,帮了大忙。因为compileSdkVersion要升29,gradle tool就要升 classpath ‘com.android.tools.build:gradle:3.2.0’,就会出现拷贝失败的问题。

升级到 gradle:3.2.0 后 拷贝路径药这么写:

into “{buildDir}/intermediates/merged_assets/{variant.dirName}/merge${variant.dirName}Assets/out”