位置: 编程技术 - 正文

android NDk初步学习以及某些小问题的解决方法备忘 二(android studio ndk开发教程)

编辑:rootadmin

推荐整理分享android NDk初步学习以及某些小问题的解决方法备忘 二(android studio ndk开发教程),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:android studio ndk开发教程,android ndk开发书籍,android ndk开发书籍,android ndk jni,android ndk视频教程,android ndk开发书籍,android ndk sdk,android ndk视频教程,内容如对您有帮助,希望把文章链接给更多的朋友!

android NDk初步学习以及某些小问题的解决方法备忘 二(android studio ndk开发教程)

转载地址: 作者:Sam (甄峰)

0. Android.mk简介:

Android.mk文件用来告知NDK Build 系统关于Source的信息。 Android.mk将是GNU Makefile的一部分,且将被Build System解析一次或多次。所以,请尽量少的在Android.mk中声明变量,也不要假定任何东西不会在解析过程中定义。Android.mk文件语法允许我们将Source打包成一个"modules". modules可以是:静态库动态库。只有动态库可以被 install/copy到应用程序包(APK). 静态库则可以被链接入动态库。可以在一个Android.mk中定义一个或多个modules. 也可以将同一份source 加进多个modules.Build System帮我们处理了很多细节而不需要我们再关心。例如:你不需要在Android.mk中列出头文件和外部依赖文件。NDK Build System自动帮我们提供这些信息。这也意味着,当用户升级NDK后,你将可以受益于新的toolchain/platform而不必再去修改Android.mk.1. Android.mk语法:首先看一个最简单的Android.mk的例子:LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE := hello-jniLOCAL_SRC_FILES := hello-jni.cinclude $(BUILD_SHARED_LIBRARY)讲解如下:LOCAL_PATH := $(call my-dir) 每个Android.mk文件必须以定义LOCAL_PATH为开始。它用于在开发tree中查找源文件。宏my-dir 则由Build System提供。返回包含Android.mk的目录路径。include $(CLEAR_VARS) CLEAR_VARS 变量由Build System提供。并指向一个指定的GNU Makefile,由它负责清理很多LOCAL_xxx.例如:LOCAL_MODULE, LOCAL_SRC_FILES, LOCAL_STATIC_LIBRARIES等等。但不清理LOCAL_PATH. 这个清理动作是必须的,因为所有的编译控制文件由同一个GNU Make解析和执行,其变量是全局的。所以清理后才能避免相互影响。LOCAL_MODULE := hello-jni LOCAL_MODULE模块必须定义,以表示Android.mk中的每一个模块。名字必须唯一且不包含空&#;。Build System会自动添加适当的前缀和后缀。例如,foo,要产生动态库,则生成libfoo.so.但请注意:如果模块名被定为:libfoo.则生成libfoo.so. 不再加前缀。LOCAL_SRC_FILES := hello-jni.c LOCAL_SRC_FILES变量必须包含将要打包如模块的C/C&#;&#; 源码。不必列出头文件,build System 会自动帮我们找出依赖文件。缺省的C&#;&#;源码的扩展名为.cpp. 也可以修改,通过LOCAL_CPP_EXTENSION。include $(BUILD_SHARED_LIBRARY) BUILD_SHARED_LIBRARY:是Build System提供的一个变量,指向一个GNU Makefile Script。它负责收集自从上次调用 include $(CLEAR_VARS) 后的所有LOCAL_XXX信息。并决定编译为什么。2. NDK Build System变量:NDK Build System 保留以下变量名:以LOCAL_ 为开头的以PRIVATE_ ,NDK_ 或者APP_ 开头的名字。小写字母名字:如my-dir如果想要定义自己在Android.mk中使用的变量名,建议添加 MY_ 前缀。2.1: NDK提供的变量:此类GNU Make变量是NDK Build System在解析Android.mk之前就定义好了的。2.1.3:BUILD_STATIC_LIBRARY:与前面类&#;,它也指向一个编译脚本,收集自从上次调用 include $(CLEAR_VARS) 后的所有LOCAL_XXX信息。并决定如何将你列出的Source编译成一个静态库。静态库不能够加入到Project 或者APK中。但它可以用来生成动态库。指向一个build 脚本,用来指定一个预先编译好多动态库。与BUILD_SHARED_LIBRARY and BUILD_STATIC_LIBRARY不同,此时模块的LOCAL_SRC_FILES应该被指定为一个预先编译好的动态库,而非source file. LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS)LOCAL_MODULE := foo-prebuilt # 模块名LOCAL_SRC_FILES := libfoo.so # 模块的文件路径(相对于 LOCAL_PATH) include $(PREBUILT_SHARED_LIBRARY) # 注意这里不是 BUILD_SHARED_LIBRARY这个共享库将被拷贝到 $PROJECT/obj/local 和 $PROJECT/libs/(stripped) 主要是用在将已经编译好的第三方库使用在本Android Project中。为什么不直接将其COPY到libs/armabi目录呢?因为这样做缺陷很多。下一节再详细说明。2.1.6: PREBUILT_STATIC_LIBRARY: 预先编译的静态库。同上。2.1.7: TARGET_ARCH:目标CPU架构名。如果为 “arm” 则声称ARM兼容的指令。 与CPU架构版本无关。2.1.8: TARGET_PLATFORM: 目标平台的名字。2.1.9:TARGET_ARCH_ABI

