简易的美图秀秀利用别人的so库
2024-09-25 04:00:15
在实际开发中,有时候时间短,任务量大,可以查看类似的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);
}
}
最新文章
- 学习ASP.NET Core,怎能不了解请求处理管道[2]: 服务器在管道中的“龙头”地位
- linux学习日记之鸟哥
- HDU2159 二维完全背包
- DataGrid中的事件和方法
- android studio打包出现翻译问题
- 求一个数组中最小的K个数
- 手把手教你学习FPGA系列视频教程_救护车鸣笛声
- Picasso 加载图片到RelativeLayout之解决方案
- C++重载运算符的规则
- 基于visual Studio2013解决C语言竞赛题之0417四倍数
- 鸟哥的LINUX私房菜基础篇第三版 阅读笔记 二
- CodeForces 510C Fox And Names (拓扑排序)
- Windows 常用的运行命令
- java validate date
- WIN7搭建ASP站点
- U3D MonoBehaviour
- 设置gem源,解决下载慢的问题
- z-index 层级关系
- js 判断数组重复元素以及重复的个数
- html中引入另一个html文件