如何在 gradle 中为 Android 资产包(不是 Android apk 模块)设置自定义资产位置?
How to set a custom assets location for Android Asset Pack (not Android apk module) in gradle?
我有一个 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 资产包模块设置自定义资产位置?
更新
我目前的解决方法是在 src/main/assets 文件夹下创建一个硬符号 link,让 gradle 找到托管在其他位置的资产.它有效,但我仍然想知道是否有官方方法可以在 gradle 中为 Asset Pack 自定义资产位置。
我是这样解决的:
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 具有非常大资产的教育应用程序,因此我使用 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 资产包模块设置自定义资产位置?
更新
我目前的解决方法是在 src/main/assets 文件夹下创建一个硬符号 link,让 gradle 找到托管在其他位置的资产.它有效,但我仍然想知道是否有官方方法可以在 gradle 中为 Asset Pack 自定义资产位置。
我是这样解决的:
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('**/*')
}