简体   繁体   English

从libs /将jar文件添加到Android.mk

[英]Adding a jar file from libs/ to Android.mk

I almost found the answer in Adding a external jar reference in Android.mk but I'm still not quite there. 几乎 在Android.mk添加外部jar引用中找到了答案,但我仍然不很了解。

My project contains commons-io-2.4.jar and jsch-0.1.49.jar in the libs/ directory. 我的项目在libs /目录中包含commons-io-2.4.jar和jsch-0.1.49.jar。 Everything builds beautifully in eclipse. 一切都在日食中完美地建立。 Now I want to write an Android.mk file to build my project automatically. 现在,我想编写一个Android.mk文件来自动构建项目。

My Android.mk looks like this, but it's not working. 我的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)

I'm sure there's just a little secret sauce I've gotten wrong, but I can't figure it out. 我敢肯定,我弄错了一点秘密秘诀,但我无法弄清楚。

Is there a good reference for Android.mk files? Android.mk文件有很好的参考吗? All I could find were recipes for working with the ndk. 我所能找到的只是与ndk一起工作的秘诀。

OK, a couple hours of googling and experimenting seems to have found the solution. 好的,经过几个小时的谷歌搜索和实验似乎已经找到了解决方案。
Documenting it here for others to find: 在此处进行记录以供其他人查找:

The key was to 关键是

  1. Define LOCAL_STATIC_JAVA_LIBRARIES with a symbolic name for the library I want to include, eg libjsch 使用要包含的库的符号名称定义LOCAL_STATIC_JAVA_LIBRARIES ,例如libjsch
  2. Execute CLEAR_VARS (why?) 执行CLEAR_VARS (为什么?)
  3. Define LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES as libjsch:<path-to-jar-file> LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES定义为libjsch:<path-to-jar-file>
  4. Include BUILD_MULTI_PREBUILT . 包括BUILD_MULTI_PREBUILT

(Testing showed that any symbolic name (eg "foo") works fine, as long as it matches in the two declarations.) (测试表明,只要两个声明中的符号名称都匹配,任何符号名称(例如“ 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)

Thanks a ton Edward Falk. 感谢吨爱德华福克。 I have just resolved my problem with answer u have given me thanks again here is my code. 我刚刚解决了我的问题,您在这里再次感谢我,这是我的代码。 The Keyword "lib" is a night mare. 关键字“ lib”是夜马。

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

LOCAL_MODULE_TAGS := optional

LOCAL_SRC_FILES := $(call all-subdir-java-files)

LOCAL_PACKAGE_NAME := MDM

LOCAL_STATIC_JAVA_LIBRARIES := libandroid-async-http libgcm libjson-simple


LOCAL_JAVA_LIBRARIES += telephony-common mms-common

LOCAL_CERTIFICATE := platform

include $(BUILD_PACKAGE)

include $(CLEAR_VARS)

LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := libandroid-async-http:libs/android-async-http-1.4.4.jar libgcm:libs/gcm.jar  libjson-simple:libs/json-simple-1.1.1.jar 

include $(BUILD_MULTI_PREBUILT)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM