Android.mk添加第三方jar包

最近引入第三方的jar包进工程,发现光红色的两条并不起作用,加入include $(BUILD_MULTI_PREBUILT) 才起作用,而且顺序很重要,在这里把我参考的两个例子都列出来。

以下为引用例子:

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

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

LOCAL_STATIC_JAVA_LIBRARIES := xsocket jackson-mapper logging jackson-core javatar log4j

LOCAL_MODULE_TAGS := optional

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

LOCAL_PACKAGE_NAME := test

LOCAL_CERTIFICATE := platform

include $(BUILD_PACKAGE)

##################################################
include $(CLEAR_VARS)

LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := xsocket:lib/xSocket-2.8.14.jar \
    jackson-mapper:lib/jackson-mapper-asl-1.6.2.jar \
    logging:lib/commons-logging.jar \
    jackson-core:lib/jackson-core-asl-1.6.2.jar \
    javatar:lib/javatar-2.5.jar \
    log4j:lib/log4j-1.2.15.jar

include $(BUILD_MULTI_PREBUILT)

# Use the folloing include to make our test apk.
include $(call all-makefiles-under,$(LOCAL_PATH))

以上是我的一个项目中所需要的第三方jar包,主要参考了Android源码中的Calculator应用,该应用也引用了一个第三方的jar包arity-2.1.2.jar。

需要注意的是,当你要引用的jar包不止一个时,有两个关键的地方需要注意的。

LOCAL_STATIC_JAVA_LIBRARIES := xsocket jackson-mapper logging jackson-core javatar log4j

    jackson-mapper:lib/jackson-mapper-asl-1.6.2.jar \
    logging:lib/commons-logging.jar \
    jackson-core:lib/jackson-core-asl-1.6.2.jar \
    javatar:lib/javatar-2.5.jar \
    log4j:lib/log4j-1.2.15.jar

xsocket jackson-mapper logging jackson-core javatar log4j这几个只是名字,可以随便取。LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES后面才是真正其作用的地方。如:

xsocket:lib/xSocket-2.8.14.jar 引用的是lib目录中的xSocket-2.8.14.jar。

还要注意的是 := 不要写成了+=了哦。

附:编写各种类型的Android.mk,出处我忘记了,是以前浏览是拷贝下来的。如果侵犯了作者的权益,烦请联系我[email protected]。我及时删除。

一、编译一个简单的APK

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
# Build all java files in the java subdirectory
LOCAL_SRC_FILES := $(call all-subdir-java-files)
# Name of the APK to build
LOCAL_PACKAGE_NAME := LocalPackage
# Tell it to build an APK
include $(BUILD_PACKAGE)

二、编译一个依赖静态.jar文件的APK

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
# List of static libraries to include in the package
LOCAL_STATIC_JAVA_LIBRARIES := static-library
# Build all java files in the java subdirectory
LOCAL_SRC_FILES := $(call all-subdir-java-files)
# Name of the APK to build
LOCAL_PACKAGE_NAME := LocalPackage
# Tell it to build an APK
include $(BUILD_PACKAGE)
注:LOCAL_STATIC_JAVA_LIBRARIES 后面应是你的APK程序所需要的JAVA库的JAR文件名。

三、编译一个需要platform key签名的APK

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
# Build all java files in the java subdirectory
LOCAL_SRC_FILES := $(call all-subdir-java-files)
# Name of the APK to build
LOCAL_PACKAGE_NAME := LocalPackage
LOCAL_CERTIFICATE := platform
# Tell it to build an APK
include $(BUILD_PACKAGE)
注:LOCAL_CERTIFICATE 后面应该是签名文件的文件名

四、编译一个需要特殊vendor key签名的APK

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
# Build all java files in the java subdirectory
LOCAL_SRC_FILES := $(call all-subdir-java-files)
# Name of the APK to build
LOCAL_PACKAGE_NAME := LocalPackage
LOCAL_CERTIFICATE := vendor/example/certs/app
# Tell it to build an APK
include $(BUILD_PACKAGE)

