Android调用so包

1.将需要引入的so包放入libs目录下。
2.需要build.gradle文件

android {
    compileSdkVersion 28
    ...
    defaultConfig {
        minSdkVersion 19
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
    ...
        ndk {
            //设置支持的SO库架构
            abiFilters 'armeabi', 'x86', 'armeabi-v7a', 'x86_64'
        }
    }
    sourceSets {
        main {
            jniLibs.srcDirs = ['libs']  // <- - Set your folder here!
            assets.srcDirs = ['src/main/assets', 'src/main/assets/']
            jni.srcDirs = []
        }
    }
}
3.调用so文件
public class Masker {
    static {
        System.loadLibrary("graphics");
    }
    private final int height;
    private long nativeInstance;
    private final int width;

    private native void finalizer(long j);

    private native void native_clear(long j);

    private native void native_getMaskRect(long j, Rect rect);

    private native long native_init(Bitmap bitmap);

    private native long native_mask(long j, int i, int i2);

    private native void native_reset(long j);

    private native void native_upload(long j);

    public Masker(Bitmap src) {
        this.width = src.getWidth();
        this.height = src.getHeight();
        this.nativeInstance = native_init(src);
    }

    public long uploadMask(int x, int y) {
        if (x < 0 || x > this.width || y < 0 || y > this.height) {
            return 0;
        }
        long pixels = native_mask(this.nativeInstance, x, y);
        native_upload(this.nativeInstance);
        return pixels;
    }

    public void upload() {
        native_upload(this.nativeInstance);
    }

    public Rect getMaskRect() {
        Rect out = new Rect();
        native_getMaskRect(this.nativeInstance, out);
        return out;
    }

    public void reset() {
        native_reset(this.nativeInstance);
    }

    public void clear() {
        native_clear(this.nativeInstance);
    }

    public void destroy() {
        try {
            finalizer(this.nativeInstance);
            this.nativeInstance = 0;
        } catch (Exception e) {
        }
    }

    protected void finalize() throws Throwable {
        try {
            finalizer(this.nativeInstance);
            this.nativeInstance = 0;
        } finally {
            super.finalize();
        }
    }



}

你可能感兴趣的:(Android调用so包)