1.部署安全性:应用程序必须使用数字证书才能安装到设备上。

2.执行期间的安全性:
   2.1 使用独立进程
   2.2 使用固定唯一用户ID
   2.3  申明性权限模型
 
3数字证书
   3.1.数字证书的用处:使用数字证书对应用进行签名后,防止应用程序被非法更新(只有相同的数字证书才能更新应用)
   3.2.数字证书:包含相关信息(如:公司名称和地址等)的工件。 重要特性包括(签名和公/私钥)。
   3.3.数字证书的获取:a.从证书授权机构购买 b.使用keytool等工具生成。
   3.4数字证书的存储:存储在密钥库中,有别名,在密钥库中用别名表示。
   3.5证书生成命令
        keytool -genkey -v -keystore "c:\android\release\release.keystore" 

-alias androidbook -storepass paxxword -keypass paxxword -keyalg RSA
                  -validity 14000

        有效期google要求大于14000天,如果失效,应用可以继续用,但是要进行更新等构建活动就会报错。
   3.6证书更新必须和之前的证书匹配。

4.对应用程序进行签名:
    4.1三要素:数字证书,apk,将数字证书应用到apk文件的使用程序(可以使用jdk中的jarsigner)
    4.2
 
5.调试用的默认签名证书不能用于生产部署,因为有效期只有365天。
 
6.android要求用原始的签名对应用和程序的更新进行签名。
 
7.为了提高运行效率,android会视图将应用中未压缩的数据进行mmap()映射到内存,但是这个操作的前提是应用中的数据是字节对齐的,所以将应用发布到设备前,最好字节对齐。sdk提供了工具,可以在命令行执行:
    >zipalign -v  4 old.apk new.apk
   检查是否对账
     >zipalign -c -v 4 AfinalTest_align.apk
 
8.边界安全性:独立的用户ID和独立的进程,保证了边界。应用直接的资源共享,必须显示进行。
 
9.在描述文件中必须声明需要的权限,在应用安装时,用户可以决定是否允许这些权限,如果 没有被允许,任何非授权操作都将失败。
 
10.常用权限
 
 
 
11.添加权限请求的方法
    
    <manifest … > 

<application>

</application>
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.READ_CONTACTS"/>
<uses-permission android:name="android.permission.READ_CALENDAR" />
</manifest>

 
 
12.自定义权限
    <permission

     android:protectionLevel ="normal"
     android:label="Start My Activity"
     android:description="@string/startMyActivityDesc"
     android:name="dcm.permission.STARTMYACTIVITY" ></permission>
   
   使用自定义授权来控制活动的调用权限
      <activity android:name= "PrivActivity" android:permission ="dcm.permission.STARTMYACTIVITY">
 <intent-filter >
                <action android:name="android.intent.action.MAIN" />
        </intent-filter>
    </activity >
 
   
   请求自定义权限
     < uses-permission android:name ="dcm.permission.STARTMYACTIVITY" />
 
 
12.URI权限传递
 
    应用可以将ContentProvider的权限进行传递,而ContentProvider的权限是通过URI展现的。如果一个应用希望把权限传递给另一个应用可以如下操作,但前提是有传递权限所需要的适当权限。
 
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(contentUri);
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
startActivity(intent);
 
 
 
 
 
 
 
 
 
 
 
 
 

