美文网首页学习笔记
Android调用so包

Android调用so包

作者: adustdu2015 | 来源:发表于2018-11-08 22:18 被阅读0次

    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包

        本文链接:https://www.haomeiwen.com/subject/fimgxqtx.html