位置: 编程技术 - 正文

Android提供第三方jar包时资源打包(android-3)

编辑:rootadmin

推荐整理分享Android提供第三方jar包时资源打包(android-3),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:安卓系统 第三方,安卓第三方系统有哪些,安卓第三方系统有哪些,安卓第三方系统有哪些,android常用第三方库,android 第三方,安卓第三方系统有哪些,安卓第三方系统有哪些,内容如对您有帮助,希望把文章链接给更多的朋友!

目前提供第三方jar包支持,我已知的解决方案包括: 1. 直接提供library工程。这种形式主要用于内部或者公共项目。 2. 将代码打包成jar,提供尽包含资源的library工程。 3. 将所有非图片资源转化成代码,提供图片和jar包。

直接提供library工程和提供资源文件的方式最方便,且集成方可自主修改待集成界面,但有些时候出于公司的考虑需要禁止用户修改界面(至少比较难)。

目前公司使用的是通过代码创建布局,将图片资源打包到assets目录,并打包到jar目录中,android编译的时候会将所有jar包后打开合并成目录的形式。

关于图片资源

目前:放到assets目录,客户还是可以通过解压jar包取出里面的资源文件,并在assets目录中保留一份同名的文件即可替换。 解决方案:使用BINCompiler将所有图片文件压缩成一个单独的bin文件,然后通过偏移位置和文件长度从bin文件中读取对应的内容。

关于代码

使用ProGuard混淆

关于布局和其他xml资源

使用java代码实现

这种方式如果界面较少的时候挺方便的,但是如果提供的界面较多,需要通过代码构建的界面越复杂,后续维护起来就比较麻烦,有没有更好的方式呢?

能不能将xml资源也打包到assets目录?关于显示类资源,在Drawable类中提供了一个方法,可以通过传入一个XmlPullParser对象并转换成对应的Drawable实例

我们随便在drawable中定义一个a_shape.xml

然后将a_shape.xml拷贝到assets目录中,通过Drawable.createFromXml()方法获取一个Drawable对象实例,如下:

如果运行,你会收到错误信息:

Android提供第三方jar包时资源打包(android-3)

查看AssetManager源码,在注释中发现

需要提供的fileName是一个已经编译过的xml文件

如何获得一个已经编译过的xml呢?

使用aapt,写了一个脚本来生成编译后的文件

这时候再拷贝编译过后的xml到assets目录后使用上面的方法,即可成功获取资源。

能不能也将xml压缩到bin文件呢?

如果使用上面的代码运行,会得到如下错误:

看上面这个问题说的是xml格式有问题,难道不能使用编译后的xml?使用一个未编译的xml测试上面代码

发现如下错误:

XmlBlock类是未公开的类,查看其源码,

以上两个关键方法,修改我们的工具方法

这样就能将xml资源也打包到bin文件中了

能否将布局也打包到bin文件中呢?

LayoutInflater也支持从XmlPullParser View android.view.LayoutInflater.inflate(XmlPullParser parser, ViewGroup root)

问题1:对于layout中使用的id

解决:可以在打包jar的时候包含R文件

问题2:对于layout中引用到的资源尝试了使用public.xml定义所有引用资源的id值,比如默认的id值为0x7f,发觉可以修改0x7fX,X为可修改的位,修改后立马可以在R文件中看到效果。但是使用aapt编译layout文件的时候会出现找不到资源的情况,提示的资源id还是为原来的0x7f。是否可修改加载布局的方法?

并行执行的Service,以媒体转码成新格式为例 大家众所周知,IntentService内置的handler只有一个线程,而AsyncTask又只适合时间至多几秒的操作,所以我们关注使用ExecutorService建立并行执行。为了确保Ser

XMPP聊天软件客户端开发(1) 在此记下我做这个项目的过程,遇到的难点和问题。OK,项目开始问题当然是怎么去开发。在初步了解XMPP是一个协议就可以知道这个开源的协议会有很

