zoukankan      html  css  js  c++  java
  • 简易的美图秀秀利用别人的so库

    在实际开发中,有时候时间短,任务量大,可以查看类似的apk,将行apk反编译,通过看源码分析,用里面的JNI代码!

    本案例中用了美图秀秀的JNI.java和jni.so链接库


    项目中调用别人写的c代码:

    1.得到so和开发文档;

    2.so文件放到libs/armeabi/目录下;

    3.根据开发文档在java代码中写一个本地方法;

    4.加载动态库,调用本地方法.


    准备工作 :

       创建一个第三方美图秀秀apk中JNI的一样的包名,将JNI,java放入此包名下

       将得到的so所在的文件夹armeapi复制在libs下

    import com.mt.mtxx.image.JNI;
    import android.app.Activity;
    import android.graphics.Bitmap;
    import android.graphics.BitmapFactory;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.ImageView;
    public class MainActivity extends Activity {
       static {
          System.loadLibrary("mtimage-jni");//注意:这么名字是libs/armeapi下so的名字,去除前面的lib和后面的.so得到的
       }
       private ImageView iv;
       private Bitmap bmp;
       @Override
       protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_main);
          iv = (ImageView) findViewById(R.id.iv);
          bmp = BitmapFactory.decodeFile("/mnt/sdcard/aa.jpg");
          iv.setImageBitmap(bmp);
       }
       public void show(View v){
                int width = bmp.getWidth();
                int height = bmp.getHeight();
                int[] pixels = new int[width*height];
                bmp.getPixels(pixels , 0, width, 0, 0, width, height);
                JNI jni = new JNI();
                jni.StyleLomoHDR(pixels, width, height);
                Bitmap bitmap = Bitmap.createBitmap(pixels, width, height, bmp.getConfig());
                iv.setImageBitmap(bitmap);
       }
    }
    
  • 相关阅读:
    2015 ccpc 南阳国赛
    CF 812
    多校 2009 7
    2015 长春
    多校 2009 4
    selenium 对https网站(加密证书)进行自动化测试
    selenium配置
    2016.05.17开通自己的博客
    pod存在,但是deployment和statefulset不存在
    Eclipse设置代码格式化使用空格代替TAB
  • 原文地址:https://www.cnblogs.com/loaderman/p/6440041.html
Copyright © 2011-2022 走看看