Back

titanium的 android 下 running dexer: 之后报错的解决方案

发布时间: 2016-01-22 23:42:00

血泪原创。

这几天在集成高德地图时, 发现一旦使用了高德地图,ti build 时就会卡死在这里。

大约20分钟后,报错:  java heap  out of memory 

两个思路:

1. 把完整的命令copy下来,看是否是需要dex的文件重复了。例如:

我在第一次使用module来编译的时候,修改了package的名字,没有把前一次的 module文件 都清理掉,导致libs下面有多个 相同内容的文件,命名确实  libcomgaodemap.jar,  libcomtestmap.jar 出错。

2. 第二次,是昨天遇到,卡了大半天,dexer需要的JVM的 最大内存对不上。--Xmx512M是不够的。

经过查看 cli 源代码,Library/Application Support/Titanium/mobilesdk/osx/5.1.1.GA/android/cli/commands/_build.js

 // get the javac params
  this.javacMaxMemory = cli.tiapp.properties['android.javac.maxmemory'] && cli.tiapp.properties['android.javac.maxmemory'].value || config.get('android.javac.maxMemory', '1024M');
  this.javacSource = cli.tiapp.properties['android.javac.source'] && cli.tiapp.properties['android.javac.source'].value || config.get('android.javac.source', '1.6');
  this.javacTarget = cli.tiapp.properties['android.javac.target'] && cli.tiapp.properties['android.javac.target'].value || config.get('android.javac.target', '1.6');
  this.dxMaxMemory = cli.tiapp.properties['android.dx.maxmemory'] && cli.tiapp.properties['android.dx.maxmemory'].value || config.get('android.dx.maxMemory', '1024M');

可以看到,这里的配置,使用了  cli.tiapp.properties,  所以解决办法很简单:

修改  tiapp.xml, 在跟节点下加入:: 

<!-- 设置 jdk的编译参数, 在高德地图下 build 会 java heap out of memory  -->
<property name="android.javac.maxmemory" type="string">2048M</property>
<property name="android.dx.maxmemory" type="string">2048M</property>

就可以了。

Back