Android App开发之创建JNI接口获取CPU指令集讲解及实战(附源码 简单易懂)

简介: Android App开发之创建JNI接口获取CPU指令集讲解及实战(附源码 简单易懂)

需要源码请点赞关注收藏后评论区留言~~~

一、创建JNI接口

JNI提供了若干API实现Java和其他语言的通信。虽然JNI是Java平台的标准,但是要想在Android上使用JNI,还得配合NDK,NDK提供了C/C++标准库的头文件和标准库的链接文件,而JNI开发只是在App工程下编写C/C++代码,代码必须包含NDK提供的头文件,build.gradl和mk文件依据编译规则把标准库链接进去,编译完成形成最终的so动态库文件,这样才能在App中通过Java代码调用JNI接口。

下面以获取CPU指令集为例,简要介绍JNI开发具体步骤

1:确保NDK环境搭建完成 并且本模块已经添加了对NDK的支持

2:在活动代码中添加JNI接口定义 并在初始化时加载JNI动态库

3:转到工程的jni目录下,在h文件,c文件,cpp文件中编写C/C++代码

工程目录结构如下

以上开发步骤需要注意以下几点

1:数据类型转换

2:编译规则定义

3:开发注意事项

运行效果如下 调用CPU的指令集

代码如下

Java类

package com.example.ebook;
import android.annotation.SuppressLint;
import android.os.Build;
import android.os.Bundle;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
@SuppressLint("SetTextI18n")
public class JniCpuActivity extends AppCompatActivity {
    private TextView tv_cpu_jni; // 声明一个文本视图对象
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_jni_cpu);
        TextView tv_cpu_build = findViewById(R.id.tv_cpu_build);
        tv_cpu_build.setText("Build类获得的CPU指令集为" + Build.CPU_ABI);
        tv_cpu_jni = findViewById(R.id.tv_cpu_jni);
        findViewById(R.id.btn_cpu).setOnClickListener(v -> {
            // 调用JNI方法cpuFromJNI获得CPU信息
            String desc = cpuFromJNI(1, 0.5f, 99.9, true);
            tv_cpu_jni.setText(desc);
        });
    }
    // 声明cpuFromJNI是来自于JNI的原生方法
    public native String cpuFromJNI(int i1, float f1, double d1, boolean b1);
    // 在加载当前类时就去加载libcommon.so,加载动作发生在页面启动之前
    static {
        System.loadLibrary("common");
    }
}

XML文件

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:padding="5dp" >
    <TextView
        android:id="@+id/tv_cpu_build"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textColor="@color/black"
        android:textSize="17sp" />
    <Button
        android:id="@+id/btn_cpu"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:text="调用jni接口获取指令集"
        android:textColor="@color/black"
        android:textSize="17sp" />
    <TextView
        android:id="@+id/tv_cpu_jni"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textColor="@color/black"
        android:textSize="17sp" />
</LinearLayout>

创作不易 觉得有帮助请点赞关注收藏~~~

相关文章
|
5月前
|
缓存 移动开发 JavaScript
如何优化UniApp开发的App的启动速度?
如何优化UniApp开发的App的启动速度?
1048 139
|
5月前
|
移动开发 JavaScript weex
UniApp开发的App在启动速度方面有哪些优势和劣势?
UniApp开发的App在启动速度方面有哪些优势和劣势?
509 137
|
5月前
|
数据采集 JavaScript 前端开发
开发比分App?你缺的不是程序员
开发体育比分App,关键不在代码,而在懂体育、懂数据、懂用户。明确定位、理清需求、选好数据源,再找专业的产品、数据与技术人才协同,才能少走弯路。程序员最后入场,效率最高。
331 154
|
6月前
|
移动开发 小程序 Android开发
基于 uni-app 开发的废品回收类多端应用功能与界面说明
本文将对一款基于 uni-app 开发的废品回收类多端应用,从多端支持范围、核心功能模块及部分界面展示进行客观说明,相关资源信息也将一并呈现。
233 0
|
6月前
|
JSON 监控 数据格式
1688 item_search_app 关键字搜索商品接口深度分析及 Python 实现
1688开放平台item_search_app接口专为移动端优化,支持关键词搜索、多维度筛选与排序,可获取商品详情及供应商信息,适用于货源采集、价格监控与竞品分析,助力采购决策。
|
5月前
|
移动开发 前端开发 Android开发
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
972 12
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
5月前
|
移动开发 JavaScript 应用服务中间件
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
781 5
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
5月前
|
移动开发 Rust JavaScript
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
975 4
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
5月前
|
人工智能 前端开发 JavaScript
最佳实践3:用通义灵码开发一款 App
本示例演示使用通义灵码,基于React Native与Node.js开发跨平台类通义App,重点展示iOS端实现。涵盖前端页面生成、后端代码库自动生成、RTK Query通信集成及Qwen API调用全过程,体现灵码在全栈开发中的高效能力。(238字)
678 11