Android4.2.2NDK和源码开发jni的异同(2)

NDK开发Android.mk编写samples

1、
jni中包含多个源文件,且多个文件编译成为不同的so文件

(1)jni/Android.mk:

include $(call all-subdir-makefiles)    (包含所有子目录下Android.mk)

注意:在写Android.mk文件时,

call all-subdir-makefiles和call all-makefiles-under,$(LOCAL_PATH)是有区别的。

前者表示“当前目录下没有需要编译的文件,请向子目录深入”,

是告诉编译器继续向目录深处递归的一种规定写法。

后者从字面上理解也应该是同一个意思。

但是,请考虑这样一种情况:如果当前目录下有文件需要编译,

而且在当前目录下还有子目录,子目录中也有文件需要编译,

那么当前目录下的Android.mk除了要包含编译当前目录下文件的语句,

同样也要包含告诉编译器在编译完当前目录下的文件后,

继续向子目录深入的语句。这里就有一个问题,

后面这个语句该如何写呢?是call all-subdir-makefiles,

还是call all-makefiles-under,$(LOCAL_PATH)呢?

这里经过我的实验,写前者是不行的,

编译器会在编译完当前目录下的文件后不再进入子目录编译。

而写成后者则可以达到我们的期望。

(2)jni/app_jni/Android.mk

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE_TAGS := optional

LOCAL_MODULE    := libcallApp_jni

LOCAL_SRC_FILES := callApp_jni.cpp

LOCAL_LDLIBS += -L$(SYSROOT)/usr/lib -llog

LOCAL_SHARED_LIBRARIES := libdl\

liblog\

libAppUpgrade\

libAppArea

include $(BUILD_SHARED_LIBRARY)

(3)jni/app_area/Android.mk

LOCAL_PATH:= $(call my-dir)

include $(CLEAR_VARS)

LOCAL_SRC_FILES:= \

AppArea.c Encrypt.c

LOCAL_MODULE:= libAppArea

include $(BUILD_SHARED_LIBRARY)

(4)jni/app_upgrade/Android.mk

LOCAL_PATH:= $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE_TAGS := optional

LOCAL_LDLIBS += -L$(SYSROOT)/usr/lib -llog

LOCAL_SHARED_LIBRARIES := liblog libAppArea

LOCAL_SRC_FILES:= \

AppUpgrade.c

LOCAL_MODULE:= libAppUpgrade

include $(BUILD_SHARED_LIBRARY)

2、 jni中包含多个so,不含源文件

(1)jni/Android.mk:

include $(call all-subdir-makefiles)    (包含所有子目录下Android.mk)

(2)jni/app_jni/Android.mk

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE_TAGS := optional

LOCAL_MODULE    := libcallApp_jni

LOCAL_SRC_FILES := callApp_jni.cpp

LOCAL_LDLIBS += -L$(SYSROOT)/usr/lib -llog

LOCAL_SHARED_LIBRARIES := libdl\

liblog\

libpre_AppUpgrade\

libpre_AppArea

include $(BUILD_SHARED_LIBRARY)

(3)jni/app_area/Android.mk

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE := pre_AppArea

LOCAL_SRC_FILES :=libAppArea.so

include $(PREBUILT_SHARED_LIBRARY)

(4)jni/app_upgrade/Android.mk

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE := pre_AppUpgrade

LOCAL_SRC_FILES :=libAppUpgrade.so

include $(PREBUILT_SHARED_LIBRARY)

Android4.2.2NDK和源码开发jni的异同(2)

时间: 2024-11-07 01:52:40

Android4.2.2NDK和源码开发jni的异同(2)的相关文章

Android4.2.2NDK和源码开发jni的异同

C/C++开发,在NDK和源码中输出Log信息的方法! NDK: 1.包含头文件 #include <android/log.h> 2.Android.mk中包含库 LOCAL_LDLIBS += -L$(SYSROOT)/usr/lib -llog 上面这个一定要,不然出现error: undefined reference to '__android_log_print' LOCAL_SHARED_LIBRARIES := libdl\ liblog\          #经测试在Ecli

