插件框架篇一之jar和apk打包

本文介绍了在Windows环境下使用Eclipse进行Android插件化打包时遇到的问题及其解决方案。针对无法编译libs中的jar到dex以及资源文件访问问题,对比了export-JAR file、Fat Jar和Apk三种打包方式的优缺点。提出了结合Fat Jar和Apk的方式,实现选择性打包。同时,详细解释了Fat Jar工具的使用,并探讨了如何替换classes.dex以实现特定需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(最后附Fat jar介绍)
环境:Win7 64bit+Eclipse
将工程资源文件进行插件化打包时,遇到问题点:
1、export->JAR file无法编译libs中的jar文件到dex文件;
2、export->Fat jar打包的资源文件无法通过AssetManager进行访问;
3、以上两种方式均可进行选择性打包,apk打包无法过滤文件

解决方案:
一、针对问题1,可通过问题2中的fat jar解决,但是fat jar本身具有缺点。比较三种打包方式如下:
1、export->JAR file可以进行普通资源文件打包,适合静态jar插件,可以进行选择性打包,无法编译libs、res和manifest文件;
2、export->Fat jar适合动态jar插件,可将libs中jar一同进行编译,可以进行选择性打包,但无法编译res和manifest文件
3、apk适合动态插件调用,不仅把libs中jar进行编译,res和manifest资源文件也进行了编译,但是无法进行选择性打包。

二、针对问题3,可以通过结合fat jar和apk两种方式,优劣互补,完善插件化打包流程,可以进行java代码选择性打包。
apk文件结构如下:
这里写图片描述
其中apk的classes.dex是全部java代码(包括libs和外部library包)的编译后文件。
fat jar打包后并通过dx编译后文件结果如下:
这里写图片描述
其中fat jar的classes.dex是过滤com.letv.ads.plug.view包后的java代码(包括libs和外部library包)编译后文件,如果将res文件一起导入时没有apk中resources.arsc文件的,classes.dex与apk的classes.dex是一样的。
所以可以将apk中的classes.dex用fat jar编译的进行替换。
测试后可用!

介绍Fat jar:
fat jar可以将其他jar文件进行编译打包。
fat-jar它是sourceforge.net下的一个开源工具从http://sourceforge.net/projects/fjep地址可以下载该工具,下载完成后是一个zip压缩包,解压后将plugins文件夹下的net.sf.fjep.fatjar_0.0.31复制到Eclipse的plugins目录下,然后重启Eclipse。
可以在Preferences中看到Fat Jar Preferences菜单选项。
这里写图片描述
可以通过Export->Other->Fat Jar进行打包
这里写图片描述
可以选择需要的文件进行打包,也可以导入其他工程的jar和资源文件
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值