Android完整项目打包

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

Android ant 自动打包脚本:自动替换友盟渠道、版本号、包名,而不影响代码(修改的是临时目录中的代码)。 如何集成到我的项目里 前提:了解android官方文档,在项目目录中执行官方命令能打包,比如常见的打包步骤: android update project -p . -s -t "android-21" ant debug 如果是用Linux系统,则不用记上面这么长的命令,下载本项目中的Makefile,放到项目目录中,然后执行: make ant debug 如果ant debug打包能通过,则可以使用下面的自动打包。 下载custom_rules.xml,放到项目目录中,然后执行: ant auto-debug -Dversion=time 即可自动打包,生成的包在./bin/中。 如果想打release包,下载ant.properties,修改其中的密码等配置,然后执行: ant auto-release -DUMENG_CHANNEL=googlePlayStore -Dpackage=com.example.ant.beta 即可。 打包时自动更换友盟渠道 确认AndroidManifest.xml中已添加了友盟节点: <meta-data android:name="UMENG_CHANNEL" android:value="debug" /> 然后执行: ant auto-release -DUMENG_CHANNEL=googlePlayStore 即AndroidManifest.xml中的友盟渠道替换成googlePlayStore,然后打包。而执行: ant auto-release -DUMENG_CHANNEL=smartisanAppStore 即打出锤子应用商店的包。 打包时自动更换包名 ant auto-release -Dpackage=com.example.ant.beta 即把包名自动改成com.example.ant.beta。 打包时使用时间作为版本号 ant auto-debug -Dversion=time 把版本号改成时间,然后打包,效果: versionCode是时间戳,比如1390969254 versionName是日期,比如14.1.29.1220 多个参数任意组合 ant auto-release -DUMENG_CHANNEL=googlePlayStore -Dpackage=com.example.ant.beta -Dversion=time 即打出google play的beta包,使用时间作为版本号 debug与release签名 ant auto-debug 即使用debug签名打包(路径~/.android/debug.keystore),请参考http://developer.android.com/tools/publishing/app-signing.html#debugmode ant auto-release 即使用release签名打包,请下载本项目中的ant.properties,修改其中的路径、密码等等,参考http://developer.android.com/tools/building/building-cmdline.html#ReleaseMode
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值
>