• 安卓---JNI使用


    交叉编译

    • 系统平台:Windows、Mac OS、Linux
    • CPU平台:ARM、X86、MIPS
    • 概念:在一个平台下打包编译出还有一个平台能够运行的程序#交叉编译原理
    • 源代码->预编译->编译->链接->可运行程序
    • 原理:模拟还有一个平台的特性去编译代码#交叉编译工具链*ToolChains,一个工具运行完成自己主动运行下一个工具#常见工具
    • NDK:native developement kits
    • CDT:eclipse插件,C/C++ developement tool。高亮显示C语言keyword
    • cygwin:Linux命令行模拟器#NDK文件夹结构
    • doc:帮助文档
    • build/tools:linux的批处理文件
    • platforms:开发jni过程中会用到的头文件和C语言类库
    • prebuilt:预编译时用到的工具
    • samples:JNI的使用案例
    • sources:NDK源代码
    • toolchains:编译打包时用到的工具链
    • ndk-build.cmd:開始编译打包JNI代码

    JNI开发流程

    1. 创建jni目录,创建c文件
    2. 在java类中定义本地方法
    3. 在C文件里定义函数实现本地方法

      //函数名必须是Java开头,_连接包名类名方法名
      jstring Java_com_itheima_helloworld1_MainActivity_helloFromC(JNIEnv* env, jobject thiz)
      
    4. 创建Android.mk文件。指定要编译的c文件和模块名字

    5. 在jni文件夹下运行ndk-build.cmd指令。编译打包出动态链接库

    6. 在java代码中载入动态链接库。调用本地方法

    7. 部署项目

    常见错误

    找不到类库

    • 没有加入x86支持
    • 载入动态链接库时写错模块名###本地方法找不到
    • 忘记载入动态链接库
    • c函数名写错

    javah

    • 自己主动生成jni样式的头文件
    • java1.7:在src文件夹下 运行javah com.itheima.helloworld2.MainActivity
    • java1.6:在bin/classes文件夹下 运行javah com.itheima.helloworld2.MainActivity

    加入本地支持

    • 须要先指定NDK目录
    • 自己主动生成jni目录和cpp文件、Android.mk文件
    • 能够指定include目录的路径
    • 每次部署项目时。开发环境会自己主动编译打包出so类库

    javap

    • 打印方法的签名
    • 在bin/classes文件夹下 javap -s com.itheima.calljava.MainActivity
  • 相关阅读:
    github fork项目后,代码更新
    UIScrollView的用法,属性
    调整屏幕亮度,调整字体大小
    iOS UIFont 字体名字大全
    ios 6以后,UILabel全属性
    oc中的各种遍历(迭代)方法
    判断app是否是第一次启动
    ios 显示代码块(show the code snippet library)
    ios 添加动画的方法
    添加app第一次启动页面
  • 原文地址:https://www.cnblogs.com/yjbjingcha/p/6826284.html
Copyright © 2020-2023  润新知