栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

加载外置apk里面的图片

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

加载外置apk里面的图片

步骤1:新建项目,drawable添加图片,删除无用数据、配置等

build-->Build Apks,在build文件夹下面生成apk文件,copy备用

保留数据:res下面的drawable文件夹,及下级的图片(需要的图片),清单文件(仅包名即可),配置文件(版本、包名)

步骤2:把apk文件复制到设备上

demo里面是走assets,通过代码复制到设备的,

实际应用的时候,应该是走服务器下发,不管怎么走,最终都会拿到apk的存放路径

步骤3:加载apk(Resource、package、classloader)

1.获取apkinfo,主要是包名,后面根据包名拼类名,获取资源文件属性(getField,获取public的成员)

这里可以去反编译apk文件,获取对应的成员的值,以及直观看一下怎么拿

2.构建classloader,这里有两个:PathClassLoader、DexClassLoader

他们都继承baseDexClassL,继承ClassLoader,PathClassLoader只能加载已经安装的apk里面的dex,

DexClassLoader可以加载dex、jar、apk,而且可以加载SD卡里面的,所以这里就选DexClassloader

3.构建Resource,通过AssetManager,把apk也加进去

步骤4:获取图片资源,加载

1.根据上面拿到的ApkInfo,拼资源文件的类名,获取成员的值(R.drawable.xxx对应的那个数字)

class : packgeName.R$drawable 成员:生成apk的项目里面drawable下面,不带后缀,可以看反编译的结果

getField去获取成员,然后强转

2.坑:这个数字不能直接使用,因为它并不是在我们本身的apk里面,会找不到的

3.使用上面的Resource,转换出来一个Drawable对象,图片直接使用

Resource.getDrawable(id)

demo审核中:https://download.csdn.net/download/qq_24179679/26365690https://download.csdn.net/download/qq_24179679/26365690

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/281909.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号