Android Play Asset Delivery 完整踩坑记录

作者环境:

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,以字母开头间隔需要用下划线(如图):

Android Play Asset Delivery 完整踩坑记录_第1张图片

Android Play Asset Delivery 完整踩坑记录_第2张图片

 第二步进入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'

Android Play Asset Delivery 完整踩坑记录_第3张图片

检查settings.gradle文件下是是否包含 install_time_asset_pack 模块

Android Play Asset Delivery 完整踩坑记录_第4张图片

 请添加一些文件或者图片到install_time_asset_pack 模块下的main->assets,文件下,这里最好新建一个data文件夹,因为这个目录合并之后会多一些奇怪的文件出来。

Android Play Asset Delivery 完整踩坑记录_第5张图片

下面是实现代码(注意这里没法本地调试需要打包之后才能测试!):

为了区分是否加载成功我在布局文件中的activity_main加入了以下代码

Android Play Asset Delivery 完整踩坑记录_第6张图片

 下面是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

Android Play Asset Delivery 完整踩坑记录_第7张图片

构建好了之后我们得到一个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格式就行了:(如图)

Android Play Asset Delivery 完整踩坑记录_第8张图片

执行之后你会得到一个后缀为.apks的文件如图:

Android Play Asset Delivery 完整踩坑记录_第9张图片

下一步编写测试安装代码,因为apks的文件android无法识别,依然需要借助bundletool-all-1.8.2.jar工具安装

编写apks安装代码(也可以写成批处理文件如图):

bundletool-all-1.8.2.jar install-apks --apks=app.apks

 Android Play Asset Delivery 完整踩坑记录_第10张图片

双击之后会自动安装。

不出意外你们可以在:内部存储设备->Android ->data->你的app包的名字->files找到你放置的文件。 

下面是需要用到的源代码(注意打包工具需要替换你的签名文件和密码!):

如图:

androidPlayAssetDelivery的源代码-Android文档类资源-CSDN下载

androidplayAssetDelivery打包工具和批处理文件-Android文档类资源-CSDN下载

你可能感兴趣的:(Android,技术文档,android,Asset,Delivery)