1

私は一種の奇妙な問題を抱えています。私の bash スクリプトまたは Makefile では、絶対パスで aapt を使用しても機能しませんが、ローカル ディレクトリにいる場合は機能します。

次のようにすると、うまくいきません。

aapt add $OUT/device.jar $OUT/classes.dex

コマンドが実行され、次の出力が出力されます。

 '/homes/rsevile/CS307/bin/Device/classes.dex'...

しかし、jar をロードしようとすると、ロードしようとしているクラスが見つからなくなります。

ただし、以下は機能します。

cd $OUT
aapt add device.jar classes.dex

印刷:

 'classes.dex'...

これは、スクリプトで実行されているコード全体です (動作します)。

javac -d $(OUT)/classes -classpath ./layoutlib.jar src/com/device/client/*.java
jar cf $(OUT)/device.jar $(OUT)/classes $(OUT)/layoutlib
dx --dex --no-strict --output=$OUT/classes.dex $OUT/device.jar 
cd $OUT
aapt add device.jar classes.dex
cd $ROOT
adb push $OUT/device.jar $ANDROID_OUT_DIR

aapt で絶対パスを使用すると、なぜクラスが見つからないのか混乱しています。

なぜ機能しないのか、適切な絶対パスを使用するように修正する方法を教えてください。

ありがとうございました。

4

1 に答える 1

1

aapt は実際には絶対パスを保持していることに気付きました。それを回避する方法はありません。

jar を再利用し、ディレクトリを指定できる -C オプションを使用して問題を修正しました。

于 2011-12-01T00:33:24.467 に答える