从我自己的服务器下载安装APK时,分析器错误

时间:2013-09-05 07:31:33

标签: java android web-services bytearray auto-update

这可能是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次。

我如何克服这个问题,你们的任何建议对我都有帮助。

1 个答案:

答案 0 :(得分:0)

我在下载apk的安装路径上犯了错误。人们不关心有符号和无符号的字节[]

我从服务器自动更新apk的步骤。

  1. apk的上一版本的签名和最新/更新的apk应该是相同的。

  2. 确保apk的下载路径和安装路径相同。

  3. 注意:您可以使用byte []或Stream来获取服务的响应