Android编译环境编译Native C的模块
Android编译环境本身比较复杂,且不像普通的编译环境:只有顶层目录下才有Makefile文件,而其他的每个component都使用统一标准的Android.mk. Android.mk文件本身是比较简单的,不过它并不是我们熟悉的Makefile,而是经过了Android自身编译系统的很多处理,因此要真正理清楚其中的联系还比较复杂,不过这种方式的好处在于,编写一个新的Android.mk来给Android增加一个新的Component会比较简单。
编译Java程序可以直接采用Eclipse的集成环境来完成,这里就不重复了。我们主要针对C/C++来说明,下面通过一个小例子来说明,如何在Android 中增加一个C程序的Hello World:
1. 在$(YOUR_ANDROID)/ development 目录下创建hello目录,其中$(YOUR_ANDROID)指Android源代码所在的目录。
- # mkdir $(YOUR_ANDROID)/development/hello
2. 在$(YOUR_ANDROID)/external/hello/目录编写hello.c文件,hello.c的内容当然就是经典的HelloWorld程序:
#include
int main()
{
printf("Hello World!\n");
return 0;
}
3. 在$(YOUR_ANDROID)/external/hello/目录编写Android.mk文件。这是Android Makefile的标准命名,不要更改。Android.mk文件的格式和内容可以参考其他已有的Android.mk文件的写法,针对helloworld程序的Android.mk文件内容如下:
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES:= \
hello.c
LOCAL_MODULE := helloworld
include $(BUILD_EXECUTABLE)
注意上面LOCAL_SRC_FILES用来指定源文件;,LOCAL_MODULE指定要编译的模块的名字,下一步骤编译时就要用到;include $(BUILD_EXECUTABLE)表示要编译成一个可执行文件,如果想编译成动态库则可用BUILD_SHARED_LIBRARY,这些可以在$(YOUR_ANDROID)/build/core/config.mk查到。
4. 回到Android源代码顶层目录进行编译:
# cd $(YOUR_ANDROID) && make helloworld
注意make helloworld中的目标名helloworld就是上面Android.mk文件中由LOCAL_MODULE指定的模块名。编译结果如下:
target thumb C: helloworld <= development/hello/hello.c
target Executable: helloworld (out/target/product/generic/obj/EXECUTABLES/helloworld_intermediates/LINKED/helloworld)
target Non-prelinked: helloworld (out/target/product/generic/symbols/system/bin/helloworld)
target Strip: helloworld (out/target/product/generic/obj/EXECUTABLES/helloworld_intermediates/helloworld)
Install: out/target/product/generic/system/bin/helloworld
5.如上面的编译结果所示,编译后的可执行文件存放在out/target/product/generic/system/bin/helloworld,通过”adb push”将它传送到模拟器上,再通过”adb shell”登录到模拟器终端,就可以执行了
分享到:
相关推荐
Android编译Native C的helloworld模块
如下所有步骤及说明均为 React Native Android 的 DIY,涉及命令均为 Ubuntu 环境,Windows 类推即可。 1. 获取代码及模块安装和签名配置 执行如下命令进行代码下载及模块安装: $ git clone ...
高级篇内容包含:Android源代码编译,系统编译,模块编译,Android源代码Java代码调试,Android源代码Native代码调试。演讲中也将穿插一些实践案例进行分析。 讲师介绍:胡继堂,原微软亚洲工程院软件开发工程师,...
NativeScript 可以使用 Javascript,CSS, XML 创建真正的 Native 跨平台应用,支持 iOS Android,NativeScript 将您的跨平台代码翻译成目标平台的代码。UI 使用 XML 描述,CSS 样式,在编译时将 UI 转化成本地原生...
编译环境 由于reactNativeAndroid ndk支持版本必须为r10e,所以项目根目录下...2.运行后React Native页面报错,发现so文件,这个是因为你的项目没有安装支持“ armeabi-v7a”,需要在主模块build.gradle中加上 defaul
针对解决OpenCV人脸检测模块在Android平台编译和移植的问题,提出一种利用JNI技术(Java Native Interface)调用OpenCV以及采用Android NDK(Native Development Kit)生成共享库的目标检测方法。文中从分析利用...
我们可以通过该项目读取和修改android native C / C ++代码。 我们可以编译自己的Android C / C ++代码以在Android设备上运行。 当然,感谢CLion团队,所有这些都是基于CLion的。 自动找到模块的路径。 自动解析...
另外 libs 目录下是编译好的 native library,如果引入项目不想编译,可以直接使用。(JCenter 仓库地址之后提供) 注意:由于使用了 JNI, 请不要混淆 -keep class me.pqpo.smartcropperlib.**{*;} 使用 1. 裁剪...
脚手架React Native库如果您想创建自己的React Native模块,则对项目进行脚手架可能是一项艰巨的任务。 create-react-native-library可以通过以下步骤为您架设一个新项目: 您可以在其上构建的适用于Android和iOS的...
使用 : npm install react-native-dialogs --save 使用 : yarn add react-native-dialogs: react-native link react-native-dialogs 或者,如果失败,请使用手动链接使用react-native run-android编译应用程序...
该项目是一个使用Android Studio创建的,通过gradle编译的,存在多个模块的工程的gradle编译的事例。完整的模拟了第三方SDK,自己的SDK以及Demo的调用关系以及相关的gradle编译脚本。 该项目重点介绍的不同gradle...
第1章介绍了阅读本书所需要做的一些准备工作,包括对Android整个系统架构的认识,以及Android开发环境和源码阅读环境的搭建等。注意,本书分析的源码是Android2.2。 第2章通过Android源码中的一处实例深入地...
本工程不支持NDK编译,需要在Android源码环境根目录下执行如下使RilService -j16然后执行亚行根亚行重新安装adb push生成的RilService.apk / system / app / RilService / adb push生成的libgameserver.so / system ...
1.2 搭建开发环境 1.2.1 下载源码 1.2.2 编译源码 1.3 工具介绍 1.3.1 Source Insight介绍 1.3.3 Busybox的使用 1.4 本章小结 第2章 深入理解JNI 2.1 JNI概述 2.2 学习JNI的实例:MediaScanner 2.3 Java层的...
深入理解Android 卷1 不是扫描版的,是全版电子书的,非PDF,可编辑,各种阅览器以打开!包括书签和同步目录! 第1章 阅读前的准备工作 / 1 1.1 系统架构 / 2 1.1.1 Android系统架构 / 2 1.1.2 本书的架构 / 3 1.2 ...
该模块是Android上的类和iOS上的的包装。 安装 $ npm install react-native-image-colors 或者 $ yarn add react-native-image-colors 安卓 重建应用程序。 的iOS 安装Pod,然后重新构建应用程序。 npx pod-...
安装$ yarn add react-native-stripe-payments $ npx react-native link react-native-stripe-payments该库附带需要与React Native一起编译的平台本机代码。这需要您配置可通过完成的构建工具。用法设置首先,您必须...
提供集成开发环境(IDE),如Visual Studio、Eclipse、Android Studio和Sublime Text等,这些工具集成了文本编辑器,支持语法高亮、自动补全、代码片段管理和版本控制等功能,有助于开发者高效编写和维护代码。...