当前位置: 首页 > wzjs >正文

建设银行的投诉网站衡阳网站建设

建设银行的投诉网站,衡阳网站建设,win7 网站建设,开发app的过程文章目录 Android高级开发JNI开发第一篇(初级入门篇)🧠 一、什么是 JNI?✅ 为什么要用 JNI? ⚙️ 二、开发环境准备开发工具 🚀 三、创建一个支持 JNI 的 Android 项目第一步:创建新项目项目结构…

文章目录

  • Android高级开发JNI开发第一篇(初级入门篇)
    • 🧠 一、什么是 JNI?
      • ✅ 为什么要用 JNI?
    • ⚙️ 二、开发环境准备
      • 开发工具
    • 🚀 三、创建一个支持 JNI 的 Android 项目
      • 第一步:创建新项目
      • 项目结构示例
    • 🧪 四、第一个 JNI 示例:Hello from C++
      • 🧩 Java 代码(MainActivity.java)
    • 🛠 五、配置 CMake 构建脚本

Android高级开发JNI开发第一篇(初级入门篇)

👨‍💻 本文作者:一位正在攻克底层开发的 Android 工程师
🧭 目标读者:有 Java/Android 基础,希望入门 JNI 开发的新手
📌 本文特点:从零开始,手把手实战,代码详细注释,适合 CSDN 初学者收藏


🧠 一、什么是 JNI?

JNI(Java Native Interface) 是 Java 提供的一种机制,它允许 Java 代码与使用 C 或 C++ 编写的本地代码进行交互。

简单说,JNI 是 Java 和原生代码之间的“翻译官”。

✅ 为什么要用 JNI?

使用场景示例
调用高性能库OpenCV、FFmpeg
调用底层系统接口系统级音视频处理、传感器操作
提升性能密集计算场景用 C/C++
兼容老旧库有些厂商 SDK 只提供 .so 文件

⚙️ 二、开发环境准备

开发工具

  • ✅ Android Studio(建议 4.0+)
  • ✅ 已配置好 SDK 和 NDK(NDK 安装可通过 SDK Manager 添加)
  • ✅ 熟悉 Java 基础语法

🚀 三、创建一个支持 JNI 的 Android 项目

第一步:创建新项目

  1. 打开 Android Studio,点击 File > New Project
  2. 选择模板:Native C++
  3. 输入项目名,比如:JniHello
  4. 语言选 Java,C++ 标准选 C++11
  5. 完成后你会获得一个默认支持 JNI 的项目结构

项目结构示例

app/
├── src/main/java/com/example/jni/MainActivity.java
├── src/main/cpp/native-lib.cpp
├── CMakeLists.txt


🧪 四、第一个 JNI 示例:Hello from C++

系统自动生成了第一个 JNI 示例,我们来逐步分析它。

🧩 Java 代码(MainActivity.java)

public class MainActivity extends AppCompatActivity {// 加载本地库static {System.loadLibrary("native-lib");}// 声明 native 方法public native String stringFromJNI();@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);TextView tv = findViewById(R.id.sample_text);tv.setText(stringFromJNI()); // 调用 native 方法}
}

🧩 C++ 代码(native-lib.cpp)

#include <jni.h>
#include <string>extern "C"
JNIEXPORT jstring JNICALL
Java_com_example_jni_MainActivity_stringFromJNI(JNIEnv* env,jobject /* this */) {std::string hello = "Hello from C++";return env->NewStringUTF(hello.c_str());
}

🔍 分析解释:
extern “C”:关闭 C++ 的名称重整(name mangling)

JNIEXPORT/JNICALL:JNI 的标准函数导出宏

Java_全限定类名_方法名:这个函数名必须完全匹配 Java 中声明的 native 方法

JNIEnv* env:提供访问 Java 方法、类、对象的能力

NewStringUTF:创建一个 Java 的 String 返回给 Java 层
默认生成的 CMakeLists.txt 一般如下:

🛠 五、配置 CMake 构建脚本

cmake_minimum_required(VERSION 3.4.1)add_library(native-libSHAREDnative-lib.cpp )find_library(log-liblog )target_link_libraries(native-lib${log-lib} )

确保你的 app目录下的 build.gradle 中已启用 externalNativeBuild:

externalNativeBuild {cmake {path "src/main/cpp/CMakeLists.txt"}
}

最后会输出为
Hello from C++

✅ 说明你的 Java 成功调用了 C++ 函数,JNI 配置无误!

🎯 七、JNI 名称规则总结
Java 代码 native 函数名
com.example.jni.MainActivity.stringFromJNI() Java_com_example_jni_MainActivity_stringFromJNI

📌 小贴士:包名中的 . 替换为 _,类名与方法名直接拼接。

🔄 八、常见问题排查
问题 原因 解决方案
Java 找不到 native 方法 函数名写错或拼写不一致 检查方法命名和包名是否完全匹配
native 方法未加载 没有调用 System.loadLibrary() 加上正确的库名加载语句
编译报错:找不到头文件 NDK 未正确配置 检查 NDK 安装路径或重装

🧱 下一篇预告:第二篇 - JNI 参数传递与 Java → C → Java 双向调用
敬请期待!

http://www.dtcms.com/wzjs/389035.html

相关文章:

  • 公司网站建设合同铁岭网站seo
  • 发布信息免费的网站关键词挖掘工具有哪些
  • 建设网站方案ppt百度网站介绍
  • 阿里邮箱企业登录入口重庆seo网站收录优化
  • 自己怎么做网站的聚合页面重庆公司seo
  • 怎么做网站的项目预算南宁seo收费
  • 多语言网站 推广百度认证考试
  • 做资源网站西点培训前十名学校
  • 公司宣传册设计模板石家庄抖音seo
  • wordpress文章无法访问seo咨询邵阳
  • 网站建设详细教程自己怎么做网页推广
  • 备案图标怎么放在网站中企业培训课程设置
  • 做销售的网站关键词什么意思
  • 达州住房和城乡建设部网站上海网络推广软件
  • 哪个网站可以做视频软件百度搜索网址大全
  • 怎么样建公司网站优化是什么意思
  • 日照seo网站外包百度联盟广告
  • 网站网页设计培训机构关键词排名优化软件
  • it项目网站开发的需求文档百度推广代理开户
  • 乌鲁木齐网站建设公司哪家好哪有培训seo
  • 网站做优化效果怎么样c++线上培训机构哪个好
  • 日本网站在线免费观看电视剧湖南知名网络推广公司
  • 做网站的图片网店代运营公司
  • 即墨网站开发服务营销
  • 做网站怎么赚钱 知乎重庆人力资源和社会保障网
  • 小说网站设计毕业论文抖音seo代理
  • 软件工程师英文郑州seo顾问外包公司
  • 青海省建设厅勘察设计备案网站seo搜索优化专员招聘
  • 网站设计排版怎么做舆情分析报告范文
  • 做货源网站可以赚钱吗百度竞价是什么