zoukankan      html  css  js  c++  java
  • Android(java)学习笔记200:JNI之NDK的概念

    1.交叉编译

    (1)概念

    在一个平台(硬件)和os(软件)环境下,编译出另一种平台和os下可以运行的二进制代码。

    e.g:

        电脑端                                                            手机端

    win7---intel     >>>     编译   >>>>      arm/mips/x86---Android(Linux2.6.6)运行的二进制代码

    电脑端编写编译出可以在手机端运行的二进制代码。

    (2)交叉编译工具

    NDK : native developer kit   (本地开发工具包)

    备注:

           cdt(Eclipse插件):c开发工具(只是把c语法显示高亮)

    2. NDK工具

    (1)解压一个NDK(android-ndk-r9-windows-x86_64.zip)工具包压缩文件,得到如下结果:

    build :  编译的文件

    docs : 开发帮助文档

    platform : 平台(Android平台  ARM/MIPS/Intel Atom)

    prebuilt : 预编译的文件

    samples : 开发实例(参考)

    sources :工具的源文件

    test :测试平台

    toolchains :工具链(很多工具,链接调用组成工具链)

    ndk-build.cmd : (ndk开发工具)最重要

    (2)NDK作用

    NDK发布之前,Android不支持进行C开发。NDK提供了一系列的工具,帮助开发者快速开发C(或C++)的动态库,并能自动将so和java应用一起打包成apk。这些工具对开发者的帮助是巨大的。

    NDK集成了交叉编译器,并提供了相应的mk文件隔离CPU、平台、ABI等差异,开发人员只需要简单修改mk文件(指出"哪些文件需要编译"、"编译特性要求"等),就可以创建出so。NDK可以自动地将so和Java应用一起打包,极大地减轻了开发人员的打包工作。

    另外:

        使用NDK,我们可以将要求高性能的应用逻辑使用C开发,从而提高应用程序的执行效率。

        使用NDK,我们可以将需要保密的应用逻辑使用C开发。毕竟,Java包都是可以反编译的。

  • 相关阅读:
    CSP2020 T1儒略日 暴力模拟90pts代码
    CSP-S 2019 D1T2括号树
    P3593 [POI2015]TAB
    P5145 漂浮的鸭子
    CH0503 奇数码问题
    [NOIP2012]国王游戏 -高精度-贪心-
    费解的开关
    P1040 加分二叉树
    初步学习线段树
    P2758 编辑距离 简单DP
  • 原文地址:https://www.cnblogs.com/hebao0514/p/4811229.html
Copyright © 2011-2022 走看看