注:我编写的应用包名为"com.nativeapp",文件路径为"/sdcard/AppProjects/Nativeapp"1
1、编写一个java(需带有native声明) NativeActivity.javapackage com.nativeapp;
public class NativeActivity {
//要在C中实现的方法output。
public native int output();
public static int main() {
//加载共享库文件libNativeActivity.so文件。
System.loadLibrary("NativeActivity");
NativeActivity nativeActivity=new NativeActivity();
int native1=nativeActivity.output();
return native1;
}
}
2、在Termux安装jdk(已经安装了可忽略)
pkg install openjdk-173、获得.h头文件
先跳转到java所在的文件夹,比如我的就是"/sdcard/AppProjects/Nativeapp/app/src/main/java/com/nativeapp"
使用javah的话会发现没有javah。
正确的命令应该为
javac -h -jni NativeActivity.java
最后会在所在的文件夹创建一个子目录"-jni"
打开被创建的这个文件夹,里面就是生成的头文件,比如我的文件名就是"com_nativeapp_NativeActivity.h",里面写了
#include#ifndef _Included_com_nativeapp_NativeActivity #define _Included_com_nativeapp_NativeActivity #ifdef __cplusplus extern "C" { #endif JNIEXPORT jint JNICALL Java_com_nativeapp_NativeActivity_output (JNIEnv *, jobject); #ifdef __cplusplus } #endif #endif
这个文件不要编辑。
4、编写c NativeActivity.c#include "com_nativeapp_NativeActivity.h"
JNIEXPORT jint JNICALL Java_com_nativeapp_NativeActivity_output
(JNIEnv *env, jobject obj){
return 114514;
}
5、生成.so文件
使用AIDE编译,注意将文件"Android.mk"最后一行改成
include $(BUILD_SHARED_LIBRARY)
点击运行后会在libs文件夹中生成libNativeActivity.so
6、在应用中放入so文件注意so文件不是放在lib文件夹而是放在jniLib文件夹!
7、编译获得apk 参考文章:1、android-ndk-aide,NDK安装教程20180605
2、JAVA调用C语言程序
java文件所在路径为"/storage/emulated/0/AppProjects/Nativeapp/app/src/main/java/com/nativeapp/" ↩︎



