[AIR接入Android]关于合计jar的补充第二弹

  1. 首先之前写的一个比较粗糙的ANE教程:传送
  2. 然后后面一个对于jar合计的补充:传送

没错今天又有东西需要补充了,其实是一个不一定会出现的问题.之前有犹豫写不写出来,但是随着接触的android SDK越多 发现其实这个问题还是蛮普遍的.

  • 那就是android项目引入的原生类android-support-v4.jar该不该合并到一起?

我觉得是需要差别对待.这个jar包含了android基础的几个包:

本来AIR打包APK是会自动把AIRSDK自带的这个库引入的.但是问题在于不同的 平台SDK开发的android SDK版本都不尽相同.

所以导致了会不兼容.这个时候我们就需要将我们eclipse ANE 的java项目中的这个库一起合计到一个jar里面.

  • 那我怎么知道兼容不兼容呢?

其实很简单,当你把ANE引入AIR项目打包APK运行报错的时候 如果log 报的第一个错误是和这个库的类有关,那多半就需要合并这个原生库jar了.

但是,合计这个库类必然会替换掉adobe air sdk 本身的原生库类,有的时候在32位的机器上(XP or 32 bit win7)会引发内存不足的错误.

  • 打包APK报java内存不足怎么办?

其实有办法,在我解密ADT的文章中,详细介绍了java工具的命令使用,调用java 打包APK是可以事先定义内存限制的.这个不宜说太多 只说具体解决方法.

我们知道ADT中读取JAVA内存选项的代码如下:

[code lang=”java”]
for (String vmArg : ManagementFactory.getRuntimeMXBean().getInputArguments())
{
if ((vmArg.startsWith("-Xms")) || (vmArg.startsWith("-Xmx")))
{
dexCommand.add(vmArg);
}
}
[/code]

换言之,就是在调用的时候输入内存限制,怎么做了?很简单.修改sdks\AIR3.5\bin文件夹下的 adt.bat (mac 则是 adt)
[code lang=”java”]
//未修改之前
//@java -jar "%~dp0\..\lib\adt.jar" %*
//修改之后
//@java -Xmx512M -jar "%~dp0\..\lib\adt.jar" %*
[/code]

发表评论

邮箱地址不会被公开。 必填项已用*标注