java - 安装apk时如何修复 Lollipop 中的解析错误

标签 java android parsing android-studio

我有一个应用程序可以从我们的服务器下载其他 apk 并一个一个地安装。 这在低于 lollipop 5.0 的版本中工作正常,但在 lollipop 设备的情况下它给出解析错误。 我还检查了从设备中的未知来源安装 apk 的选项。 安装 apk 时 logcat 中的详细警告是:

Zip:中央目录末尾有 2 个无关字节

W/zipro(5776):打开存档/data/local/tmp/XYZ.apk 时出错:文件无效

D/asset(5776): 无法打开 Zip 存档 '/data/local/tmp/XYZ.apk'

W/DefContainer(5776):无法在/data/local/tmp/XYZ.apk 解析包:android.content.pm.PackageParser$PackageParserException: 无法解析/data/local/tmp/XYZ.apk

我尝试的事情和结果如下,

1.创建新的 apk 并通过 adb 将其推送到设备中并尝试安装 - 安装成功。

2.将相同的 apk 上传到服务器后,从浏览器下载它[而不是通过应用程序]-失败“[INSTALL_FAILED_INVALID_APK]

3.我已经实现了 MD5 校验和来验证 apk 下载,校验和也可以。

4.如果我再次签署下载的 apk 或 zip 对齐 apk [有效地重新打包 apk] 并尝试安装 -安装成功。

请帮助我,如何解决这个问题。

list 中的权限:

<uses-sdk
        android:minSdkVersion="9"
        android:targetSdkVersion="22" />

    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.INSTALL_PACKAGES" />
    <uses-permission android:name="android.permission.DELETE_PACKAGES" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.BLUETOOTH" />
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
    <uses-permission android:name="android.permission.NFC" />
    <uses-permission android:name="android.permission.REBOOT" />
    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
    <uses-permission android:name="android.permission.WRITE_APN_SETTINGS" />
    <uses-permission android:name="android.permission.WRITE_SETTINGS" />
    <uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" />
    <uses-permission android:name="android.permission.UPDATE_DEVICE_STATS" />
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_UPDATES" />
    <uses-permission android:name="android.permission.SET_TIME" />
    <uses-permission android:name="android.permission.SET_TIME_ZONE" />

最佳答案

问题终于解决了!!实际上,问题出在我从中下载应用程序的服务器上。服务器端需要更新一些 .jars,这解决了这个问题。因此,我学到的教训是,在深入研究之前,始终要双重确保支持android框架级别。

关于java - 安装apk时如何修复 Lollipop 中的解析错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34876597/

相关文章:

android - Phonegap 3 (apache cordova) getpicture 错误(无法读取属性 'PictureSourceType' 和 DATA_URL

java - 包 javax.servlet 不存在

java - 带有本地化的 Android 文本输入验证

android - 改造:预期为 BEGIN_OBJECT 但为 BEGIN_ARRAY

C - 将输入文件解析为行和字符

parsing - 如何在 Go 的文本/扫描仪中倒带?

java - 将包含中文或日文或英文的字符串拆分为单词

java - spring mvc 日期格式,格式为 :input

java - 在创建新类(class)时,我应该如何将教师添加到新类(class)中?

java - onDestroy() 之后会发生什么