`
寻梦者
  • 浏览: 637656 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

android中jni的一点研究

 
阅读更多

  很多时候,android工程中会调用一些jni库进行一些复杂的耗资源的逻辑处理,特别是研究android源码的码农这个应该深有体会,如何在应用层调用c的方法,还有如何在c端回调java对象呢,这个很值得研究。

 

从应用端研究,要调用so库里面方法,得遵循一定的规律:

    1.System.loadLibrary("media_jni")-------->libmedia_jni.so,,,,加载前缀为"lib"的动态库(系统会根据不同的平台扩展成相对应的动态库名称)

   2.so库根据特定的包名+类名,找到上层的类

 

  so库初始化

   1.调用JNI_Onload方法做动态库的初始化------>调用RegisterNatives间接调用getMethods[]做java跟c直接方法的映射,  研究mediaScanner的静态跟动态映射(静态映射是按照函数名称跟包名称使得java跟c之间有映射关系,动态映射则是根据getMethods方法做映射)

分享到:
评论

相关推荐

    Android 深入研究JNI详解

    ### Android深入研究JNI详解 #### 一、JNI与Android中的.so库载入 在深入了解JNI(Java Native Interface)之前,我们需要明确一点:Android应用程序的主要部分是基于Java开发的,并且这些Java类会被编译成Dex格式...

    jni 在c中打印信息到Eclipse中

    本文将详细介绍如何在JNI的C代码中实现这一点。 #### 第一步:引入必要的头文件 首先,在JNI的C文件中需要引入`<android/log.h>`头文件。这个头文件提供了用于输出日志的基本函数。例如: ```c #include <android...

    Android环境下USB扩展串口方法研究.pdf

    在研究Android环境下USB扩展串口的方法中,主要探讨了三种模式,分别是Linux驱动模式、主机模式和配件模式。这三种模式均基于USB接口转串口设备控制外设的实现方式,下面详细探讨每种模式的原理、实现、优缺点及适用...

    50 Android Hacks.pdf

    以上是对《50 Android Hacks》这本书可能涵盖的一些关键知识点的概述,每一点都可以深入研究,帮助开发者在Android开发领域取得更大的成就。通过学习这些技巧,开发者不仅可以提升自己的专业技能,还能为用户提供更...

    NDK开发C/C++配置Log打印日志

    在Android中,我们通常用JNI来调用C/C++库,而Log则是我们追踪代码执行情况的重要工具。 要配置NDK开发中的Log打印,我们需要以下几个步骤: 1. **设置预处理器宏**: 在C/C++源文件中,使用`__android_log_print()...

    androidsmb

    "androidsmb"是一个与Android平台相关的开源项目,源自Google Code。这个项目的主要目标是为Android设备提供SMB(Server Message Block)...通过研究这个项目,可以学习到如何在Android环境中实现一个完整的SMB客户端。

    Android应用源码Mezzofanti文字扫描识别

    ORC引擎封装在libocr.so里了,项目全英文注释,需要的朋友可以下载研究一下.google code项目主页https://code.google.com/p/mezzofanti/另外说一点废话,项目正常导入编译以后在我的手机上打开提示not enough space ...

    android AudioRecord录音转码绘图存储文件

    此demo 时时通过手机采集外界声音,支持耳机mic 和手机 mic 采集,时时...犹豫本人研究的同时也付出了相当的精力和时间,换一点资源分希望大家理解。本demo绝对是成型经过多次调试的code,希望对你有帮助。靠谱!!!

    Unity使用安卓串口的详细教程以及源码

    Unity允许开发者编写C#代码,但对Android原生接口的调用需要通过Java Native Interface (JNI)。因此,你需要创建一个Android Studio项目,编写Java代码来实现串口通信的功能,然后导出为.so库文件,再将其导入到...

    七彩三国.源代码

    2. **JNI(Java Native Interface)**:为了在Android环境中调用C/C++编写的SDL库,开发者通常会使用JNI,它允许Java代码和本地代码之间进行交互。 3. **资源管理**:游戏中的图像、音频等资源通常会被打包成Asset...

Global site tag (gtag.js) - Google Analytics