JNI代码都写好了,在编译之前我们有非常重要的一部,就是写mk文件,mk文件就相当于gcc编译时的Makefile文件,它是用来告诉编译器如何去编译的。

这里只对自己理解和常用的知识点做记录,想要看关于android.mk的全部解释请移步android.mk

  1. 对执行顺序的猜想,mk文件的执行顺序是从上往下顺序执行的
  2. 基本语法。
    $() 引用方法或变量
    := 赋值符号
    += 拼接赋值
    include 引入(调用)某个代码段,例如include $(BUILD_XXXXX)就相当于把BUILD_XXXXX这个方法的实现拿过来,编译器读到这一行时即执行该方法
  3. mk文件基本都是以LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS)开头,以include $(BUILD_XXXXX)结尾
  4. 常用预留变量解析(基本都以LOCAL_开头)
    LOCAL_PATH:指定当前文件的位置,基本都是赋值为$(call my-dir)
    LOCAL_SRC_FILES:指定需编译的源文件,多文件以空格分隔或使用+=拼接赋值
    LOCAL_MODULE:指定module名,要求必须唯一且不能带空格
    LOCAL_MODULE_FILENAME:指定生成的module的文件名,缺省则按照lib<LOCAL_MODULE>生成.a或.so文件
    LOCAL_STATIC_LIBRARIES:引用的静态库(.a)
    LOCAL_SHARED_LIBRARIES:引用的动态库(.so)
    LOCAL_LDFLAGS:指定链接标志
  5. 常用系统方法
    CLEAR_VARS:清除所有预设的值
    BUILD_SHARED_LIBRARY:编译出动态库(.so)
    BUILD_STATIC_LIBRARY:编译出静态库(.a)
  6. 编译
    cd到.mk文件所在目录,执行ndk包中的ndk-build命令

Android JNI之编译的更多相关文章

  1. [转载]—— Android JNI知识点

    Java Native Interface (JNI)标准是java平台的一部分,它允许Java代码和其他语言写的代码进行交互.JNI 是本地编程接口,它使得在 Java 虚拟机 (VM) 内部运行的 ...

  2. Android JNI 和 NDK

    1.Android NDK 一.NDK产生的背景 Android平台从诞生起,就已经支持C.C++开发.众所周知,Android的SDK基于Java实现,这意味着基于Android SDK进行开发的第 ...

  3. Android jni简便开发流程

    <Android jni helloworld>中介绍了开发jni helloworld的步骤,本文将介绍jni简便开发流程 ① 写java代码 native 声明本地方法 ② 添加本地支 ...

  4. android JNI调用(转)

    Android jni开发资料--NDK环境搭建 android开发人员注意了 谷歌改良了ndk的开发流程,对于Windows环境下NDK的开发,如果使用的NDK是r7之前的版本,必须要安装Cygwi ...

  5. Android JNI如何调用第三方库

    http://www.2cto.com/kf/201504/388764.html Android JNI找不到第三方库的解决方案 cannot load library 最近做一个jni项目,拿到的 ...

  6. Android JNI使用方法

    经过几天的努力终于搞定了android JNI部分,下面将我的这个小程序和大家分享一下.android JNI是连接android Java部分和C/C++部分的纽带,完整使用JNI需要Java代码和 ...

  7. android.mk android源码编译

    http://www.cnblogs.com/chenbin7/archive/2013/01/05/2846863.html Android.mk简单分析 2013-01-05 22:51 by . ...

  8. 【转】android JNI

    原文网址:http://jinguo.iteye.com/blog/696185 Java Native Interface (JNI)标准是java平台的一部分,它允许Java代码和其他语言写的代码 ...

  9. [置顶] Android JNI必须掌握的五点

      1:JNI是什么? Java NativeInterface(JNI)是Java提供的一个很重要的特性.它使得用诸如C/C++等语言编写的代码可以与运行于Java虚拟机(JVM)中的 Java代码 ...

随机推荐

  1. CF 1912 A NEKO's Maze Game

    题目传送门 题目描述 输入 输出 样例 样例输入 样例输出 Yes No No No Yes 一句话题意:2*n的迷宫,从(1,1)出发到(2,n),初始时全部的都是地面,每次询问会把一个地面给变成熔 ...

  2. 0ctf_2016 _Web_unserialize

    0x01 拿到题目第一件事是进行目录扫描,看看都有哪些目录,结果如下: 不少,首先有源码,我们直接下载下来,因为有源码去分析比什么都没有更容易分析出漏洞所在. 通过这个知道,它一共有这么几个页面,首页 ...

  3. Set 和 Map

    1. 数组去重 <script type="text/javascript"> [...new Set(array)] </script> 2. 条件语句的 ...

  4. 题解:2018级算法第三次上机 C3-Zexal的浩瀚星辰

    题目描述: 样例: 实现解释: 一道结合了火箭发射的贪心题目 知识点: 贪心,优先队列 题目分析: 根据题目描述可知,延迟后时间是正常推进的,也就是假设共有n个火箭,推迟k小时.则在到达k+1小时时, ...

  5. 深入理解JVM(③)线程与Java的线程

    前言 我们都知道,线程是比进程更轻量级的调度执行单位,线程的引入,可以把一个进程的资源分配和执行调度分开,各个线程既可以共享进程资源调度(内存地址.文件I/O等),又可以独立调度. 线程的实现 主流的 ...

  6. (四)学习了解OrchardCore笔记——将模块的名字添加到程序集的ModuleName

    关于如何将模块名添加到程序集的ModuleName说简单吧也简单,说不简单吧也不简单. 简单的原因是代码只有几行,不简单的原因是这些都不是c#,都是MSbuild的代码.这可真难为我了,所以这个地方我 ...

  7. OSCP Learning Notes - Exploit(4)

    Client Side Attacks Tool: setoolkit 1. Start setoolkit on Kali Linux. setoolkit 2. Select 1) Social- ...

  8. xss利用

    xss盗取cookie 什么是cookie cookie是曲奇饼,啊开个玩笑,cookie是每个用户登录唯一id和账号密码一样可以登录到网站,是的你没有听错cookie可以直接登录,至于服务器怎么设置 ...

  9. 【JUnit测试】总结

    什么是Junit? Junit是xUnit的一个子集,在c++,paython,java语言中测试框架的名字都不相同 xUnit是一套基于测试驱动开发的测试框架 其中的断言机制:将程序预期的结果与程序 ...

  10. [spring] -- AOP、IOC、DI篇

    AOP(面向切面编程) 怎么理解这个切面编程的概念及优点? 概念: 横切关注点与业务逻辑相分离,切面能帮助我们模块化横切关注点: 优点: 现在每个关注点都集中于一个地方,而不是分散到多处代码中: 服务 ...