Android Studio 生成so 并实现调用

该博客介绍了在Windows平台使用Android Studio 3.1.4和android-ndk-r10e生成并调用so文件的步骤。包括新建工程和Java文件、生成class文件、创建jni文件夹并生成头文件和.c文件、进行ndk配置生成so文件,最后在项目中调用so文件。

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

平台: windows 

IDE: android studio 3.1.4

ndk :android-ndk-r10e

 

1.新建一个Android studio工程。 新建一个 AlgJni.java文件.

AlgJni.java

public class AlgJni {
    static {
        System.loadLibrary("JniAlg");
    }
    public native static String GetSm3HashHex(String filePath);
}

 2. make project ,    会在app的build 目录中生成 AlgJni.class 文件

3. 在app/src/main 文件下新建一个 jni 文件夹,   android studio 终端, cd到jni 目录, 输入如下命令

javah -jni -classpath D:\JniAlg\app\build\intermediates\classes\debug 
 com.example.administrator.jnialg.AlgJni

会在jni文件中生成一个jni头文件,  在当前文件夹中(jni)中生成.c文件并对它进行实现; 在当前文件夹下新建一个Android.mk和Application.mk:

Android.mk

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)

LOCAL_MODULE := JniAlg

LOCAL_SRC_FILES := 	com_example_administrator_jnialg_AlgJni.c
LOCAL_SRC_FILES +=	sm3.c
LOCAL_SRC_FILES +=	sm3_.c

include $(BUILD_SHARED_LIBRARY)

Application.mk:

APP_ABI := all

4.ndk 配置;

终端进入jni目录, 输入: ndk-build就会生成so文件.

5.调用so文件.

app中的build.gradle文件中添加入下:

android {
    ...
    sourceSets {
        main() {
            jniLibs.srcDirs = ['src/main/libs']
            jni.srcDirs = [] //屏蔽掉默认的jni编译生成过程
        }
    }
}

MainActivity中调用:

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        TextView textView = (TextView) findViewById(R.id.text);
        textView.setText(AlgJni.GetSm3HashHex("/sdcard/Download/test.txt"));
    }
}

layout中入如下:

运行效果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值