Android下使用pull解析器生成XML文件、读取XML文件 Android下使用Pull解析器1,Pull解析器的运行方式与SAX解析器相似。它提供了类似的事件,如:开始元素和结束元素事件。2,使用parser.next()可以进入下一

安卓学习3-布局管理-LinearLayout API地址:

PreferenceActivity与PreferenceFragment应用 PreferenceActivityPreferenceActivity是一个非常有用的基类,当进行选项配置时,选项设置会以参数的形式保存,用Preferences进行保存。当Activity类继承PreferenceAct

标签: android studio ndk开发教程

本文链接地址:https://www.jiuchutong.com/biancheng/385127.html 转载请保留说明!

上一篇:Android XML布局详解 - XML Layouts(安卓xml存储方式)

下一篇:Android下使用pull解析器生成XML文件、读取XML文件(android pipepline)

  • 金税盘入账的会计分录
  • 营改增后企业所得税分成比例
  • 事业单位财政拨款取得方式
  • 住宿费电子普票可以抵扣进项税额
  • 2019年残保金申报时间
  • 商业用房怎么缴税
  • 收到的货品与实体不符
  • 贴现利息的计算题
  • 没有收到发票的支出可以做成本吗
  • 开了红字发票印花税怎么处理?
  • 增值税实际缴纳总额
  • 所得税预缴申报表利润
  • 开专用发票可以不写单位与型号么?
  • 金税三期能查几年前的发票
  • 2020国家生育津贴多少钱
  • 税收优惠政策没有任何法律风险
  • 消费税和增值税的不同之处
  • 事业基金弥补收支差额
  • 卷烟批发企业批发卷烟是否缴纳消费税
  • 1697508131
  • 交通费进项税抵扣计算
  • 劳务派遣公司增值税税率
  • 新版edge浏览器兼容模式怎么设置
  • 房产税和城镇土地使用税
  • 一般纳税人出租其2016年4月30日前取得的不动产
  • ffmpeg安装教程linux
  • 轻薄本拆卸
  • PHP:pg_lo_unlink()的用法_PostgreSQL函数
  • opware12.exe - opware12进程是什么文件 有什么用
  • 企业在建工程领用自产的应税消费品
  • 什么是动态表单
  • 项目差旅费能计入项目费用吗
  • thinkphp框架作用
  • 朝圣者将风马旗扔向甘登寺上方的空中为新年祈福,中国西藏 (© Ian Cumming/plainpicture)
  • 增值税发票洗烂怎么办
  • 安装多版本chrome
  • opencv训练模型教程
  • 销售折让销货方式有哪些
  • 小迪安全2021
  • 金税盘怎么增加收款人和复核人
  • 普通发票密码区出格了能用吗
  • 股本和库存股有什么区别
  • dedecms安装及配置
  • 税费计提多了怎么冲减
  • 金蝶余额调节表勾对日期什么意思
  • sql server数据查询语句
  • 技术维护费全额抵扣有时间限制吗
  • 电子承兑汇票兑现扣几个点
  • SQL Server实时同步更新远程数据库遇到的问题小结
  • 内部往来划账通知单
  • 外币账户的钱怎么转成人民币
  • 珠宝行业的会计
  • 亏损企业对外捐赠的税前扣除
  • 工会经费记在什么科目
  • 转出未交增值税会计账务处理
  • 领用自产应税消费品用于财务人员职工福利
  • 跨年度发票的报表怎么填
  • 无固定合同有哪些好处
  • 可供分配利润包括哪些
  • 借款利息收入发票
  • 购买二氧化氯
  • 会计核算健全的单位 可以选择小规模纳税的有
  • 航天信息开票软件客服
  • 对公账户可以取钱出来吗
  • mac怎么打开terminal
  • linux如何使用数据库
  • JavaScript中数组长度的属性
  • 彻底理解样本方差为何除以n-1
  • node.js配置
  • python算法简单编程题
  • vue缓存数据
  • js最简单的代码
  • javascript教程完整版
  • 客户端名称 android-
  • js 不用var
  • android 动画特效
  • mysql里多表查询语句怎么写
  • jquery写网页
  • 专票怎么查询已开记录
  • 广东地税局领导班子
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设