AndroidStudio JNI 快速生成头文件

简介: 笔记

一、配置Android Studio的External Tools。


编辑窗口保持在刚刚新建的写有Native方法的Class上。然后File->Setting->Tools->External Tools->Add External Tools。


2.png

image.png


点击加号。

二、在新添加的界面配置生成头文件信息


如图:


3.png

image.png

下面几个参数照抄也可以(windows):

Program: $JDKPath$/bin/javah  //前提配置过JDK,或者AS中有openJDK
Parameters:-classpath . -jni -encoding UTF-8 -d $ModuleFileDir$/src/main/cpp/include $FileClass$
Working directory: $ModuleFileDir$\src\main\java

在MacOS上配置有些不同:

Program: /Library/Java/JavaVirtualMachines/jdk1.8.0_212.jdk/Contents/Home/bin/javah
//program路径我使用的绝对路径,因为使用AS默认路径找不到javah
Parameters:-classpath . -jni -encoding UTF-8 -d $SourcepathEntry$ $FileClass$
Working directory: $SourcepathEntry$

点击确定即可。


三、生成头文件


写好native方法的java文件,随便找了一点:

public class NativeAPI {
    public static native String stringFromJNI();
    public static native String urlprotocolinfo();
    public static native String avformatinfo();
    public static native String avcodecinfo();
    public static native String avfilterinfo();
}

在NativeAPI文件右键->External Tools->javah

4.png

image.png


它生成到哪里了呢?就是配置javah时候的Parameters中-d指定的位置:

5.png

image.png

完成!


下面顺便给出CMakeList.txt示例


cmake_minimum_required(VERSION 3.4.1)
#编译
add_library( # Sets the name of the library.
        FlyNative
        # Sets the library as a shared library.
        SHARED
        # Provides a relative path to your source file(s).
        src/main/jni/com_flyscale_testaes_AESHelper.cpp)
#链接
target_link_libraries( # Specifies the target library.
        FlyNative
        # Links the target library to the log library included in the NDK.
        ${log-lib} )


目录
相关文章
|
Java 开发工具 C++
|
Java
JNI学习(1)——生成对应的头文件
JNI学习(1)——生成对应的头文件
287 0
JNI学习(1)——生成对应的头文件
|
IDE Java 开发工具
JNI学习(2)——生成动态链接.dll文件
JNI学习(2)——生成动态链接.dll文件
121 0
JNI学习(2)——生成动态链接.dll文件
|
Android开发 开发者
ijkplayer编译so库真没那么难(下)
公司现在的电台项目是我第二个接触音频播放项目,Android音视频 播放很多还是使用的MediaPlayer(大中厂除外),但是如果你用过 MediaPlayer的话,很多开发者都会吐槽有多坑,连谷歌官方都推荐 使用ExoPlayer...遇到过最坑的就是播放在线音视频的时候,网络不好 会一直加载,然后点多了还容易ANR...
332 0
|
编解码 Ubuntu 固态存储
ijkplayer编译so库真没那么难(上)
公司现在的电台项目是我第二个接触音频播放项目,Android音视频 播放很多还是使用的MediaPlayer(大中厂除外),但是如果你用过 MediaPlayer的话,很多开发者都会吐槽有多坑,连谷歌官方都推荐 使用ExoPlayer...遇到过最坑的就是播放在线音视频的时候,网络不好 会一直加载,然后点多了还容易ANR...
398 0
|
编译器 C++ 开发者
头文件.h、动态链接库.dll、静态链接库.lib的区别与应用总结
头文件.h、动态链接库.dll、静态链接库.lib的区别与应用总结
812 0
头文件.h、动态链接库.dll、静态链接库.lib的区别与应用总结
|
Android开发 C++ Windows
【Android 逆向】Android 中常用的 so 动态库 ( /system/lib/libc.so 动态库 | libc++.so 动态库 | libstdc++.so 动态库 )
【Android 逆向】Android 中常用的 so 动态库 ( /system/lib/libc.so 动态库 | libc++.so 动态库 | libstdc++.so 动态库 )
345 0
【Android 逆向】Android 中常用的 so 动态库 ( /system/lib/libc.so 动态库 | libc++.so 动态库 | libstdc++.so 动态库 )
|
Java Android开发 C++
【Android 安装包优化】使用 lib7zr.so 动态库处理压缩文件 ( jni 中 main 函数声明 | 命令行处理 | jni 调用 lib7zr.so 函数库处理压缩文件完整代码 )(一)
【Android 安装包优化】使用 lib7zr.so 动态库处理压缩文件 ( jni 中 main 函数声明 | 命令行处理 | jni 调用 lib7zr.so 函数库处理压缩文件完整代码 )(一)
176 0
【Android 安装包优化】使用 lib7zr.so 动态库处理压缩文件 ( jni 中 main 函数声明 | 命令行处理 | jni 调用 lib7zr.so 函数库处理压缩文件完整代码 )(一)
|
Java Android开发 C++
【Android 安装包优化】使用 lib7zr.so 动态库处理压缩文件 ( jni 中 main 函数声明 | 命令行处理 | jni 调用 lib7zr.so 函数库处理压缩文件完整代码 )(二)
【Android 安装包优化】使用 lib7zr.so 动态库处理压缩文件 ( jni 中 main 函数声明 | 命令行处理 | jni 调用 lib7zr.so 函数库处理压缩文件完整代码 )(二)
153 0
|
编译器 Linux Android开发
Android:JNI与NDK(二)交叉编译与动态库,静态库
Android:JNI与NDK(二)交叉编译与动态库,静态库本篇目录 一、前言本篇主要以window开发环境为背景介绍一下NDK开发中需要掌握的交叉编译等基础知识,选window系统主要是照顾大多数读者,mac ,linux操作系统基本是同样适用的。
2022 0

热门文章

最新文章