【问题标题】:How to set a custom assets location for Android Asset Pack (not Android apk module) in gradle?如何在 gradle 中为 Android Asset Pack(不是 Android apk 模块)设置自定义资产位置?
【发布时间】:2021-03-24 01:59:55
【问题描述】:

我有一个带有非常大资产的 Android 教育应用,因此我使用 Android 捆绑包 (.aab) 并将资产的主要部分(图书数据)放入资产包中。这是我关注Android PLay Asset Delivery制作的build.gradle文件。

apply plugin: 'com.android.asset-pack'
assetPack {
    packName = "BookAssets"
    dynamicDelivery {
        deliveryType = "on-demand"
    }
}

除了我必须使用硬编码路径src/main/assest 来托管我的资产包数据之外,它运行良好。由于该项目是跨平台的,我想将图书数据托管在所有平台(iOS、Android、Windows、mac)的中心位置。

对于 Android 基础 APK,我们可以通过 sourcesets.main.assets.srcDirs 在 build.gradle 中轻松设置自定义资产路径,但是当我尝试在 Assest Pack 模块上使用它时,Android 资产包插件报告错误并抱怨它不能查找定义assets.srcDirs

那么有没有办法为 Android Assets Pack 模块设置自定义资源位置?

更新

我目前的工作是在 src/main/assets 文件夹下创建一个硬符号链接,让 gradle 找到托管在其他位置的资产。它有效,但我仍然想知道是否有官方方法可以在 gradle 中为 Asset Pack 自定义资产位置。

【问题讨论】:

    标签: android android-gradle-plugin gradle-plugin


    【解决方案1】:

    我可以这样解决:

    apply plugin: 'com.android.asset-pack'
    
    assetPack 
    {
        packName = "InstallPack" // Directory name for the asset pack
        dynamicDelivery 
        {
            deliveryType = "install-time"
        }
    }
    
    project.afterEvaluate 
    {
        generateAssetPackManifest.dependsOn copyFiles
    }
    
    task copyFiles(type: Sync)
    
    copyFiles 
    {
        description = 'sync assets'
        from [path_to_assets]
        into './src/main/assets'
        include('**/*')
    }
    

    【讨论】:

    • 感谢您的建议,我接受您的解决方案作为答案!虽然我仍然希望更新的 gradle 插件能够以体面的方式解决这个问题。
    猜你喜欢
    • 2014-10-30
    • 1970-01-01
    • 2016-01-06
    • 2014-08-17
    • 1970-01-01
    • 2020-08-31
    • 1970-01-01
    • 2016-06-17
    • 2023-03-12
    相关资源
    最近更新 更多