作者环境:
Android Studio版本:Android Studio Arctic Fox | 2020.3.1 Patch 3
JDK版本:java version "17.0.1" 2021-10-19 LTS(注意没有JDK没法执行后面的步骤)
配置好的JDK运行环境,这是必须的步骤,如何配置请玩家自行百度摸索
官方文档:集成 Asset Delivery(Kotlin 和 Java) | Android 开发者 | Android Developers
这里主要介绍第一种安装时下载数据:install-time
第一步新建一个名字为install_time_asset_pack的mode,以字母开头间隔需要用下划线(如图):
第二步进入install_time_asset_pack目录下的build.gradle,添加以下代码:
apply plugin: 'com.android.asset-pack'
assetPack {
// packName 的名称可更改,但是要和配置对应上
packName = "install_time_asset_pack"
dynamicDelivery {
//只能指定一种类型,对应PAD分发模式
deliveryType = "install-time"
}
}
第三步在app目录下的build.gradle的添加以下2行代码(请添加到图片圈出来的地方,如下图)
assetPacks = [":install_time_asset_pack"]
implementation 'com.google.android.play:core:1.10.0'
检查settings.gradle文件下是是否包含 install_time_asset_pack 模块
请添加一些文件或者图片到install_time_asset_pack 模块下的main->assets,文件下,这里最好新建一个data文件夹,因为这个目录合并之后会多一些奇怪的文件出来。
下面是实现代码(注意这里没法本地调试需要打包之后才能测试!):
为了区分是否加载成功我在布局文件中的activity_main加入了以下代码
下面是MainActivity.java的实现代码
package com.example.myapplication;
import androidx.appcompat.app.AppCompatActivity;
import android.content.res.AssetManager;
import android.os.Bundle;
import android.widget.TextView;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//读取play asset delivery
try {
AssetManager assetManager = MainActivity.this.getAssets();
String datas = "";
String []fileList = assetManager.list("data/");
//这是存储设备的android/data/app_pack_name/的目录,在android11以下的文件管理器里面可以找到
File basePathFile = MainActivity.this.getExternalFilesDir("");
for (int i=0;i
这一步基本就差不多写完了,下面是验证环节。
先构建一个appbundle
构建好了之后我们得到一个app-release.aab文件。
现在需要下载一个bundletool工具把aab转换为apks然后再安装测试,工具下载地址 Releases · google/bundletool · GitHub
作者这里下载的版本是bundletool-all-1.8.2.jar
下一步编写转换代码:
java -jar bundletool-all-1.8.2.jar build-apks --bundle=app-release.aab --output=app.apks --ks=user.keystore --ks-pass=pass:123456 --ks-key-alias=da --key-pass=pass:123456
bundletool-all-1.8.2.jar 文件名字请替换成你下载得
--bundle bundke文件地址
--output apks文件输出地址
--ks 是签名文件地址
--ks-pass=pass: 是第一次签名的密码注意这里必须要带上pass:然后再输入密码
把需要替换的依次替换成你自己的就行了。
也可以写成批处理文件双击就能自动执行,什么事批处理文件,其实就是一个txt改成bat格式就行了:(如图)
执行之后你会得到一个后缀为.apks的文件如图:
下一步编写测试安装代码,因为apks的文件android无法识别,依然需要借助bundletool-all-1.8.2.jar工具安装
编写apks安装代码(也可以写成批处理文件如图):
bundletool-all-1.8.2.jar install-apks --apks=app.apks
双击之后会自动安装。
不出意外你们可以在:内部存储设备->Android ->data->你的app包的名字->files找到你放置的文件。
下面是需要用到的源代码(注意打包工具需要替换你的签名文件和密码!):
如图:
androidPlayAssetDelivery的源代码-Android文档类资源-CSDN下载
androidplayAssetDelivery打包工具和批处理文件-Android文档类资源-CSDN下载