javah生成头文件

简介: 编写native方法,如:package com.example.renzhenming.appmarket.ui.selectimage;import android.

编写native方法,如:

package com.example.renzhenming.appmarket.ui.selectimage;


import android.graphics.Bitmap;

public class ImageUtil {
    static {
        System.loadLibrary("jpeg");
        System.loadLibrary("compressimg");
    }

    /**
     * 图片压缩
     * @param quality 压缩的质量
     * @param fileName 压缩后的路径
     */
    public static void compressImage(Bitmap bitmap,int quality,
                                     String fileName){
        compressBitmap(bitmap,quality,fileName);
    }


    /**
     * NDK方法加载图片
     * @param quality 压缩的质量
     * @param fileName 压缩后的路径
     * @return
     */
    public native static int compressBitmap(Bitmap bitmap,int quality,
                                           String fileName);

    /*public static Bitmap decodeFile(String path) {
        int finalWidth = 800;

        // 先获取宽度
        BitmapFactory.Options options = new BitmapFactory.Options();
        // 不加载图片到内存只拿宽高
        options.inJustDecodeBounds = true;
        BitmapFactory.decodeFile(path,options);

        int bitmapWidth = options.outWidth;

        int inSampleSize = 1;

        if(bitmapWidth>finalWidth){
            inSampleSize = bitmapWidth/finalWidth;
        }

        options.inSampleSize = inSampleSize;
        options.inJustDecodeBounds = false;

        return BitmapFactory.decodeFile(path,options);
    }*/
}

cmd进入build/intermediates/classes/debug文件目录下,输入如下命令

C:\Users\renzhenming\Desktop\appdemo\AppMarketDemo\app\build\intermediates\classes\debug>javah -classpath D:\application\java\sdk\platforms\android-26\android.jar;. -jni com.example.renzhenming.appmarket.ui.selectimage.ImageUtil

其中的-classpath作用是引入安卓类库中的类,因为很明显在上边我们的例子中使用了Android中的bitmap类,如果我们不加-classpath的话,就会报错
错误: 找不到类android.graphics.Bitmap。(如果没有使用的话不需要加)
注意后边的分号和点必须加,否则无法找到


img_2ed8a1932dad5eb62b09cc4375aeeab3.png
图片.png

编写完成后make project 一下,会在文件夹下生成.h文件(不make也许也可以)


img_1b32f11d7df9397639c0674b3943cda4.png
图片.png

这样我们就获取到头文件了,可以进行c语言编程了
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_example_renzhenming_appmarket_ui_selectimage_ImageUtil */

#ifndef _Included_com_example_renzhenming_appmarket_ui_selectimage_ImageUtil
#define _Included_com_example_renzhenming_appmarket_ui_selectimage_ImageUtil
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     com_example_renzhenming_appmarket_ui_selectimage_ImageUtil
 * Method:    compressBitmap
 * Signature: (Landroid/graphics/Bitmap;ILjava/lang/String;)I
 */
JNIEXPORT jint JNICALL Java_com_example_renzhenming_appmarket_ui_selectimage_ImageUtil_compressBitmap
  (JNIEnv *, jclass, jobject, jint, jstring);

#ifdef __cplusplus
}
#endif
#endif
相关文章
|
编译器 程序员 C++
C头文件
C头文件。
35 0
|
6月前
|
自然语言处理 编译器 程序员
【头文件】对.h文件的理解
【头文件】对.h文件的理解
168 1
|
6月前
|
编译器 C语言
c头文件
c头文件
48 0
|
编译器 程序员 C++
C 头文件
C 头文件。
28 0
|
6月前
|
编译器 程序员 C++
头文件
头文件。
37 2
|
Java Android开发 iOS开发
|
Java
JNI学习(1)——生成对应的头文件
JNI学习(1)——生成对应的头文件
339 0
JNI学习(1)——生成对应的头文件
|
C++
c++ 常用头文件
c++ 常用头文件
190 0