将Exagear直装版数据包放到apk的assets中以减小体积安装后的占用空间

您所在的位置:网站首页 apk与数据包分离怎么操作的 将Exagear直装版数据包放到apk的assets中以减小体积安装后的占用空间

将Exagear直装版数据包放到apk的assets中以减小体积安装后的占用空间

2024-07-13 13:07| 来源: 网络整理| 查看: 265

我们读取apk里assets文件夹下的文件,通过context.getAssets().open(路径) InputStream获取,只能获取到输入流。通过context.getAssets().openFd() AssetFileDescriptor获取,可以得到对应的File对象,但是要求文件不能压缩。 这里我选择获取输入流。那么就要把输入流转为对象,再交给findObbFile。 处理方式为读取apk/assets/obb文件夹中的唯一一个文件作为数据包,先将文件写入/data/data/包名/files文件夹,再将写入后的文件的File对象返回。

点击展开代码static public File setTmpObb(Context ctx) throws IOException { Log.d("exagear", "setTmpObb: 进入生成临时数据包的函数 "); try{ File destDir = ctx.getFilesDir(); if (!destDir.exists()) { boolean b = destDir.mkdir(); assert b; } String[] list = ctx.getAssets().list("obb"); //如果目录下没有文件或者多个文件,返回null,让exagear显示报错 if (list.length != 1) return null; //获取asstes的inputstream InputStream is = ctx.getAssets().open("obb/" + list[0]); //复制到files文件夹 // File.createTempFile("exa","obb",destDir); File newFile = new File(destDir.getAbsolutePath() + "/" + list[0]); //创建新文件 //如果已经存在(一般不会,但是如果在第一次解压的时候强制关掉的话,第二次启动) if (newFile.exists()) { boolean b = newFile.delete(); assert b; } //vm正常关闭(程序退出时)会删掉此文件。 newFile.deleteOnExit(); //创建该文件 if (!newFile.createNewFile()) { return null; } FileOutputStream fos = new FileOutputStream(newFile); //新文件输出流 int len = -1; byte[] buffer = new byte[4096]; while ((len = is.read(buffer)) != -1) { fos.write(buffer, 0, len); } fos.close(); is.close(); return newFile; }catch (IOException e){ Log.d("Exagear", "setTempObbFile: 出错:"+e.getMessage()); throw e; } }

files里的obb用完后应该删除。

点击展开代码static public void delTmpObb(Context ctx){ Log.d("exagear", "setTempObbFile: 进入删除临时数据包的函数 "); try{ File destDir = ctx.getFilesDir(); String[] list = ctx.getAssets().list("obb"); if(list.length == 1){ File newFile = new File(destDir.getAbsolutePath() + "/" + list[0]); //创建新文件 //如果存在,就删除 if (newFile.exists()) { boolean b = newFile.delete(); assert b; } } }catch (IOException e){ Log.d("Exagear", "delTmpObb: 出错:"+e.getMessage()); } }


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3