用ndk-build 工具手动生成编译android原生程序
2016-07-08 22:26
405 查看
Android NDK 开发套件提供个一个ndk-build 工具,方面开发者来快速地生成原生程序。
在使用ndk-build工具之前,需要现有一个android工程,我们使用android sdk 开发包tools目录下的android脚本来生成。
命令行解释:
“-n”指定Android工程的名称
“-p”指定生成工程的目录名
“-t”指定生成Android工程所需要使用的平台版本号
“-k”指定Android工程的包名
“-a”指定默认Activity的名称
“android createproject”会根据默认Activity文件名自动生成相应的java文件,并生成AndroidManifest.xml.
Android的工程生成好了,在工程的根目录下新建一个jni文件夹
在jni文件夹下新建 hello.c文件 与 Android.mk文件
hello.c原程序代码
Android.mk编译脚本代码
然后再命令行进入hello2工程目录,输入ndk-build
命令就会在libs/armeabi目录下生成hello可执行文件
将hello复制到模拟器或手机,然后输入指令adb shell /data/local/hello
可以看到执行效果输出“Hello ARM!”
在windows平台下编译原声程序就完成了。
在使用ndk-build工具之前,需要现有一个android工程,我们使用android sdk 开发包tools目录下的android脚本来生成。
android create project -n hello2 -p hello2 -t android-23 -k com.droider.hello2 -a MyActiviry |
“-n”指定Android工程的名称
“-p”指定生成工程的目录名
“-t”指定生成Android工程所需要使用的平台版本号
“-k”指定Android工程的包名
“-a”指定默认Activity的名称
“android createproject”会根据默认Activity文件名自动生成相应的java文件,并生成AndroidManifest.xml.
Android的工程生成好了,在工程的根目录下新建一个jni文件夹
在jni文件夹下新建 hello.c文件 与 Android.mk文件
hello.c原程序代码
#include <stdio.h> int main(int argc, char* argv[]) { printf("Hello ARM!\n"); return 0; } |
#定义了本地源码的路径 LOCAL_PATH := $(call my-dir) #指定让编译系统清楚掉一些已经定义过的宏 include $(CLEAR_VARS) #指定生成的原生程序所使用的ARM指令模式。arm表示使用32位的arm指令系统 LOCAL_ARM_MODE := arm #指定模块的名称,及原文件生成后的文件名 LOCAL_MODULE := hello #指定c或c++原文件列表。这里只有一个hello.c文件 LOCAL_SRC_FILES := hello.c #指定生成的文件类型。 #BUILD_EXECUABLE表示生成可执行文件 #BUILD_SHARED_LIBRARY表示生成动态库 #BUILD_STATIC_LIBRARY表示生成静态库 include $(BUILD_EXECUTABLE) |
命令就会在libs/armeabi目录下生成hello可执行文件
将hello复制到模拟器或手机,然后输入指令adb shell /data/local/hello
可以看到执行效果输出“Hello ARM!”
在windows平台下编译原声程序就完成了。
相关文章推荐
- RMQ+二分 - CF 689D Friends and Subsequences
- 蓝牙uuid
- UVA - 10420 List of Conquests
- CSS3 Media Queries详细介绍和使用实例
- 定义css设备类型-Media Queries图表简介及使用方法
- Android Studio官方文档之使用布局编辑器来设计UI界面
- ERROR 1366 (HY000): Incorrect string value: '\xC6\xF4\xD3\xC3' for column 'name' at row 1
- UOJ #113. 【UER #2】手机的生产
- 225. Implement Stack using Queues
- ntp的错误 no server suitable for synchronization found
- CodeForces 625A E - Guest From the Past
- CodeForces 626A B - Robot Sequence
- iOS UITabBar属性详解 UITabBarController 底部 UITabBarItem 间距调整
- hdu5286 wyh2000 and sequence
- SOAPUI使用教程-REST请求工作
- android studio关于build/outputs/apk/中apk或arr或jar无法删除的解决方法
- hdu 5063 Operation the Sequence(思路)
- UIweib的简单实用
- 将UIview描画成虚线等.
- 去掉UITableView多余的空白行分割线