您的位置:首页 > 移动开发 > Android开发

Android群英传学习笔记-AM&PM

2016-08-03 09:53 351 查看
1、系统信息获取

android.os.Build--系统编译时大量的设备、配置信息

    包括Build.BOARD//主板  BRAND//定制商  DEVICE//设备参数  DISPLAY//显示屏参数  PRODUCT//手机产品名  VERSION.SDK_INT//版本号

String brand = Build.BRAND;


SystemProperty--系统配置属性值和参数

    os.version//OS版本  name//OS名称

String os_version = System.getProperty("os.version");


adb shell中查看

    进入/system目录 cat build.prop

    getprop ro.build.id

    /proc目录 cat cpuinfo

2、Apk应用信息获取-PackageManager

    当前应用的flags & ApplicationInfo.FLAG_SYSTEM != 0则为系统应用

    flags & ApplicationInfo.FLAG_SYSTEM <= 0则为第三方应用

    flags & ApplicationInfo.FLAG_EXTERNAL_STORAGE != 0则为安装在SD卡应用

    当系统应用升级后成为第三方应用:

    flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP != 0

PackageManager pm = this.getPackageManager();//获取PackageManager对象

List<ApplicationInfo> list = pm

 .getInstalledApplications(PackageManager.GET_UNINSTALLED_PACKAGES);


3、Apk应用信息获取-ActivityManager

    获取在运行的应用程序信息

    ActivityManager.MemoryInfo-系统全局内存信息

    availMem--系统可用内存,totalMem--总内存,threshold--低内存阈值,lowMemory--是否处于低内存

    Debug.MemoryInfo-统计进程下的内存信息

    RunningAppProcessInfo-运行进程的信息

    processName--进程名,pid--进程pid,uid--进程uid,pkgList-该进程下的所有包

    RunningServiceInfo-运行服务信息

    activeSince--第一次被激活时间、方式,foreground--是否在后台运行

ActivityManager am = (ActivityManager)this.getSystemService(Context.ACTIVITY_SERVICE);

List<ActivityManager.RunningAppProcessInfo> infos = am.getRunningAppProcesses();

ActivityManager.RunningAppProcessInfo info = infos.get(0);

int pid = info.pid;

int uid = info.uid;

String processName = info.processName;

Debug.MemoryInfo[] = memoryInfos = am.getProcessMemoryInfo(new int[]{pid});

int memorySize = memoryInfos[0].getTotalPss();




4、Android安全机制

    4.1代码安全机制-代码混淆proguard

build.gradle(Module:app)文件

buildTypes{

   release{

       minifyEnabled false //是否启用混淆

       proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

   }//proguard-android.txt系统默认混淆文件,proguard-rules.pro自定义混淆文件

}


    4.2应用接入权限控制-Mainifest文件权限声明、权限检查

    判断permission名称:若为空直接PERMISSION_DENIED

    判断Uid:0-Root权限,System Server的Uid,Uid与参数中的请求Uid不同PERMISSION_DENIED

    通过PackageManagerService.checkUidPermission()判断Uid是否具有权限

    4.3应用签名机制-数字证书

    4.4Linux内核层安全机制-Uid、访问权限控制

    4.5Android虚拟机沙箱机制-沙箱隔离

5、APK反编译

    apktool实现XML文件的反编译,Dex2jar、jd-gui实现java代码反编译。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息