一、概述(开发环境Android Studio 1.0.1)
在项目开发过程中,当我们项目积累越来越多,有一些公用的代码可以重用,或者做一些SDK类型项目的时候就需要打包自己的JAR了。之前如果使用eclipse开发android项目,打包JAR的例子网上可以找到很多,但切换到使用Android Studio,新的问题就又出现了。
二、使用Android Studio制作JAR
1、新建项目LibDemo
2、Project => File => New Module,新建一个Module,Module的类型可以选择Android Library和Java Library,名字为MyLib
项目编译后,在项目根目录中的MyLib文件夹会同时存在两种库aar和jar,分别位于:
*.jar:库/build/intermediates/bundles/debug(release)/classes.jar
*.aar:库/build/outputs/aar/libraryname.aar
注:jar与aar的区别在于是否包含了res目录下的资源,如果打包的库是对UI功能的封装,选择aar更合适,根据实际需要,当然UI库也可以选择jar,然后把资源文件单独打包在assets中也是一种办法。
如果不设置mylib依赖app,则只有/build/intermediates/bundles/debug/classes.jar
设置mylib依赖app后,则有/build/intermediates/bundles/debug(release)/classes.jar两个目录,设置依赖方法可以查看参考这一篇http://blog.csdn.net/lizhongfu2013/article/details/42689553
其中的classes.jar就是我们需要的库,自己重命名一下就可以了。
注意:
1、当前版本Android Studio 1.0.1,打包JAR后每次编译得到的JAR代码不会更新:
当别的项目引用你的JAR后,根目录可能是这样的(举例子,不是真实项目)
如果按照以上描述的方法,可以打包第一个版本JAR,但当你更新MyLib代码的时候,再重新编译制作JAR项目的,把JAR发给别人,别人得到的JAR是没更新过的,解决问题的办法是偶然得到的,就是制作JAR的项目再重新编译一次,然后把其中的libLesao.jar(名字是举例而已)拷贝出来,覆盖到接入JAR项目libLesao的跟目录中,这样就可以更新代码了,不知道是不是最新IDE的问题,还是我哪里出错了,不过通过这样方法确实解决问题了。(如有不明白,可以联系我)
2、打包JAR,布局文件没办法打包进去
例如我打包了一个Activity,其中XML布局文件是没办法一起打进JAR里边,所以简单的布局可以代码实现:
public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); LinearLayout layout = new LinearLayout(this); Button button = new Button(this); button.setText("Button!"); layout.addView(button); View custom = new View(this); layout.addView(custom); setContentView(layout); } }