Android Widget 开发实例:桌面便签程序的实现详解和源码

桌面便签软件是Android上常用软件的一种,比如比较早的Sticky Note,就曾非常流行,而实际上使用android平台对widget开发的支持,桌面便签类软件是非常易于开发的. 本文通过逐步实现一个简单的桌面便签软件,和大家分享进行widget开发的过程和方法. 同时本程序提供完整的工程源码下载 免费下载地址在 http://linux.linuxidc.com/ 用户名与密码都是www.linuxidc.com 具体下载目录在 /pub/Android源码集锦/2011年/10月/An

Android源码开发利器——Java源码调试(基于4.1.2)

原文地址:http://blog.csdn.net/jinzhuojun/article/details/8868038 调试Android Java源码 草帽的后花园--Neo 写在之前的话:这里主要是以调试Java源码为主,应该说是在system_process之后的源码,这对于调试和修改frameworks层的人来说真是一个利器,但至于为什么在system_process之后,我还在分析,如果有结果我会更新此文章,并正在尝试调试C++的代码,就是native中的代码,如果这个可行那将会大大

Android4.4系统源码百度网盘下载

众所周知.Android如今非常火,肯定也有非常多android开发人员像我一样想研究android系统的源码.可是假设依照Google官方站点http://source.android.com/source/downloading.html上面说的步骤下载.因为在国内连接谷歌的server网速实在太慢,可是android系统的源码非常大.超过8G.我在网上看到有哥们说他下了一个多月才下载完.更让人难以接受的是,下载过程中网络连接差点儿一定会多次中断.而假设连接超时,就会报错.我在下载过程中就报

Ubuntu12.04编译Android4.0.1源码全过程-----附wubi安装ubuntu编译android源码硬盘空间不够的问题解决

本文转至  http://blog.csdn.net/yanzi1225627/article/details/9263097 昨晚在编译源码,make一段时间之后报错如下: [html] view plaincopyprint? # A fatal error has been detected by the Java Runtime Environment: # #  SIGSEGV (0xb) at pc=0x40362d33, pid=12195, tid=2835454784 # # 

Android Debuggerd 简要介绍和源码分析(转载)

转载: http://dylangao.com/2014/05/16/android-debuggerd-%E7%AE%80%E8%A6%81%E4%BB%8B%E7%BB%8D%E5%92%8C%E6%BA%90%E7%A0%81%E5%88%86%E6%9E%90/ 码字很辛苦,转载请注明来自Dylan‘s Zone的<Android Debuggerd 简要介绍和源码分析> 本文以android4.1为基础,分析debuggerd这个工具的使用方法和源码. 1.Debuggerd 简介

计算机视觉的一些测试数据集和源码站点

以下是computer vision:algorithm and application计算机视觉算法与应用这本书中附录里的关于计算机视觉的一些测试数据集和源码站点,我整理了下,加了点中文注解. ComputerVision: Algorithms and Applications Richard Szeliski 在http://szeliski.org/Book包含了更新的数据集和软件,请同样访问他. C.1 数据集 一个关键就是用富有挑战和典型的数据集来测试你算法的可靠性.当有背景或者他人

linux/centos下安装nginx(rpm安装和源码安装)详细步骤

Centos下安装nginx rpm包                                                                                                                            www.169it.com 1 在nginx官方网站下载一个rpm包,下载地址是:http://nginx.org/en/download.html wget http://nginx.org/packages/c

Android依赖注入Dagger的使用和源码解析(上篇)

一.基本概念 依赖注入(DI)和控制反转(IOC): 依赖注入是从应用程序的角度在描述,可以把依赖注入描述完整点:应用程序依赖容器创建并注入它所需要的外部资源:而控制反转是从容器的角度在描述,描述完整点:容器控制应用程序,由容器反向的向应用程序注入应用程序所需要的外部资源. 使用依赖注入可以带来以下好处: 依赖的注入和配置独立于组件之外. 因为对象是在一个独立.不耦合的地方初始化,所以当注入抽象方法的时候,我们只需要修改对象的实现方法,而不用大改代码库. 依赖可以注入到一个组件中:我们可以注入这