‘ant’ タグのついている投稿

[dx] Could not reserve enough space for object heap

PHPからAndroidのapkをantでビルドする環境を作成中、ヒープ不足でVMが起動しない問題に遭遇しました。

-dex:
      [dex] input: /path1/to/bin/classes
      [dex] input: /path2/to/bin/classes.jar
      [dex] input: /path/to/android-sdk-linux/tools/support/annotations.jar
      [dex] input: /path2/to/libs/android-support-v4.jar
      [dex] Pre-Dexing /path2/to/bin/classes.jar -> classes-df6cdfb7c6be3c83700a640e18a54033.jar
       [dx] Error occurred during initialization of VM
       [dx] Could not reserve enough space for object heap
       [dx] Error: Could not create the Java Virtual Machine.
       [dx] Error: A fatal exception has occurred. Program will exit.

解決策は android-sdk-linux/platform-tools/dx の
defaultMx=”-Xmx1024M”
を小さくすればOKです。

今回は
defaultMx=”-Xmx128M”
としました。

dxコマンドを直接実行する場合は、コマンドに
-JXmx128M
とオプションを付ければ大丈夫なようですが、antの場合はできないっぽいです。

あと、ANT_OPTSはantの中で実行されるjavaコマンドについては引き継がないようです。


android update projectのtargetパラメータ

Androidプロジェクトをantでビルドしていたのですが、以下のエラーが発生してコンパイルできない現象が発生。

[renderscript] No RenderScript files to compile.
     [echo] ----------
     [echo] Handling Resources...
     [aapt] Generating resource IDs...
     [aapt] /path/to/Project/res/layout/about.xml:31: error: No resource identifier found for attribute 'contentDescription' in package 'android'
     [aapt] /path/to/Project/res/layout/about.xml:2: error: Error: String types not allowed (at 'layout_width' with value 'match_parent').
     [aapt] /path/to/Project/res/layout/about.xml:2: error: Error: String types not allowed (at 'layout_height' with value 'match_parent').

なんという事はない。android update projectコマンドに渡す–targetオプションでSDKのレベルを指定してやれば良かったのでした。

  Updates an Android project (must already have an AndroidManifest.xml).
Options:
  -l --library    : Directory of an Android library to add, relative to this
                    project's directory.
  -p --path       : The project's directory. [required]
  -n --name       : Project name.
  -t --target     : Target ID to set for the project.
  -s --subprojects: Also updates any projects in sub-folders, such as test
                    projects.

この説明ではターゲットに何を設定すればいいのかわからなくて…

–target 9を指定して、2.3を対象にしました。

それもそもそも

Error: The project either has no target set or the target is invalid.
Please provide a --target to the 'android update' command.

このエラーが出たためにtarget指定することになったわけですが。