Android R(11)targetSdkVersion 30的应用必须使用v2及以上签名

转自:https://blog.youkuaiyun.com/qq_35559358/article/details/107408471

最近Android 11已发布beta2版本,为了尽快适配和体验Android 11,我们做了点前期的小工作

https://developer.android.google.cn/android11

问题
当apk的targetSdkVersion为30时,在android 11的手机上安装时,会出现安装失败的问题。

通过执行安装命令安装应用,发现报错

adb install 

报错信息:

Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES: Scanning Failed.: No signature found in package of version 2 or newer for package com.xxx]

解决方法
方法一:
降低targetSdkVersion版本号,只要小于30,则不存在该问题

方法二:
使用v2及以上签名,签名应用

<think>我们正在解决Android安装应用时出现的权限问题或解析错误,具体错误信息是“权限r-xr-xr-x无法解析”。根据错误信息,这通常发生在安装APK文件时,系统无法正确解析文件的权限设置。在Android系统中,APK文件的权限通常由AndroidManifest.xml中声明,而不是由文件系统的权限决定(如Linux的rwx权限)。因此,这个错误可能不是指文件系统的权限,而是指APK内部的一些问题。可能的原因和解决方案:1.**APK文件损坏**:下载的APK文件可能不完整或损坏。尝试重新下载APK文件,或者从其他来源获取。2.**签名问题**:APK可能被修改过,导致签名失效。确保APK来自可信来源。3.**不支持的ABI**:如果APK包含特定ABI(如armeabi-v7a,arm64-v8a)的本地库,而设备不支持,可能导致解析错误。检查APK支持的ABI与设备是否匹配。4.**安装器问题**:有时设备上的包安装器可能有临时问题。尝试重启设备再安装。5.**Android版本不兼容**:APK可能使用了设备当前Android版本不支持的特性。检查APK所需的最低Android版本(minSdkVersion)是否高于设备系统版本。具体步骤:-重新下载APK并尝试安装。-检查设备设置中的“未知来源”应用安装权限是否已开启。-如果是从电脑传输到手机的,确保传输过程没有损坏文件(可以通过比较MD5校验和来验证)。-尝试使用ADB命令安装:`adbinstallfilename.apk`,这样可以看到更详细的错误信息。如果上述方法无效,请提供更多信息,例如:-设备型号和Android版本-APK的来源(例如GooglePlay,第三方市场等)-错误发生的具体操作步骤根据引用[1]中提到的项目结构,我们也可以检查APK的AndroidManifest.xml是否包含必要的权限声明,但通常安装时的解析错误与权限声明无关(权限声明是在安装后运行时申请的)。安装解析错误更多是APK本身格式问题。另外,引用[2]和[3]是关于AR和跨平台开发的,与本问题关联不大。如果问题仍然存在,请尝试使用其他设备安装同一个APK,以确定是APK问题还是设备问题。相关问题:1.如何检查APK文件的完整性?2.如何查看APK支持的ABI?3.如何获取APK的minSdkVersion信息?4.ADB安装APK时出现其他错误如何解决?5.Android安装应用的其他常见错误及解决方案?</think>### Android应用安装权限问题解决方案 您遇到的"权限 r-xr-xr-x 无法解析"错误通常发生在APK安装过程中,主要原因是系统无法正确解析应用的权限声明或APK文件损坏。以下是系统性的解决方案: #### 1. **检查APK完整性** - **重新下载APK**:网络传输中断可能导致文件损坏,建议重新下载 - **验证签名**:使用命令检查签名有效性: ```bash apksigner verify --verbose my_app.apk ``` - **MD5校验**:比较下载源和本地文件的MD5值是否一致 #### 2. **修复权限配置** - **检查AndroidManifest.xml**: ```xml <!-- 确保权限声明正确 --> <uses-permission android:name="android.permission.INTERNET"/> ``` - **避免无效权限**:移除清单文件中不存在的权限声明 - **更新targetSdkVersion**:确保与设备Android版本兼容 #### 3. **设备端解决方案** - **启用未知来源安装**: 设置 → 安全 → 启用"未知来源应用"安装权限 - **清除包安装器缓存**: 设置 → 应用 → 显示系统应用 → 找到"软件包安装程序" → 清除缓存和数据 - **尝试ADB安装**: ```bash adb install -r -t my_app.apk ``` 使用`-t`参数允许测试包,`-r`覆盖安装 #### 4. **高级故障排除** - **检查文件系统权限**: ```bash ls -l my_app.apk # 应显示-rw-rw-r-- ``` 若权限异常,使用`chmod 644 my_app.apk`修复 - **解压验证**: ```bash unzip -t my_app.apk # 测试ZIP完整性 ``` - **日志分析**: ```bash adb logcat | grep 'PackageParser' ``` #### 5. **开发端预防措施 - **更新构建工具**:确保使用最新版Android Gradle插件 - **ABI兼容性**:在build.gradle添加: ```gradle splits { abi { enable true universalApk true } } ``` - **签名验证**:使用V2/V3签名方案 > **关键提示**:此错误常见于以下场景: > 1. APK传输过程中损坏(尤其蓝牙传输) > 2. 设备存储空间不足 > 3. 混合安装debug/release版本 > 4. Android 8.0+设备未启用"安装未知应用"权限[^1]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值