利用 LeakCanary 来检查 Android 内存泄漏 前言你被概率性的OOM困扰么?有时候,OOM像幽灵一样,挥之不去,可真想把它揪出来时,又捉之不着。或许,是时候用LeakCanary来诊断一下了。它是一个

标签: android-3

本文链接地址:https://www.jiuchutong.com/biancheng/374556.html 转载请保留说明!

上一篇:GridView 完美填充布局(gridview添加数据)

下一篇:并行执行的Service,以媒体转码成新格式为例(并行执行的符号)

  • 一般纳税人增值税怎么做账务处理
  • 免税收入怎么做会计分录
  • 信息技术服务增值税
  • 更换税控盘后原发票如何导入旧盘开票税局
  • 金税盘服务费不能全额抵扣吗
  • 核定征收的小规模企业所得税B表收入总额含税吗
  • 国际多式联运必须具备的基本条件是什么
  • 小企业会计准则以前年度损益调整
  • 应收账款转入呆账如何做帐
  • 其他应收款账户期初借方余额为35400
  • 价外收取的返还利润是什么意思
  • 预收账款和预付账款什么时候用
  • 工资计提多了怎么冲
  • 商业汇票的样本
  • 银行属于个人吗
  • 企业自查补税报告怎么写?
  • 技术服务费可以计入研发费用吗
  • 借 其他应付款
  • 小规模季报都报哪些税种
  • 企业委托研发过程中发生的研发费用如何加计扣除?
  • 一般纳税人减免性质代码怎么填写
  • 新版edge浏览器历史记录
  • 期末留抵税额退税是什么意思
  • 暂估人工成本分录怎么写
  • 未开票收入缴纳所得税吗
  • win7系统鼠标键盘
  • php数组查找函数
  • php file_get_contents 读取图片
  • PHP:curl_close()的用法_cURL函数
  • 债券利息计算表
  • 报销是可以直接拿钱的吧
  • win7无法打开打印机
  • 鸟瞰高耸入云的成语
  • 二阳来临
  • 现金折扣发生销售退回
  • 如何申请办理港澳通行证
  • 销售产品的运输费属于什么会计科目
  • 级联选择器 数据回显
  • 建信融通e信通贴现几天到账
  • 解决微信授权回复的方法
  • spring三级缓存有什么用
  • 财务报销中的冲销是啥意思
  • 材料发票和工程发票的区别
  • 什么是稳岗补贴是给企业发放吗
  • C语言中main函数的位置可以任意吗
  • 非独立核算与独立核算
  • 电子发票与纸质发票具有不同的法律效力
  • 资产负债表中其他应收款的计算公式
  • 个人所得税的征税范围
  • 一般纳税人季报怎么填
  • 出借和出租包装物会计分录是什么
  • 坏账核算备抵法的优缺点
  • 没有购销合同的销售额交印花税吗
  • 已抵扣的进项税额转出会计分录账务处理
  • 销货清单自己留哪一联
  • 哪些费用计入管理费用开办费
  • 新会计准则开办时间规定
  • 什么是雇主责任险保单
  • 进项税加计扣除10%怎么算
  • 文化事业费的费率是多少?
  • 税控盘开具发票怎么冲红?
  • 基本户转法人个人账户如何做账
  • mysql8.0免安装
  • centos cmake安装
  • Mac下mysql 5.7.13 安装配置方法图文教程
  • 登录ubuntu桌面
  • 盘古pg插件
  • win8如何使用网页版的onedrive
  • win7 64纯净版网页打开出现乱码该怎么办 解决方法介绍
  • win7系统英雄联盟黑屏
  • Android OpenGL ES(一)----必备知识
  • 阴影映射可视域分析
  • 深入探究替换词
  • javascript中math.ceil
  • android开发范例实战宝典
  • jQuery插件是什么
  • Python中的除号
  • 发票换领
  • 境外付款需要什么手续
  • 超期未申报还能申报吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设