Android 我可以指定apksigner使用的摘要算法吗?
由于最近的SHA1冲突新闻,我想确保我的apk签名中不再使用SHA1。但是,在中找不到参数 有没有办法指定apksigner使用的摘要算法(直接或间接) (在SDK 24之前,Android使用java的Android 我可以指定apksigner使用的摘要算法吗?,android,apk,apksigner,Android,Apk,Apksigner,由于最近的SHA1冲突新闻,我想确保我的apk签名中不再使用SHA1。但是,在中找不到参数 有没有办法指定apksigner使用的摘要算法(直接或间接) (在SDK 24之前,Android使用java的jarsigner对apk进行签名,apk的选项有-sigalg SHA1withRSA-digestalg SHA1) 更新:正如Alex提到的,我在中找到了如何确定方案v1的签名算法 简而言之,apksigner根据minimumSDK和证书的密钥类型确定它 SHA256withRSA适
jarsigner
对apk进行签名,apk的选项有-sigalg SHA1withRSA-digestalg SHA1
)
更新:正如Alex提到的,我在中找到了如何确定方案v1的签名算法 简而言之,
apksigner
根据minimumSDK
和证书的密钥类型确定它
适用于最低SDK 18(Android 4.3)及以上版本SHA256withRSA
适用于最低SDK 21(Android 5.0)及以上版本SHA256withDSA
适用于最低SDK 18及以上SHA256withEC
用于较低的最低SDK级别SHA1with*
这是我为备忘录写的常见问题解答:。不是直接的
apksigner
尝试仅使用安全摘要和签名算法,但这是在签名密钥(大小、算法)和被签名的APK支持的Android平台版本所施加的约束范围内实现的。特别是,对于JAR签名,apksigner
默认使用SHA-256或更高版本,但仅适用于仅支持API级别18或更高版本的APK(如minSdkVersion
在其AndroidManifest.xml
中声明的)。在早期平台上运行的APK必须使用SHA-1,因为这些早期平台不支持使用SHA-256或更高版本验证APK。对于APK签名方案v2签名,仅使用SHA-256或更高版本,因为此签名方案甚至不支持SHA-1
如果您希望apksigner
使用SHA-256签署您的APK,您可以:
- 将APK的
设置为18或更高,但这将使API级别为17或更低的Android平台在安装时拒绝APKminSdkVersion
- 将
传递到--min sdk version=18
,但这将使API级别为17及更低的Android平台在安装时拒绝APKapksigner
- 仅使用APK签名方案v2对APK进行签名,方法是将
传递给--v1 signing enabled=false
,但这将使API级别为23及更低的Android平台在安装时拒绝APKapksigner
.SF
和MANIFEST.MF
文件中使用的摘要算法