Android 在 build.gradle 里执行文件操作

最近有个需求,就是在一套 android 工程里包含两套第三方 SDK 及相关资源文件,但是在打包时,只能将其中一套打包到 APK 中,用哪一套取决于一个配置文件中的内容。

配置文件为

/src/main/assets/apkName.txt

两套第三方SDK分别放置在以下路径中

src/main/_res/3d

src/main/_res/real

实现代码如下:

android {

......

tasks.configureEach { task ->
    if (task.name == "assembleRelease") {
        // 获取配置文件路径
        final String filePath = rootProject.file("./").path + "/taxrobot/src/main/assets/apkName.txt"

        // 读取配置文件
        final FileInputStream inputStream = new FileInputStream(filePath)
        final byte[] buffer = new byte[1024]
        final int read = inputStream.read(buffer)
        inputStream.close()
        final String apkName = new String(buffer, 0, read)

        // 根据配置文件内容决定使用哪套 SDK
        if (apkName == "TaxRobotClient_Taxpayer") {
            // 删除文件
            delete "./src/main/jniLibs/arm64-v8a/libflora-jni.so"
            
            // 复制文件
            copy {
                from "./src/main/_res/3d/ic_launcher.png"   // 源文件
                into "../app/src/main/res/mipmap-hdpi/"     // 目标位置
            }
            
            // 复制文件夹
            copy {
                from "./src/main/_res/3d/bin"   // 源文件夹
                into "./src/main/assets/bin"    // 目标文件夹
                include '**'                    // 复制源文件夹下的所有文件
            }
            copy {
                from "./src/main/_res/3d/libil2cpp.so"
                from "./src/main/_res/3d/libmain.so"
                from "./src/main/_res/3d/libil2cpp.so"
                from "./src/main/_res/3d/libunity.so"
                into "./src/main/jniLibs/arm64-v8a/"
            }
        } else {
            delete "./src/main/assets/bin"
            delete "./src/main/assets/data"
            delete "./src/main/assets/UnityServicesProjectConfiguration.json"
            delete "./src/main/jniLibs/arm64-v8a/lib_burst_generated.so"
            delete "./src/main/jniLibs/arm64-v8a/libil2cpp.so"
            delete "./src/main/jniLibs/arm64-v8a/libmain.so"
            delete "./src/main/jniLibs/arm64-v8a/libil2cpp.so"
            delete "./src/main/jniLibs/arm64-v8a/libunity.so"
            copy {
                from "./src/main/_res/real/ic_launcher.png"
                into "../app/src/main/res/mipmap-hdpi/"
            }
        }
    }
}

}
全文完。

posted @ 2025-07-02 20:00  安联酋长  阅读(15)  评论(0)    收藏  举报