当前位置:   article > 正文

如何使用Android.mk编译动态库以及可执行文件_android.mk怎么编译

android.mk怎么编译

     在Android开发中,开发层次我认为大体上分为三个层次:

     1.应用层:应用层主要通过eclipse以及android studio编写上层业务以及UI等,主要依赖于系统提供的接口。

     2.framework层:此层次主要为应用层apk提供接口实现相应的功能。Framwork提供的功能可谓非常多。在Android中,大量应用了Binder进程通信,完成了各种丰富的操作。如果需要定制化系统动作,通常修改framework代码。

    3.linux内核层:android是基于linux内核的。linux完成硬件底层初始化,加载驱动,初始化文件系统等操作。初始化jvm运行环境基础等。

    当然,可以通过更深层次的划分充分认识Android系统。在android NDK开发中,很常使用到动态库。在这里主要介绍如何通过Android.mk编译生成自己定制化的动态库以及可执行文件。

    Android.mk有其自定义的语法,相比于Makefile还是简单很多的。实际上,Android.mk是用来向构建系统描述你的资源文件的。详情可参考:http://android.mk/

    下面来看一个简单的Android.mk的例子:   

  1. LOCAL_PATH := $(call my-dir)
  2. #Android.mk通常需要定义好LOCAL_PATH,表示当前工作路径
  3. #函数my-dir是编译系统提供的,返回当前路径
  4. include $(CLEAR_VARS)
  5. #这一步操作主要是清空之前定义的LOCAL_XXX开头的变量,是必须要的操作
  6. LOCAL_C_INCLUDES:=$(LOCAL_PATH)/include
  7. #定义源文件所需的头文件所需的目录
  8. LOCAL_MODULE :=libhello-android
  9. #定义编译出来的模块名
  10. LOCAL_SHARED_LIBRARIES := liblog
  11. #编译此模块需要依赖的动态库
  12. LOCAL_SRC_FILES := src/hello-android.c
  13. #定义编译模块所需的源文件
  14. include $(BUILD_SHARED_LIBRARY)
  15. #定义编译出来的目标文件,如动态库,静态库,jar包以及apk
  16. #编译可执行文件,步骤和上述一样
  17. include $(CLEAR_VARS)
  18. LOCAL_C_INCLUDES:=$(LOCAL_PATH)/include
  19. LOCAL_SHARED_LIBRARIES := liblog \
  20. libhello-android
  21. LOCAL_SRC_FILES := src/main.c
  22. LOCAL_MODULE := main
  23. include $(BUILD_EXECUTABLE)

   目录结构如下:

   

  include/hello_android.h文件内容如下:

  1. #include<utils/Log.h>
  2. #define LOG_TAG "hello_android"
  3. void print_hello();

    hello-android.c文件内容如下:

  1. #include "hello_android.h"
  2. void print_hello()
  3. {
  4. ALOGD("hello_android");
  5. }

   main.c文件内容如下:   

  1. #include "hello_android.h"
  2. int main(void)
  3. {
  4. print_hello();
  5. return 0;
  6. }

   编译输出可得到如下libhello-android.so以及main可执行文件了。

   Android.mk作为android完整的编译系统的配置文件,当然还有其他选项。此文章不一一举出。由于水平有限,若有错误,恳请各位读者指正。

 

   

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/526398
推荐阅读
相关标签
  

闽ICP备14008679号