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

Android完整项目打包

2016-08-26 14:04 239 查看

Android完整项目项目打包

之前产品那边提出一个需求,需要我们这边提供一个带界面SDK,客户那边一段代码就能调起我们这边提供的界面,完成逻辑之后,返回数据给调用者.

这个时候我首先想到了jar,打包之后通过解压发现Activity已经打入了jar包,因为jar包都是纯class文件,所以我又把jar包中引用的资源拷贝到新项目的资源路径下,通过显示启动jar中的Activity,应用直接崩溃,原因是资源ID未找到的异常.

这是因为jar中Activity中资源文件的ID,跟新项目里面资源文件的ID不一致,解决方法也很简单,就是在需要打包的项目里通过反射的方式引用资源,这样打成jar包后,在新项目里,同样通过反射的方式才能找到拷贝到新项目里的资源文件.这不是今天的重点,所以不多讲解,这里给大家提供一个博客地址,我也是参考这篇博客解决的问题

地址:http://blog.csdn.net/hhhccckkk/article/details/9313999

最后我也没有选择这种方式,因为通过反射的方式找资源效率低下,而且打包之后,jar和资源还得分别拷贝进新项目,这样也不够方便.

那么有没有更好的解决方案呢?我的回答是必须的,这也是今天的重点所在,Android Studio给我们提供了一种新的打包的方式arr包,什么是arr包呢,下面我来给jar与arr做一个对比,大家就明白了.

jar包与aar包的区别

jar是java字节码文件(class文件)的归档文件,其不包含android中的资源文件等信息;
aar是android中特有的归档文件,既包含字节码文件也包含android的资源文件等;


arr文件解压文件如下:



很明显,arr把Android中的源代码和资源文件都打包了进去,那么使用起来自然简单方便了,这里说明一点,arr包在eclipse下引用十分困难.

完整的项目生成arr文件以及使用

1.我们新建一个项目,然后在项目下创建一个Module:





2.目录结构如下:



3.此时app与mylibrary这两个东西只是在一个项目里,但是他两还是单纯存在的,需要建立者两者之间的关联



然后有一个弹框出来,点击OK就行了,这样mylibrary就成为了app的依赖库,app中可以直接调用mylibrary.

4.在mylibrary中编码



这里是简单的写了一个Activity,里面提供了一个按钮,然后点击按钮,弹出一段Toast,这里只是起一个演示作用.

5.打包

打包就更简单了,确定mylibrary中的代码没有问题之后



这样arr包就生成了,位置如下:



到了这一步我们以及成功的打出了arr包,已经算是成功了一半了,接下来就讲一下arr的使用

1.新建一个项目,将arr文件拷贝到libs下



2.在app/build.gradle下进行配置

在android节点下添加:

repositories {
flatDir {
dirs 'libs'
}
}


在dependencies下添加

compile(name: 'mylibrary-debug', ext: 'aar')


截图如下:





然后点击Sync Project,这样arr就算是导入成功了

最后是在新项目中启动arr包中的Activity

public void testArr(View view) {
//通过显示启动启动Arr中的Activity
Intent intent = new Intent();
intent.setClassName(MainActivity.this, "com.sdkeji.pyfaceforsdlib.mylibrary.TestArrActivity");
startActivity(intent);
}


源代码下载:http://download.csdn.net/detail/ln840434235/9613579
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  arr打包
相关文章推荐