五、装载一个普通的第三方APK

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
# Module name should match apk name to be installed.
LOCAL_MODULE := LocalModuleName
LOCAL_SRC_FILES := $(LOCAL_MODULE).apk
LOCAL_MODULE_CLASS := APPS
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
LOCAL_CERTIFICATE := platform
include $(BUILD_PREBUILT)

六、装载需要.so(动态库)的第三方apk

LOCAL_PATH := $(my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := baiduinput_android_v1.1_1000e
LOCAL_SRC_FILES := $(LOCAL_MODULE).apk
LOCAL_MODULE_CLASS := APPS
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
LOCAL_CERTIFICATE := platform
include $(BUILD_PREBUILT)

#################################################################
####### copy the library to /system/lib #########################
#################################################################
include $(CLEAR_VARS)
LOCAL_MODULE := libinputcore.so
LOCAL_MODULE_CLASS := SHARED_LIBRARIES
LOCAL_MODULE_PATH := $(TARGET_OUT_SHARED_LIBRARIES)
LOCAL_SRC_FILES := lib/$(LOCAL_MODULE)
OVERRIDE_BUILD_MODULE_PATH := $(TARGET_OUT_INTERMEDIATE_LIBRARIES)
include $(BUILD_PREBUILT)

七、编译一个静态java库

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
# Build all java files in the java subdirectory
LOCAL_SRC_FILES := $(call all-subdir-java-files)
# Any libraries that this library depends on
LOCAL_JAVA_LIBRARIES := android.test.runner
# The name of the jar file to create
LOCAL_MODULE := sample
# Build a static jar file.
include $(BUILD_STATIC_JAVA_LIBRARY)
注:LOCAL_JAVA_LIBRARIES表示生成的java库的jar文件名。

来源:http://www.cnblogs.com/hopetribe/archive/2012/04/23/2467060.html

include $(CLEAR_VARS)

LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := ta:libs/TA4AIDL.jar
include $(BUILD_MULTI_PREBUILT)

下面的代码可以加到任一个文件中:
添加共享库:
LOCAL_MODULE := libffmpeg #库的名字
LOCAL_MODULE_TAGS := optional   #系统内有效,你可以试一下不加这一行就可以看到出错提示信息。
LOCAL_PREBUILT_LIBS := libffmpeg.so #库的路径。

添加静态库:
include $(CLEAR_VARS)
LOCAL_MODULE := libavcodec
LOCAL_PREBUILT_LIBS := libavcodec.a
LOCAL_MODULE_TAGS := optional
include $(BUILD_MULTI_PREBUILT)

静态库和动态库是对应的,静态库是在链接时使用,动态库是在运行时使用,使用方法:

在要用到对应库的模块的Android.mk文件中加入类似于下面的内容:

静态库(链接时用,它会被复制到out/target/product/generic/obj/STATIC_LIBRARIES/libavcodec_intermediates/目录下):

LOCAL_WHOLE_STATIC_LIBRARIES += \
    libavcodec  #这个是模块名(LOCAL_MODULE)
动态库(运行时用,它会被复制到/system/lib/目录下。):
LOCAL_SHARED_LIBRARIES += \
        libffmpeg

include $(call all-makefiles-under,$(LOCAL_PATH)) #这句上调用子目录下的很有Android.mk

来源:http://hi.baidu.com/2400xiaobing/item/ffa78cd51f76d81521e25085

LOCAL_STATIC_JAVA_LIBRARIES := ta

include $(CLEAR_VARS)

LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := ta:libs/TA4AIDL.jar
include $(BUILD_MULTI_PREBUILT)

时间: 2024-10-13 12:11:28

Android.mk添加第三方jar包的相关文章

Android.mk添加第三方jar包(转载)

转自:www.cnblogs.com/hopetribe/archive/2012/04/23/2467060.html LOCAL_PATH:= $(call my-dir)include $(CLEAR_VARS) LOCAL_STATIC_JAVA_LIBRARIES := xsocket jackson-mapper logging jackson-core javatar log4j LOCAL_MODULE_TAGS := optional LOCAL_SRC_FILES := $(

Android.mk导入第三方jar包

参考<link> 要点是加入这两个标签: LOCAL_STATIC_JAVA_LIBRARIES LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES 上面链接里没提到的是,这两个标签需要用`CLEAR_VARS`分开,并且include `BUILD_MULTI_PREBUILT`可以理解成不同的makefile: LOCAL_STATIC_JAVA_LIBRARIES := third-party-lib1 third-party-lib2 #..... #######

Eclipse / android studio 添加第三方jar包 步骤

eclipse 将第三方包放到libs文件夹后并没有引用. 基本步骤分为3步,具体介绍如下: 打开自己的Eclipse,在自己的Android工程上名上右键->Build Path ->Configure Build Path 2. 在Libraries选项卡中,选择右侧的Add External JARs,然后选择要导入的第三方的jar包即可! 3 在Order and Export选项卡中,点击右侧的Up按钮,将刚才引入的jar包放到最上方的位置,前边的勾记得要勾上! (关于放到首位,是自

Android studio 添加第三方jar包遇到的编译不通过问题

经常会出现 Error:Execution failed for task ':app:transformClassesWithDexForDebug'. > com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'C:\Progr

【转】Android中引入第三方Jar包的方法(java.lang.NoClassDefFoundError解决办法)

原文网址:http://www.blogjava.net/anchor110/articles/355699.html 1.在工程下新建lib文件夹,将需要的第三方包拷贝进来.2.将引用的第三方包,添加进工作的build path.3.(关键的一步)将lib设为源文件夹.如果不设置,则程序编译可以通过,但运行的时候,会报: java.lang.NoClassDefFoundError # re: Android中引入第三方Jar包的方法(java.lang.NoClassDefFoundErro

Android项目打第三方jar包

Android项目打第三方jar包 - mengweiqi33的专栏 - 博客频道 - CSDN.NET 随着Android系统的日益发展和日渐成熟,各种平台的合作就日渐频繁.现在主要互联网公司,都退出了各种各样的插件功能.如第三方支付,第三方联合登陆和微博分享等等功能. 近期由于业务的需要,公司提出将项目的功能打成jar包,提供给其它客户调用.经过一段时间的调查研究和实践,先将解决办法总结如下. 一.原理介绍 在每个Android项目中,都会有一个R.java文件,该文件由ADT维护的,只要你

关于如何正确地在android项目中添加第三方jar包

1.下载第三方jar包 2.在android项目下创建一个libs目录(名称并不固定,你完全可以取其他名称) 3.在eclipse中右键点击libs目录,依次选择Import -> General -> File System,选中jar包所在目录, 然后选中这个目录下的jar包 注:到这一步为止你就成功地把jar包添加到项目中(但是还没有被android的虚拟机识别,因此如果这时你使用jar包中的类,编译都无法通过) 4.右键点击项目名,依次选择Build Path -> Config

Android中使用第三方jar包

步骤: 方法1:Eclipse下, 右键工程, Build path, java build path, 选择libraries 在右边的按钮中点击“Add Library” 选择“User library”, 点击“下一步” 点击“User librarys”按钮 在出现的界面中点击“New..”按钮 在弹出的界面中随便起一个名字,点击“确定” 点击“Add jars”按钮选择第三方jar包,点击“确定”完成. 后面的步骤很重要,如果不进行后面的操作. 在Eclipse里显示编译通过,不会有错

android studio引入第三方jar包

我们在android开发中,需要引入第三方的jar包,来高效的使用已有的现成的功能.下面在android studio中如何引入第三方jar包. 在菜单File中==>Project structure ==>dependences >> 绿色的+号,选择你要的第三方jar路径,这样在build.grade中就会有相应的配置信息: dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile fil