NDK开发学习记录

本文记录了Android NDK开发过程中的关键步骤,包括使用ndk-build clean清除已生成的二进制文件,是理解Android原生开发的重要学习资料。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、jni调用的本地方法,必须在java中用native关键字声明


2、在应用程序的开始是用静态调用该库,不需要‘lib’前缀和’.so‘后缀
       static {
             System.loadLibrary("FileLoader");
      }


3、ndk可以做:
      1、生成jni兼容的共享库,可以运行在android1.5以上的平台,在arm cpu
      2、复制生成的共享库到你的工程的合适的位置,因此,最终将自动的添加到你的apk中
      3、以后将有可能集成gdb调试本地代码


   总的来说,ndk提供了:
      1、一些交叉编译工具,能够生成在linux,os x windows上运行在arm新闻的binaries
      2、一系列的有android平台提供的稳定的本地api,及相应的头文件位于:docs/STABLE-APIS.html
      3、一个编译系统,允许开发者仅仅写非常短的编译文件,这些文件描绘了那些资源需要被编译,和怎样编译,这些在 toolchain/platform/CPU/ABI指定了,

4、ndk开发练习:
      1、把本地代码放到$PROJECT/jni/...下
      2、写$PROJECT/jni/Android.mk来描述ndk系统编译的资源
      3、(可选的)下一个$PROJECT/jni/Application.mk来描绘编译系统更多的细节,具体看docs/APPLICATION-MK.html
      4 、进入项目目录$PROJECT/,运行ndk-build,即可生成共享文件,以lib(something).so的


5、放置c或c++源码
      $PROJECT/jni/sample.cpp


6、写一个Android.mk编译脚本
     语法描述在 docs/ANDROID-MK.html中
     在一个脚本中,ndk将你的代码组装成模块‘module’,每个模块可能是
             一个静态的模块, a static library 
             一个共享模块, a shared library
     你可以在一个单一的Android.mk中定义几个模块,或者写几个Android.mk文件,每个文件定义了一个单一的模块

     如果想在$PROJECT/jni/下,想有子目录,在子目录中写Android.mk,那么必须在jni/Android.mk顶级中声明子目录
     include $(CALL ALL-subdir-makefiles)
     这将包括所有的Android.mk文件和子文件到当前的编译路径目录


7、(可选的)写一Application.mk文件
     Android.mk文件描述了编译模块,而这个Application.mk描述应用本身
     docs/APPLICATION-MK.html

     包括:
            1、确切的需要的模块列表
            2、生成的cpu体系结构
            3、可选的信息,像,是否是发布编译或是调试编译,指定c或c++编译器标致,和其他应用到模块中
            这个文件是可选的,默认情况下,ndk会提供一个,仅仅编译 *all* 从Android.mk中所有的模块,和所有的makefile和目标cpu ABI
            有两种方法使用Application.mk
            1、放在$PROJECT/jni/Application.mk,这将被ndk-build自动加载
            2、放在$NDK/apps/<name>/Application.mk,$NDK是ndk安装目录,然后,运行 make APP=<name>从NDK目录

             强烈建议使用第一种



8、调用NDK编译系统
        1、使用ndk-build编译
         cd $PROJECT
         ndk-build ->应该把ndk的安装目录添加进入环境变量PATH


         ndk-build clean  -->清楚生成的二进制文件

         ndk-build -B V=1  -->强制从编译
         默认情况下,这个命令期望找到$PROJECT/jni/Application.mk和$PROJECT/jni/Android.mk
         看docs/NDK-BUILD.html看详细的编译
9、指定输出目录
         默认情况下,ndk-build把生成的文件放在$PROJECT/obj/下,你可以选择一个路径通过指定NDK_OUT环境变量指向不同的目录,这个变量有两个影响:
         1、这确保将所有的正常情况在$PROJECT/obj/下的文件存储在$NDK-OUT下
         2、告诉ndk-gdb去查询$NDK_OUT,而不是obj下


10、调试支持
        可以在Android2.2以上的设备上调试  docs/NDK-GDB.html

         1、确保你的应用是可以调试的,(eg.set android:debuggable="true"in your AndroidManifest.xml)
         2、编译你的应用用ndk-build,然后安装到你的设备或模拟器中
         3、启动你的应用
         4、运行 ‘ndk-gdb’ 在你的应用目录 $PROJECT/下

         参照gdb提示






























评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值