android 学习十四 探索安全性和权限的更多相关文章

  1. android学习十四(android的接收短信)

    收发短信是每一个手机主要的操作,android手机当然也能够接收短信了. android系统提供了一系列的API,使得我们能够在自己的应用程序里接收和发送短信. 事实上接收短信主要是利用我们前面学过的 ...

  2. 五、Android学习第四天补充——Android的常用控件(转)

    (转自:http://wenku.baidu.com/view/af39b3164431b90d6c85c72f.html) 五.Android学习第四天补充——Android的常用控件 熟悉常用的A ...

  3. 四、Android学习第四天——JAVA基础回顾(转)

    (转自:http://wenku.baidu.com/view/af39b3164431b90d6c85c72f.html) 四.Android学习第四天——JAVA基础回顾 这才学习Android的 ...

  4. 强化学习(十四) Actor-Critic

    在强化学习(十三) 策略梯度(Policy Gradient)中,我们讲到了基于策略(Policy Based)的强化学习方法的基本思路,并讨论了蒙特卡罗策略梯度reinforce算法.但是由于该算法 ...

  5. 【Android】完善Android学习(四:API 3.1)

    备注:之前Android入门学习的书籍使用的是杨丰盛的<Android应用开发揭秘>,这本书是基于Android 2.2API的,目前Android已经到4.4了,更新了很多的API,也增 ...

  6. Android学习十---Android Camera

    Android camera用来拍照和拍摄视频的先看一下最后实现的效果图             最后的效果图 一.准备 在你的应用程序上使用android拍照设备,需要考虑以下几个方面 1. 是否是 ...

  7. Scala学习十四——模式匹配和样例类

    一.本章要点 match表达式是更好的switch,不会有意外调入下一个分支 如果没有模式能够匹配,会抛出MatchError,可以用case _模式避免 模式可以包含一个随意定义的条件,称做守卫 你 ...

  8. Android学习笔记四十Preference使用

    Preference直译为偏好,博友建议翻译为首选项.一些配置数据,一些我们上次点击选择的内容,我们希望在下次应用调起的时候依旧有效,无须用户再一次进行配置或选择.Android提供preferenc ...

  9. Oracle学习(十四):管理用户安全性

    --用户(user) SQL> --创建一个名为 grace password是password 的用户,新用户没有不论什么权限 SQL> create user grace identi ...

随机推荐

  1. 【我所认知的BIOS】—> uEFI AHCI Driver(8) — Pci.Read()

    [我所认知的BIOS]-> uEFI AHCI Driver(8) - Pci.Read() LightSeed 6/19/2014 社会一直在变.不晓得是不是社会变的太苦开,而我没变所以我反而 ...

  2. BZOJ3196:二逼平衡树(线段树套Splay)

    Description 您需要写一种数据结构(可参考题目标题),来维护一个有序数列,其中需要提供以下操作: 1.查询k在区间内的排名 2.查询区间内排名为k的值 3.修改某一位值上的数值 4.查询k在 ...

  3. Linux(十一) 文件目录权限 chmod umask chown

    一 文件目录权限定义 首先我们先认识一下文件目录的权限定义,请看下面ls -l的结果我们发现一个文件或者目录的前面有10位的信息,第一位表示文件类型,大概有一下几种类型:d 表示目录 - 普通文件 b ...

  4. Redis配置文件(1)units/includes/GENERAL/SECURITY/LIMITS

    redis.conf文件 在Linux进行文件的查看! units单位: # Note on units: when memory size is needed, it is possible to ...

  5. halcon 分水领域法详解(转载)

    寻思自己写了的,但是这个大佬写的太好了,感谢Y忍冬草_ http://blog.csdn.net/y363703390 https://blog.csdn.net/y363703390/article ...

  6. 截屏快捷键(windows)自带截屏,不需要安装任何插件

    方案一:电脑自带截屏,不需要QQ Shift+win+s即可截图(推荐使用) 方案二:搜狗输入法下载自带:Ctrl+Shift+x

  7. PAT——1017. A除以B

    本题要求计算A/B,其中A是不超过1000位的正整数,B是1位正整数.你需要输出商数Q和余数R,使得A = B * Q + R成立. 输入格式: 输入在1行中依次给出A和B,中间以1空格分隔. 输出格 ...

  8. EF Core 2.0中Transaction事务会对DbContext底层创建和关闭数据库连接的行为有所影响

    数据库 我们先在SQL Server数据库中建立一个Book表: CREATE TABLE [dbo].[Book]( ,) NOT NULL, ) NULL, ) NULL, ) NULL, [Cr ...

  9. jQuery获取所有父级元素及同级元素及子元素的方法

    jQuery获取所有父级元素及同级元素及子元素的方法 1.获取父级元素 $("#id").parent() 获取其父级元素 $("#id").parents() ...

  10. 轻量ORM-SqlRepoEx (九)与Dapper共舞

    Dapper就另一个轻量ORM,Dapper及其扩展解决了数据访问端的大部门问题,提供了如数据事务管理.缓存等支持.SqlRepoEx的重点解决了Lambda转换成SQL语句,使SQL使用强类型编写, ...