Android安全:So分析

一、So简介 
1.Android底层是Linux,Linux本身就是使用C/C++语言,Android使用了一个Dalvik虚拟机才使得应用程序开发使用Java语言; 
2.Dalvik支持JNI编程方式,第三方应用完全可以通过JNI调用自己的C/C++动态库(so文件),使用“Java+C”编程方式; 
3.NDK(Native Development Kit)是“Java+C”开发的工具库,保证程序的兼容性、调试性和调用API方便性,也避免Java的不足,如安全性; 
二、“Java+C”编程方式
 
图像
三、使用NDK原因 
1.代码保护:APK对Java代码很容易反编译、阅读和篡改,而对C/C++开发出来的so库进行反汇编难度较大; 
2.方便使用现存的开源库:大部分现存的开源库(OpenCV、OPENGL等)都是用C/C++代码编写的; 
3.提高程序的执行效率:将要求高性能的逻辑使用C开发,从而提高应用程序的执行效率; 
4.便于移植:用C/C++写的so库可以方便移植到其它的嵌入式平台上使用; 
四、NDK开发流程
 
在讲解so分析之前,我们先创建一个NDKDemo程序(Android Studio为例),简单通过Java调用C中的方法,返回字符串Toast显示; 
1.File->Project Structure->SDK Location->Android NDK location->Download Android NDK,完成安装NDK(新版本NDK,安装在SDK目录下的ndk-bundle); 
2.从传统的Android Gradle插件迁移,需要修改如下Gradle配置: 
. 
├── app/ 
│   ├── app.iml 
│   ├── build.gradle 
│   └── src/ 
├── build.gradle 
├── gradle/ 
│   └── wrapper/ 
│       ├── gradle-wrapper.jar 
│       └── gradle-wrapper.properties 
├── gradle.properties 
├── gradlew* 
├── gradlew.bat 
├── local.properties 
├── MyApplication.iml 
└── settings.gradle 
./gradle/wrapper/gradle-wrapper.properties 
#Wed Apr 10 15:27:10 PDT 2013 
distributionBa
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值