您的位置:首页 > 移动开发 > Android开发

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

2016-07-23 01:18 204 查看
(最后附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和资源文件

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  插件 android