MAUI调用.so库,jar包
必要条件:
思路:
1. 使用Android studio,生成.so
2. 使用Android studio,用java调用.so,并打包成jar
构件.so包
1. 使用Android studio,Native C++项目

2.


这两个文件不想要,干掉!
不过,倒是可以参考一下怎么写的,例如:
MainActivity.java
public class MainActivity extends AppCompatActivity { // Used to load the 'cpplib' library on application startup. static { System.loadLibrary("cpplib"); } private ActivityMainBinding binding; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); binding = ActivityMainBinding.inflate(getLayoutInflater()); setContentView(binding.getRoot()); // Example of a call to a native method TextView tv = binding.sampleText; tv.setText(stringFromJNI()); } /** * A native method that is implemented by the 'cpplib' native library, * which is packaged with this application. */ public native String stringFromJNI(); }
主要是红色这里有点特别,MainActivity.java 删掉后,依葫芦画瓢,也这么整。
再看native-lib.cpp
#include <jni.h> #include <string> extern "C" JNIEXPORT jstring JNICALL Java_com_southgz_cpplib_MainActivity_stringFromJNI( JNIEnv* env, jobject /* this */) { std::string hello = "Hello from C++"; return env->NewStringUTF(hello.c_str()); }
jstring:应该是返回的类型
JNIEXPORT、JNICALL:应该是特定的关键字
盲猜,要返回int型,应该用jint !
Java_com_southgz_cpplib_MainActivity_stringFromJNI:Java_包名_类名_方法名
开始制作
1. 添加一个java类,用于调用c++

public class cppDemo { static { System.loadLibrary("cpplib"); } public native int add(int a,int b); }
2. 添加cpp文件,实现add函数

注意文件放置的位置,要新建jni
#include <jni.h> #include <string> JNIEXPORT jint JNICALL Java_com_southgz_cpplib_cppDemo_add (JNIEnv *, jobject, jint i, jint j){ return i+j; }
3. 新建Android.mk
LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := CppLib LOCAL_SRC_FILES := cppdemo.cpp include $(BUILD_SHARED_LIBRARY)
4. 生成:

注意要进入到的目录
5. 生成后,出现:
