android - 如何在 gradle 中为 Android Asset Pack(不是 Android apk 模块)设置自定义 Assets 位置?

标签 android android-gradle-plugin gradle-plugin

我有一个包含非常大 Assets 的 Android 教育应用程序,因此我使用 Android 包 (.aab) 并将 Assets 的主要部分(图书数据)放入一个 Assets 包中。这是我按照 Android PLay Asset Delivery 制作的 build.gradle 文件.

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

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

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

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

更新

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

最佳答案

我是这样解决的:

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('**/*')
}

关于android - 如何在 gradle 中为 Android Asset Pack(不是 Android apk 模块)设置自定义 Assets 位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65271919/

相关文章:

android - Twitter4j - 导入问题 - AndroidStudio

java - Android 中频繁更改 View 的最佳方法?

android - FusedLocationApi.getLastLocation 始终为空

java - 使用 bmuschko/gradle-docker-plugin 进行 Gradle 清理任务

Gradle 。调用 getProjectDir() 不会返回预期的目录

gradle - 将环境变量传递给 gradle.properties

php - 在 Android 聊天应用程序中实现规则的最佳方式

Android 测试 BuildConfig 字段

android - 所有 com.android.support 库必须使用准确的版本

Android Studio 和 Gradle - 构建失败