签名与自定义permission

本文介绍了Android APK签名的重要性,它用于区分同一包名但签名不同的应用,防止恶意替换。同时,文章还讲解了如何在AndroidManifest.xml中自定义权限,包括权限的属性和保护级别,以及如何确保相同签名的应用能共享特定服务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、概念说明

1)apk签名

开发Android的人这么多,完全有可能大家都把类名,包名起成了一个同样的名字,这时候如何区分?签名这时候就是起区分作用的。由于开发商可能通过使用相同的Package Name来混淆替换已经安装的程序,签名可以保证相同名字,但是签名不同的包不被替换。apk如果使用一个key签名,发布时另一个key签名的文件将无法安装或覆盖老的版本,这样可以防止你已安装的应用被恶意的第三方覆盖或替换掉。

2)自定义permission

开发程序时,可以在AndroidManifest.xml中自定义一个permission权限具有名称、标签、图标、权限组、描述和保护级别,以下表格定义了这些属性:

特性

是否必需

说明

android:name

权限的名称,通常遵循android命名规范(*.permission.*

android:protectionLevel

定义与权限相关的"风险级别"。必须是以下值之一:

normal,dangerous,signature,signatureOrSystem,

取决于保护级别,在确定是否授予权限时,系统可能采取不同的操作。

normal 表示权限是低风险的,不会对系统、用户或其他应用程序造成危害;

dangerous 表示权限是高风险的,系统将可能要求用户输入相关信息,才会授予此权限;

signature 表示只有当应用程序所用数字签名与声明引权限的应用程序所用数字签名相同时,

才能将权限授给它;signatureOrSystem 表示将权限授给具有相同数字签名的应用程序或android 包类。

这一保护级别适和于非常特殊的情况,比如多个供应商需要通过系统映像共享功能时

android:permissionGroup

可以将权限放在一个组中,但对于自定期义权限,应该避免设置此属性。如果确实希望设置此属性,

可能使用以下属性代替:android.permisson-group.SYSTEM_TOOLS

android:label

可使用它对权限进行简短描述

android:description

使用它提供对权限用途和所保护对象的更有用的描述

android:icon

权限可以与资源目录以外的图标相关联 比如@drawable/myicon)

 

1、定义permission

 

 

2、在其他应用中声明该permission

<uses-permission android:name="com.test.permission.USE_SERVICE" />

 

3、对这些应用使用相同的keystore进行签名

 

 

这样就可以保证具有相同签名的应用可以使用该service,而防止其他不同签名的应用去使用该service

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值