- 浏览: 104286 次
- 性别:
- 来自: 昆明
文章分类
- 全部博客 (151)
- 120D02 (5)
- 直升机 (1)
- 我的技术资料收集 (82)
- 的技术资料收集 (4)
- .NET Solution (2)
- ASP.NET (1)
- Linq to sql (1)
- 数据库技术(MS SQL) (2)
- 架构/设计 (1)
- 敏捷/持续集成 (1)
- C#.NET开发 (1)
- Matlab开发 (1)
- WinForm开发 (1)
- 开源技术 (1)
- jQuery (1)
- 我的博文 (4)
- js (2)
- android (2)
- 9. 读书笔记 (1)
- CSS3 (1)
- HTML5 (1)
- JavaScript (5)
- 移动开发 (2)
- 编程心得 (1)
- Linux操作系统 (1)
- (BI)商业智能 (1)
- IOS (1)
- Windows Phone (2)
- C# API (1)
- JQuery系列 (1)
- TFS (1)
- C# (2)
- ExtJs (1)
- .NET (1)
- Nginx (1)
- WCF学习笔记 (1)
- Computer Graphic (1)
- IT产品 (1)
- 工具分享 (1)
- MySelf (1)
- C#专栏 (1)
- 管理 (1)
- 基于Oracle Logminer数据同步 (1)
- 日常 (1)
- 实用工具 (1)
- 网页设计 (1)
- avalon (1)
- flash (1)
- DDD (1)
- 01 技术Android (1)
- WCF (1)
- selenium (1)
最新评论
-
464410531:
三国杀。。。。。。。。。。。。。。。。。。。。。。。。。。。。 ...
实用的职场宝典:不提拔你,就因为你只想把工作做好
原帖地址:http://www.cnblogs.com/yichouangle/archive/2013/05/30/3107861.html
NDK 预生库支持:
-----------------------------
Android NDK r5 已引入对预生成库的支持(共享库和静态库),可以在你的应用程序中包含和使用库的预生成库。
该功能对两种情况是有用的:
1.你想要对第三方 NDK 开发者发布你自己的库而不发行你的源文件。
2.你想要使用一个你自己的库的预生版本使你的生成加快速度。
本文档说明如何这个支持如何使用。
I. 声明一个预生成库模块:
---------------------------------------
对每个预生成库必须作为单个的独立的模块向生成系统声明。
这里是一个小小的例子我们假设 libfoo.so 文件是和下面的 Android.mk 文件位于相同目录:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := foo-prebuilt
LOCAL_SRC_FILES := libfoo.so
include $(PREBUILT_SHARED_LIBRARY)
注意,对于声明这样的模块,你实际仅需要如下步骤:
1. 给出一个模块名(这是 foo-prebuilt)。
这不需要对应预生成库它自己的名称。
2.指定 LOCAL_SRC_FILES 变量值为你提供的预生成库路径。
注:一个静态或共享库只能做为一个预生库来提供!即 LOCAL_SRC_FILES 变量值只能为一个!
像平常一样,该路径是相对于你的 LOCAL_PATH 变量值的路径。
重点:
1.你必须确保该预生成库对应你正在使用的目标 ABI 。
更多信息在后面。
3. 用 PREBUILT_SHARED_LIBRARY 替代 BUILD_SHARED_LIBRARY 。
静态库为 PREBUILT_STATIC_LIBRARY
注:一个预生模块并不生成任何东西,只是将共享库复制进 $PROJECT/obj/local 目录下,
并且另一个将复制并裁剪进 $PROJECT/libs/<abi> 目录下。
II. 如何在其它模块中引用预生成库:
------------------------------------------------------
在依赖预生成库的模块的 Android.mk 文件中将预生成模块名列入 LOCAL_STATIC_LIBRARIES 或 LOCAL_SHARED_LIBRARIES 的变量值。
例如,一个模块使用 libfoo.so 的简单例子:
include $(CLEAR_VARS)
LOCAL_MODULE := foo-user
LOCAL_SRC_FILES := foo-user.c
LOCAL_SHARED_LIBRARY := foo-prebuilt
include $(BUILD_SHARED_LIBRARY)
III. 为预生成库导出头文件:
----------------------------------------------
上面的例子被称之简单是因为在实际中用 foo-user.c 代码通常将要依赖具体的头文件声明,
通常找到在随预生成库一起发布的头文件中。(例如:foo.h)
换句话说,foo-user.c 将要有像如下一行:
#include <foo.h>
所以你需要在生成 foo-user 模块时需要指定 foo.h 的路径。
一个简单处理方法是在预生成模块定义中使用导出。
例如,假设一个 foo.h 文件是位于相对于预生成模块的 include 目录下,我们可以写成:
include $(CLEAR_VARS)
LOCAL_MODULE := foo-prebuilt
LOCAL_SRC_FILES := libfoo.so
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include
include $(PREBUILT_SHARED_LIBRARY)
这种做法确保了任何依赖该预生成模块的模块将自动进行它的 LOCAL_C_INCLUDES 作为预生包含目录的前置,这样编译器就能够找到头文件了。
IV. 调试预生成二进制文件:
--------------------------------
我们推荐你提供包含调试符号的预生成共享库。
一般在 $PROJECT/libs/<abi>/ 目录中生成的版本经过了 NDK 生成系统优化将不包含调试信息,
但是调试版本将被 ndk-gdb 用于调试目的。
V. 预生成二进制文件的 ABI 选择:
--------------------------------------
如前面所述,在生成期间提供一个兼容目标 ABI 的预生成共享库是至关重要的。
要做到这一点,检查 TARGET_ARCH_ABI 的值,它的值将是:
armeabi => ARMv5TE 或更高版本 CPU
armeabi-v7a => ARMv7 或更高版本 CPU
x86 => x86 CPU
注意 armeabi-v7a 系统可以很好的运行 armeabi 版本的二进制文件。
这里有一个例子,我们提供一个预生成库的两个版本并基于目标 ABI 来选择复制哪一个:
include $(CLEAR_VARS)
LOCAL_MODULE := foo-prebuilt
LOCAL_SRC_FILES := $(TARGET_ARCH_ABI)/libfoo.so
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include
include $(PREBUILT_SHARED_LIBRARY)
所以这里我们假设预生成库复制是在如下目录层次:
Android.mk --> 上述文件
armeabi/libfoo.so --> armeabi 版本的 so
armeabi-v7a/libfoo.so --> armeabi-v7a 版本的 so
include/foo.h --> 要导出的头文件
注:
你不需要专门提供一个 armeabi-v7a 预生成库,因为一个 armeabi 可以顺利地运行在相应的设备上。
发表评论
-
Javascript:猜猜弹出的是啥?为啥? - 幸福框架
2013-06-28 13:33 398原帖地址:http://www.cnblogs.com/hap ... -
C#中WindowsForm常见控件的运用 -- - 李晓峰
2013-06-28 13:27 1676原帖地址:http://www.cnblogs.com/liy ... -
海量数据处理利器之Hash——在线邮件地址过滤 - MyDetail
2013-06-27 12:00 604原帖地址:http://www.cnblo ... -
ASP.NET MVC 4 for Visual Studio 2010 下载地址 - 张鸿伟
2013-06-27 11:48 720原帖地址:http://www.cnblogs.com/wei ... -
【ASP.NET Web API教程】6.2 ASP.NET Web API中的JSON和XML序列化 - r01cn
2013-06-26 11:00 880原帖地址:http://www.cnblogs.com/r01 ... -
[珠玑之椟]估算的应用与Little定律 - 五岳
2013-06-26 10:54 594原帖地址:http://www.cnblogs.com/wuy ... -
30行,金额转人民币大写的代码 - 史蒂芬.王
2013-06-26 10:42 980原帖地址:http://www.cnblogs.com/ste ... -
从银行的钱荒看一个公司的团队建设 产品线过多最终导致最赚钱的项目面临破产 - James Li
2013-06-26 10:36 599原帖地址:http://www.cnblogs.com/Jam ... -
Windows 8 动手实验系列教程 实验6:设置和首选项 - zigzagPath
2013-06-25 13:39 495原帖地址:http://www.cnblogs.com/zig ... -
闲聊可穿戴设备 - shawn.xie
2013-06-25 13:33 582原帖地址:http://www.cnblo ... -
如何使用开源库,吐在VS2013发布之前,顺便介绍下VS2013的新特性"Bootstrap" - 量子计算机
2013-06-25 13:27 834原帖地址:http://www.cnblogs.com/DSh ... -
一步一步将自己的代码转换为观察者模式 - 文酱
2013-06-23 11:36 571原帖地址:http://www.cnblo ... -
iOS内存错误EXC_BAD_ACCESS的解决方法(message sent to deallocated instance) - VicStudio
2013-06-23 11:30 508原帖地址:http://www.cnblogs.com/vic ... -
记录asp.net在IE10下事件丢失排错经过 - Adming
2013-06-23 11:24 667原帖地址:http://www.cnblogs.com/wea ... -
记 FineUI 官方论坛所遭受的一次真实网络攻击!做一个像 ice 有道德的黑客! - 三生石上
2013-06-23 11:18 760原帖地址:http://www.cnblogs.com/san ... -
3、使用Oracle Logminer同步Demo
2013-06-19 10:33 541原帖地址:http://www.cnblogs.com/shi ... -
算法实践——数独的基本解法
2013-06-19 10:27 1403原帖地址:http://www.cnblogs.com/gre ... -
简单实现TCP下的大文件高效传输
2013-06-19 10:21 654原帖地址:http://www.cnblogs.com/sma ... -
avalon - 初步接触
2013-06-18 10:06 757原帖地址:http://www.cnblogs.com/aar ... -
Nginx学习笔记(一) Nginx架构
2013-06-18 09:59 496原帖地址:http://www.cnblogs.com/cod ...
相关推荐
curl库源码添加了curl_config.h和mk文件,可以直接跳转到目录使用ndk-build编译出so库.
在android的NDK开发中,使用C++的std标准库,如iostream,cout,string等
实现android studio 编译so库 以及java调c,c调java的功能
在ndk下移植好的ffmpeg-0.8.3库。
原文链接 http://blog.csdn.net/u012840567/article/details/53283274
这是一个使用 Android NDK 构建 FFmpeg 库的脚本,该脚本在 FFmpeg 5.1.4 版本编译测试通过,更多信息请查阅博客:https://blog.csdn.net/yumoxj/article/details/136276692。
使用Android NDK编译Android平台的eXosip库,有静态库和动态库。
box2d的android版 用ndk编译时把它放到需要它的bin文件底下。。这样就可以在android ndk上使用box2d物理引擎。而不必重新编译box2d库
live555 库 和 testRtspClient.cpp 编译生成静态库 和 可执行文件 testRtspClient 编译方法: 首先进入各个模块执行 Makefile,将静态库拷贝至上层目录 执行 ndk-build
Android Studio NDK编译动态库的三种方法
ndk JNI调用已有so库中的test()函数,然后使用cmake将jni编译成一个share动态库
是基于Android Studio 3.01版本的,NDK是R16。本文重点给大家介绍Android Studio中通过CMake使用NDK并编译自定义库和添加预编译库的相关知识,感兴趣的朋友一起看看吧
ti dsp ndk c6455ti dsp ndk c6455 ti dsp ndk c6455 ti dsp ndk c6455 ti dsp ndk c6455
Android SDK NDK API 对应关系
Android中通过NDK使用OpenCV库.pdf
利用现有的.c或者.cpp文件使用ndk-build来进行打成想要的so库版本
CUPS打印AndroidNDK 静态库
详细介绍 在Google android ndk平台下的 C开发
NDK 调用第三方库的方法 1,编写基础库 libndktest.so,实现一个加法(a+b); 2,编写一个基本的android程序在 MainActivity 中调libndktest.so 并实现其中的加法; 3,对原有的外部库进行进一步封装,并实现其中的...
Linux下用NDK和SDK工具将库文件打包进apk应用.pdfLinux下用NDK和SDK工具将库文件打包进apk应用.pdf