插件框架篇一之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文件结构如下:
![](https://img-blog.csdn.net/20160723011735018)
其中apk的classes.dex是全部java代码(包括libs和外部library包)的编译后文件。
fat jar打包后并通过dx编译后文件结果如下:
![](https://img-blog.csdn.net/20160723011810331)
其中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菜单选项。
![](https://img-blog.csdn.net/20160723011900628)
可以通过Export->Other->Fat Jar进行打包
![](https://img-blog.csdn.net/20160723011924019)
可以选择需要的文件进行打包,也可以导入其他工程的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和资源文件
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories