在Linux环境下Android开发过程中,经常会用到第三方的静态库、动态库、jar包来开发自己的应用,那么,如何编写这类应用的makefile呢?
首先,带有动态库的makefile编写:

12345678910
include $(CLEAR_VARS)LOCAL_MODULE := libfreewrite-jni.soLOCAL_MODULE_CLASS := SHARED_LIBRARIESLOCAL_MODULE_PATH := $(TARGET_OUT_SHARED_LIBRARIES)LOCAL_SRC_FILES := libs/$(LOCAL_MODULE)OVERRIDE_BUILD_MODULE_PATH := $(TARGET_OUT_INTERMEDIATE_LIBRARIES)include $(BUILD_PREBUILT)

将上面的代码添加在应用最外层的Android.mk文件最后面即可,其它地方也可,但是注意添加过程中不要破坏原有代码的结构,例如将下面包含jar包的代码随意添加到本代码块中间是不对的,应该放在该代码块的前面后者后面。
上面要添加的动态库的名称为:libfreewrite-jni.so
所在的路径为:/libs/libfreewrite-jni.so

第二,jar包的添加:

123456
include $(CLEAR_VARS)  LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := libvDm:libs/com.redbend.vdm.jar \    libvDmComm:libs/com.redbend.vdm.comm.jar \    libvDmDdl:libs/com.redbend.vdm.ddl.jar \    libvDmFumo:libs/com.redbend.vdm.fumo.jarinclude $(BUILD_MULTI_PREBUILT)

以上代码中,形如“libvDm:”的作用应该类似与编程语言中的引用,或者说叫重命名;另外,感觉jar包的添加,貌似和静态库是一样的,或者jar包本身就类似于静态库吧?有点小疑问……

第三,静态库的添加:
下面的Android.mk完整程序是编译生成一个.so

1234567891011121314151617181920212223242526
LOCAL_PATH := $(call my-dir)### shared libraryinclude $(CLEAR_VARS)#需要编译的本地源文件LOCAL_SRC_FILES := \hisense/com_hisense_inputmethod_CskSmartEngDecoderService.cppLOCAL_C_INCLUDES += $(JNI_H_INCLUDE)LOCAL_LDLIBS += -lpthread#将要生成.so动态库的名称LOCAL_MODULE := libjni_csksmarteng_hisenseimeLOCAL_PRELINK_MODULE := falseLOCAL_SHARED_LIBRARIES := libcutils libutils#包含静态库libhisensecsk2smartengarmLOCAL_STATIC_LIBRARIES := libhisensecsk2smartengarm#编译生成一个.so动态库include $(BUILD_SHARED_LIBRARY)#指示Static Libraries所在的目录为/lib/libhisensecsk2smartengarm#规则由lib/Android.mk文件定义include $(LOCAL_PATH)/lib/Android.mk

另附,静态库所在文件夹内的Android.mk文件:

123
LOCAL_PATH := $(my-dir)$(call add-prebuilt-files, STATIC_LIBRARIES, libhisensecsk2smartengarm.a)

原文地址

http://xiaohang.org/2011/04/

更多相关文章

  1. 重磅消息!Android与IOS的合体!高仿IOS动态高斯模糊背景!
  2. repo sync同步Android 源代码下载到99%出错
  3. 【Android Studio快捷键】之代码提示
  4. Android的strings.xml不在代码显示转html原生就支持的部分html语

随机推荐

  1. android通过耳机控制音乐播放器
  2. Android的线程使用来更新UI----Thread、H
  3. Android之SharedPreferences详解
  4. React Native调用Android原生组件
  5. android UI进阶之弹窗的使用(2)--实现通讯
  6. Android教程之android数据库编程
  7. Android(安卓)UI学习 - Tab的学习和使用
  8. Android(安卓)Studio module里面放switch
  9. ant生成android工程与 自动或者手动签名a
  10. ubuntu-11.04下android开发环境搭建