【Android Native Code开发系列】四 编译自己的Native Code
2016-05-07 20:57
423 查看
注意:
1。 系列六里也有一些编译相关的技巧
2。 编译过程中,如果出现需要类似缺少libxxx.so这样的出错信息,请到源码主目录编译此库: make libxxx
#######################################
编译自己的Native Code
#######################################
# 在有Android源码的条件下,编译自己的native代码
1. 写好自己的c/c++工程代码,放在mymodule目录,并设置好同目录下的Android.mk
比如要编译一个动态库,代码为ZPService.h和ZPService.cpp,则这样配置:
----------------------------------------------
LOCAL_PATH:=$(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES:=ZPService.cpp // 源代码
LOCAL_SHARED_LIBRARIES:=libutils libbinder // 依赖库
LOCAL_MODULE_TAGS:=optional // 不要忘了这行
LOCAL_MODULE:=ZPService // 生成库名,前面不需要加lib
LOCAL_PRELINK_MODULE:=false
// 编译成库, 若编译成可执行文件,则为
// include $(BUILD_EXECUTABLE)
include $(BUILD_SHARED_LIBRARY)
---------------------------------------------
2. 把源代码目录mymodule放在android/development/下
3. (1)进入android根目录,运行
source build/envsetup.sh
(2)或者,先运行source build/envsetup.sh,再进入mymodule目录,运行
mm
4. make libZPService
5. 生成的文件将放在android/out/target/product/generic/system下的bin
或lib目录,这要视你要编成库还是可执行文件而定
# 使用下载的ndk编译自己的native代码
1. 建立工程目录ndktest, 再建立子目录jni, 在jni下放置native代码和Android.mk, 如下所示:
../ndktest
`-- jni
|-- Android.mk
`-- test.cpp
2. 进入工程主目录下, 调用ndk-build编译
zp@zp-desktop:~/ndktest$ ~/android-ndk-r7/ndk-build
Compile++ thumb : zptest <= test.cpp
StaticLibrary : libstdc++.a
Executable : zptest
Install : zptest => libs/armeabi/zptest
3. 如2所示, 生成的zptest位于ndktest/libs/armeabi目录. 编译后的目录结构如下:
../ndktest
|-- jni
| |-- Android.mk
| `-- test.cpp
|-- libs
| `-- armeabi
| `-- zptest
`-- obj
`-- local
`-- armeabi
|-- libstdc++.a
|-- objs
| `-- zptest
| |-- test.o
| `-- test.o.d
`-- zptest
http://blog.csdn.net/blackboyofsnp/article/details/7242564
1。 系列六里也有一些编译相关的技巧
2。 编译过程中,如果出现需要类似缺少libxxx.so这样的出错信息,请到源码主目录编译此库: make libxxx
#######################################
编译自己的Native Code
#######################################
# 在有Android源码的条件下,编译自己的native代码
1. 写好自己的c/c++工程代码,放在mymodule目录,并设置好同目录下的Android.mk
比如要编译一个动态库,代码为ZPService.h和ZPService.cpp,则这样配置:
----------------------------------------------
LOCAL_PATH:=$(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES:=ZPService.cpp // 源代码
LOCAL_SHARED_LIBRARIES:=libutils libbinder // 依赖库
LOCAL_MODULE_TAGS:=optional // 不要忘了这行
LOCAL_MODULE:=ZPService // 生成库名,前面不需要加lib
LOCAL_PRELINK_MODULE:=false
// 编译成库, 若编译成可执行文件,则为
// include $(BUILD_EXECUTABLE)
include $(BUILD_SHARED_LIBRARY)
---------------------------------------------
2. 把源代码目录mymodule放在android/development/下
3. (1)进入android根目录,运行
source build/envsetup.sh
(2)或者,先运行source build/envsetup.sh,再进入mymodule目录,运行
mm
4. make libZPService
5. 生成的文件将放在android/out/target/product/generic/system下的bin
或lib目录,这要视你要编成库还是可执行文件而定
# 使用下载的ndk编译自己的native代码
1. 建立工程目录ndktest, 再建立子目录jni, 在jni下放置native代码和Android.mk, 如下所示:
../ndktest
`-- jni
|-- Android.mk
`-- test.cpp
2. 进入工程主目录下, 调用ndk-build编译
zp@zp-desktop:~/ndktest$ ~/android-ndk-r7/ndk-build
Compile++ thumb : zptest <= test.cpp
StaticLibrary : libstdc++.a
Executable : zptest
Install : zptest => libs/armeabi/zptest
3. 如2所示, 生成的zptest位于ndktest/libs/armeabi目录. 编译后的目录结构如下:
../ndktest
|-- jni
| |-- Android.mk
| `-- test.cpp
|-- libs
| `-- armeabi
| `-- zptest
`-- obj
`-- local
`-- armeabi
|-- libstdc++.a
|-- objs
| `-- zptest
| |-- test.o
| `-- test.o.d
`-- zptest
http://blog.csdn.net/blackboyofsnp/article/details/7242564
相关文章推荐
- 帧动画
- 【Android Native Code开发系列】三 Android源码的编译环境配置、下载及编译
- Android:inputType常用取值
- android 远程服务传递自定义数据类型
- android组件之Service
- Android-ContentProvider读取和插入手机联系人
- 一个帖子学会Android开发四大组件
- Android半透明背景
- Android Monkey 压力测试 介绍
- android实现代码的动态加载
- android studio install报错
- Android ADB 用法
- Android欢迎界面的创建及引导完整代码(判断是否是第一次下载注册)
- android组件之BroadcastReceiver
- Android基础
- Android 图片弹跳动画
- android基础--tools:context=".MainActivity"作用
- Android阴影背景
- Android实现点击两次返回键退出
- android挂断电话的功能