这可能是stackoverflow.com/questions/11135680/parse-error-while-installing-downloaded-apk-file的重复问题,但我找不到任何解决方法来解决这个问题。
让我说出我面临的问题。
我在平板电脑上安装了一个应用程序。此应用程序将在启动时检查更新。如果有更新,它将下载apk并自动安装。我使用.NET服务作为webservice。我的.NET服务会将APK转换为byte []数组格式,该格式存储在mySQL数据库中,并将该byte []数组发送到我的Android应用程序。
一切正常,但在安装时我正在
======================================
“PARSER ERROR”解析包的问题
======================================
请不要说检查apk的签名,一切都好吗
Android代码:
SoapPrimitive pResponse = (SoapPrimitive) envelope.getResponse();
byte[] bResponse = Base64.decodeBase64((pResponse.toString().getBytes("UTF-8")));
苦苦挣扎我发现android中的Byte []响应与.net Byte []不匹配,因为java已经签名了字节(sbyte -128到127) ,.net有无符号字节(字节0到255) 例如:在.NET [80,40,2,2,8,0,0,0,12,240,200 ...........] 在Android [80,40,2,2,8,0,0,0,12,-16,-56 ...........]
我可以使用int unsigned = b& 0xFF的;将其转换为无符号字节[]但我的问题是我的循环将运行662600次。
我如何克服这个问题,你们的任何建议对我都有帮助。
答案 0 :(得分:0)
我在下载apk的安装路径上犯了错误。人们不关心有符号和无符号的字节[]
我从服务器自动更新apk的步骤。
apk的上一版本的签名和最新/更新的apk应该是相同的。
确保apk的下载路径和安装路径相同。
注意:您可以使用byte []或Stream来获取服务的响应