android - 从 libs/添加一个 jar 文件到 Android.mk

标签 android android-make

几乎Adding a external jar reference in Android.mk 中找到了答案但我还不太了解。

我的项目在 libs/目录中包含 commons-io-2.4.jar 和 jsch-0.1.49.jar。一切都在 eclipse 中构建得很漂亮。现在我想编写一个 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 的方法。

最佳答案

好吧,几个小时的谷歌搜索和试验似乎找到了解决方案。
在这里记录下来供其他人查找:

关键是

  1. 定义LOCAL_STATIC_JAVA_LIBRARIES带有我想包含的库的符号名称,例如libjsch
  2. 执行CLEAR_VARS (为什么?)
  3. 定义LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES作为libjsch:<path-to-jar-file>
  4. 包括BUILD_MULTI_PREBUILT .

(测试表明任何符号名称(例如“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)

关于android - 从 libs/添加一个 jar 文件到 Android.mk,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13829473/

相关文章:

android - RecyclerView 中的 CardView : animation while populating

android - AOSP 构建 - 从 eng 切换到 user 或 userdebug 时,不再创建数据目录

android - 无法解析 API 文件 "frameworks/base/api/current.txt"

kernel-module - MODULE.TARGET.SHARED_LIBRARIES.libjpeg 已定义错误

java - Android 将 Recyclerview 复选框中的值发送到数据库

android - Android 中的自动化与仪器测试

android - 如果 bool 值为真,则覆盖主页和后退按钮

android - 在 AOSP 中链接第 3 方静态库时需要帮助

c - Android 4.4,对 __printf_chk 的 undefined reference

Android - setContentView(R.layout.main);