7

Android.mkで外部jar参照を追加することで答えをほぼ見つけましたが、まだ完全にはありません。

私のプロジェクトでは、libs/ディレクトリにcommons-io-2.4.jarとjsch-0.1.49.jarが含まれています。すべてが日食で美しく構築されます。次に、Android.mkファイルを作成して、プロジェクトを自動的にビルドします。

私のAndroid.mkはこのように見えますが、機能していません。

LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)

LOCAL_SRC_FILES := $(call all-java-files-under, src)

LOCAL_PACKAGE_NAME := MyProject
LOCAL_CERTIFICATE := platform

LOCAL_STATIC_JAVA_LIBRARIES := jsch-0.1.49 commons-io-2.4

LOCAL_PROGUARD_FLAGS      := -include $(LOCAL_PATH)/proguard.flags

include $(BUILD_PACKAGE)

LOCAL_STATIC_JAVA_LIBRARIES := libs
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := libs:jsch-0.1.49 libs:commons-io-2.4

include $(BUILD_MULTI_PREBUILT)

間違えた秘密のタレはほんの少しあると思いますが、わかりません。

Android.mkファイルの良いリファレンスはありますか?私が見つけたのは、ndkを操作するためのレシピだけでした。

4

2 に答える 2

23

OK、数時間のグーグル検索と実験で解決策が見つかったようです.
他の人が見つけられるように、ここに文書化します。

鍵となったのは

  1. LOCAL_STATIC_JAVA_LIBRARIES含めたいライブラリの記号名で定義します。libjsch
  2. 実行CLEAR_VARSする(なぜ?)
  3. LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES次のように定義libjsch:<path-to-jar-file>
  4. を含めますBUILD_MULTI_PREBUILT

(テストでは、2 つの宣言で一致する限り、任意の記号名 (例: "foo") が正常に機能することが示されました。)

LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)

LOCAL_SRC_FILES := $(call all-java-files-under, src)

LOCAL_PACKAGE_NAME := MyProject

LOCAL_STATIC_JAVA_LIBRARIES := libjsch

include $(BUILD_PACKAGE)

include $(CLEAR_VARS)

LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := libjsch:libs/jsch-0.1.49.jar

include $(BUILD_MULTI_PREBUILT)
于 2012-12-11T23:50:54.117 に答える