0

这可能是stackoverflow.com/questions/11135680/parse-error-while-installing-downloaded-apk-file的重复问题,但我没有找到任何答案来解决这个问题。

让我说一下我面临的问题。

我在平板电脑中安装了一个应用程序。此应用程序将在启动时检查更新。如果有更新,它将下载 apk 并自动安装。我已将 .NET 服务用作 Web 服务。我的 .NET 服务会将 APK 转换为存储在 mySQL DB 中的 byte[]array 格式,并将该 byte[]Array 发送到我的 Android 应用程序。

一切正常,但在安装时我得到了

=======================================

“解析器错误”解析包时出现问题

=======================================

请不要说检查 apk 的签名,一切正常

安卓代码:

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 次。

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

4

1 回答 1

0

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

我为从服务器自动更新 apk 所遵循的步骤。

  1. apk 的先前版本和最新/更新的 apk 的签名应该相同。

  2. 确保apk的下载路径和安装路径一致。

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

于 2013-09-16T11:33:46.317 回答