Android Studio 2025版JNI配置

在使用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文件

Android.mk

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)

Application.mk

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编译

相关推荐
lxysbly28 分钟前
n64模拟器安卓版带金手指2026
android
游戏开发爱好者83 小时前
日常开发与测试的 App 测试方法、查看设备状态、实时日志、应用数据
android·ios·小程序·https·uni-app·iphone·webview
王码码20354 小时前
Flutter for OpenHarmony 实战之基础组件:第三十一篇 Chip 系列组件 — 灵活的标签化交互
android·flutter·交互·harmonyos
黑码哥4 小时前
ViewHolder设计模式深度剖析:iOS开发者掌握Android列表性能优化的实战指南
android·ios·性能优化·跨平台开发·viewholder
亓才孓4 小时前
[JDBC]元数据
android
独行soc4 小时前
2026年渗透测试面试题总结-17(题目+回答)
android·网络·安全·web安全·渗透测试·安全狮
金融RPA机器人丨实在智能4 小时前
Android Studio开发App项目进入AI深水区:实在智能Agent引领无代码交互革命
android·人工智能·ai·android studio
科技块儿4 小时前
利用IP查询在智慧城市交通信号系统中的应用探索
android·tcp/ip·智慧城市
独行soc5 小时前
2026年渗透测试面试题总结-18(题目+回答)
android·网络·安全·web安全·渗透测试·安全狮
王码码20355 小时前
Flutter for OpenHarmony 实战之基础组件:第二十七篇 BottomSheet — 动态底部弹窗与底部栏菜单
android·flutter·harmonyos