2

前の質問を拡張するAapt が正しく動作しない - 新しいプロジェクトで R ID を生成できない

32 ビット マシンに新しい Ubuntu Server 12.04 をインストールした後、Android SDK をダウンロードして更新しました。次に、コマンドラインから新しいプロジェクトを作成しました:

gyver@Gyver:~/tmp$ android create project 
    -t android-17 -p test -k com.example.test -a HomeActivity

現時点では問題ありません。次に、Ant を使用してコンパイルしようとしました。

gyver@Gyver:~/tmp/test$ ant clean debug install
Buildfile: /home/gyver/tmp/test/build.xml

-check-env:
 [checkenv] Android SDK Tools Revision 22.0.5
 [checkenv] Installed at /opt/android-sdk

-setup:
     [echo] Project Name: HomeActivity
  [gettype] Project Type: Application

-pre-clean:

clean:
   [delete] Deleting directory /home/gyver/tmp/test/bin
[getlibpath] Library dependencies:
[getlibpath] No Libraries
   [subant] No sub-builds to iterate on

-set-mode-check:

-set-debug-files:

-check-env:
 [checkenv] Android SDK Tools Revision 22.0.5
 [checkenv] Installed at /opt/android-sdk

-setup:
     [echo] Project Name: HomeActivity
  [gettype] Project Type: Application

-set-debug-mode:

-debug-obfuscation-check:

-pre-build:

-build-setup:
[getbuildtools] Using latest Build Tools: 18.0.1
     [echo] Resolving Build Target for HomeActivity...
[gettarget] Project Target:   Android 4.2.2
[gettarget] API level:        17
[gettarget] WARNING: No minSdkVersion value set. Application will install on all Android versions.
     [echo] ----------
     [echo] Creating output directories if needed...
    [mkdir] Created dir: /home/gyver/tmp/test/bin
    [mkdir] Created dir: /home/gyver/tmp/test/bin/res
    [mkdir] Created dir: /home/gyver/tmp/test/gen
    [mkdir] Created dir: /home/gyver/tmp/test/bin/classes
    [mkdir] Created dir: /home/gyver/tmp/test/bin/dexedLibs
     [echo] ----------
     [echo] Resolving Dependencies for HomeActivity...
[dependency] Ordered libraries:
     [echo] ----------
     [echo] Building Libraries with 'debug'...
   [subant] No sub-builds to iterate on

-code-gen:
[mergemanifest] Merging AndroidManifest files into one.
[mergemanifest] Manifest merger disabled. Using project manifest only.
     [echo] Handling aidl files...
     [aidl] No AIDL files to compile.
     [echo] ----------
     [echo] Handling RenderScript files...
[renderscript] No RenderScript files to compile.
     [echo] ----------
     [echo] Handling Resources...
     [aapt] Generating resource IDs...

BUILD FAILED
/opt/android-sdk/tools/ant/build.xml:649: The following error occurred while executing this line:
/opt/android-sdk/tools/ant/build.xml:690: null returned: 132

Total time: 3 seconds
gyver@Gyver:~/tmp/test$

エラーです。この時点では、何が問題なのか明確ではありません。build.xml を調べてみると、Ant が を呼び出していることがわかったaaptので、直接起動してみました。

/opt/android-sdk/build-tools/18.0.1/aapt package -f -m 
-M /home/gyver/tmp/test/bin/AndroidManifest.xml 
-S /home/gyver/tmp/test/bin/res 
-S /home/gyver/tmp/test/res 
-I /opt/android-sdk/platforms/android-17/android.jar 
-J /home/gyver/tmp/test/gen --generate-dependencies 
-G /home/gyver/tmp/test/bin/proguard.txt

結果あり

Illegal instruction (core dumped)

それを修正する方法はありますか?Aapt は 64 ビット マシンで問題ないようです。この 32 ビット サーバーは、プロジェクトをビルドできない唯一のケースです。

4

2 に答える 2

2

revにも同じ問題があります。18.0.1 対応。これはバグだと思います。http://code.google.com/p/android/issues/detail? id=58663でバグ レポートを開きました。

リビジョン。17 aapt は私にとってはうまくいくので、rev を使用するのは一時的な解決策かもしれません。17 ビルド ツール。

于 2013-08-08T14:54:01.453 に答える
0

aapt のこのバグが Android ビルド ツールのバージョン 19.0.3 に残っていることを確認できます。最新の Android SDK と NDK を実行している 2 台のマシンがあります。ANTを使用しています。私のプロジェクトは、ラップトップのデバッグ モードとリリース モードの両方で正常にビルドされますが、ここでの提案を使用しない限り、デスクトップ開発ボックスに「不正な命令」というメッセージだけが表示されて aapt が失敗します。具体的には、aapt のバージョン 17.0.0 バイナリをビルド ツール 19.0.3 のディレクトリにコピーしました。これは醜いハックですが、デスクトップ ボックスでプロジェクトを正常にビルドできるようになりました。したがって、最新のビルド ツール (19.0.3) を 32 ビット Pentium ユニプロセッサで実行する場合は、19.0.3 aapt を 17.0.0 aapt にダウングレードして、プロジェクトをビルドできます。具体的には: aapt (すべてのバージョン) は、私の ACER Travelmate 6460、32 ビット デュアル プロセッサ、Intel Core2 cpu、T2700、2 GHz で動作します。Phoenix BIOS バージョン 1.09 を使用。バージョン。17 aaptの作品ですが、詩。18 と 19、2400 mhz を実行する Intel Pentium 4 の 32 ビット Asus ボックスで、「不正な命令」というメッセージで失敗し、Award Bios rev. 1004. 合計メモリは 1.3 ギガバイトです。
一部のエラー レポートでは、メモリの制約または不適切な .png ファイルが原因であると示唆されていますが、これは事実ではありません。愚かな仲間が aapt の最近のビルドから 32 ビットのユニプロセッサ コードを削除したようです。その結果、Linux を実行している 32 ビット Intel ボックスの aapt が機能しなくなりました。どちらのプラットフォームも、Fedora Linux、カーネル バージョン 2-6.25-14.fc9.i686、Gnome デスクトップを実行しています。どちらのプラットフォームも、最新の Android ツール、デバイス エミュレーター、adb、ant、および最新の SDK と NDK を実行し、Android 4.4.2 レベルのデバイスへのビルドをサポートします。

于 2014-03-25T17:09:02.097 に答える