在使用Android Studio 2025的JNI时出现了很多状况,也不知道是不是我弄错了什么,反正就是如果代码放在jni文件夹,那么代码就不会在Android Studio面板上显示,必须要放到cpp文件夹他才显示,然后在使用ndk进行编译时,ndk又去jni文件夹里面找文件,我真的是服了,总归还是学艺不精,不过我还是找到了一个解决办法
APP build.gradle
我是这样配置的
yaml
plugins {
alias(libs.plugins.android.application)
}
android {
namespace 'com.test'
compileSdk 36
defaultConfig {
applicationId "com.test"
minSdk 24
targetSdk 36
versionCode 1
versionName "1.0"
ndkVersion "27.3.13750724"
// 移除 cmake 配置,只保留 ndkBuild
externalNativeBuild {
ndkBuild {
arguments "NDK_APPLICATION_MK=src/main/cpp/Application.mk"
cFlags "-DSTDC_HEADERS"
cppFlags "-std=c++11"
}
}
ndk {
// 指定支持的 ABI
abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64'
}
}
sourceSets {
main {
jni.srcDirs=[]
jni.srcDirs = ['src/main/cpp']
jniLibs.srcDirs = ['src/main/libs']
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_11
targetCompatibility JavaVersion.VERSION_11
}
externalNativeBuild {
ndkBuild {
path "src/main/cpp/Android.mk"
}
}
}
dependencies {
implementation libs.appcompat
implementation libs.material
implementation libs.activity
implementation libs.constraintlayout
testImplementation libs.junit
androidTestImplementation libs.ext.junit
androidTestImplementation libs.espresso.core
}
然后我JDK是24,JDK24没有javah,用javac生成
下面是配置工具



右击java文件生成.h文件

yaml
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := com_test_Jni_test
LOCAL_SRC_FILES := com_test_Jni_test.cpp
LOCAL_LDLIBS := -llog
include $(BUILD_SHARED_LIBRARY)
yaml
APP_ABI := x86 armeabi-v7a arm64-v8a
APP_PLATFORM := android-24
APP_STL := c++_shared
APP_CFLAGS += -DSTDC_HEADERS
APP_CPPFLAGS += -std=c++11
放进cpp里面

然后右击cpp文件夹 ,就能用ndk_build编译
