Android签名APK显示不完整

时间:2011-03-28 11:44:52

标签: android android-ndk

我使用Eclipse的导出向导签署了该应用程序。当我发布这个时,用户开始抱怨应用程序的行为不正确。 (基本上,APK没有必要的图像和音频,因此显示不正确的行为)。

我尝试过的有关应用程序和签名的一些信息。

  1. 我有精简版和付费版。两者都使用相同的密钥对签名。 Lite版本工作正常,完整版本给出了错误。
  2. 我曾尝试再次导出已签名的软件包并尝试直接在设备中安装(而不是上传到市场)。相同的行为(即Lite应用程序正常工作,完整版本不正确)
  3. 完整版和精简版都使用共享库(代码库是相同的。差异如下。
  4. 完整版的资源是精简版的5倍。精简版apk是~2.6MB,完整版是~10.4MB。 在完整版中,我有170张图片(大多数是5-10 KB的png)和~55mp3文件。在Lite版本中,我有45张图片和15个mp3
  5. 完整版已实施LVL(许可证验证),而Lite版本则未实现。一旦LVL通过,代码就会调用Library Class
  6. 如果我使用Eclipse构建并将完整版本部署到手机(或模拟器),它可以正常工作。 (我猜这个构建和部署将使用调试密钥进行签名)
  7. 我在代码中有错误处理,以显示代码,以便在缺少资源时显示dummypic(问号)。我的所有图像都被该问号所取代。只是添加..这个dummypic在库中,所有其他资源(图像)都在完整版中。
  8. 我已经通过将已签名的apk文件重命名为.zip来检查资源(感谢NickT建议采用这种方法)。所有资源文件(音频和图像)都存在于zip文件中。
  9. 感谢任何帮助。该应用程序已经上市,因此希望尽量减少不利影响。

    删除了LVL。仍然是同样的错误

    尝试评论LVL代码并直接调用intent。还是一样的错误。 通过评论LVL,Lite和完整版的代码库是相同的。只有资源数量不同。完整版具有Lite Version的所有资源+约5倍的资源。

    更新 这是我暂时修复它的方式。 我删除了库项目并将所有类和资源移动到Implementation Project(完整版)。现在它正在运作。

    如上所述,这只是一个临时解决方案。我仍然需要知道如何用库来解决这个问题。否则我将不得不创建大量的代码重复。

7 个答案:

答案 0 :(得分:1)

我的赌注是它与permissions有关。 首先安装的应用程序将具有该文件夹的读写权限,另一个不会。

尝试使用ContentProvider使两个应用都可以访问您的图片!

答案 1 :(得分:0)

符号不应影响您的代码。我认为问题必须出现在付费版的源代码中。

你在模拟器中测试吗?从日食?您也可以通过“ adb install application-signed.apk ”在模拟器中测试已签名的apk。

答案 2 :(得分:0)

我认为您应该卸载然后重新安装应用程序,有时会发生这种情况,当您的手机已经拥有应用程序并且您使用不同的资源和文件再次安装它而无需卸载(但重写)时,它会产生奇怪的行为, 尝试卸载,然后重新安装应该适合你。

答案 3 :(得分:0)

我不确定,但我认为在同一个设备中不能存在两个相同包名的应用程序。尝试在两个不同的设备上安装应用程序。

答案 4 :(得分:0)

两个建议:

1)你是否启用了proguard?如果是,请尝试禁用它并进行测试。如果它有效,你可能需要更新你的proguard.cfg(可能还有一些-keep公共类)

2)手动删除你的R.java并重新编译你的完整版本!

答案 5 :(得分:0)

我在使用其他Android Library项目的Android项目中遇到此问题。看起来AAPT(或eclipse ADT部分)在创建R文件ID时有时会失败(因此资源存在,但id不正确)。

快速解决了我的问题:关闭“主”项目并重新打开它,设置Build Automatically选项或在此项目上进行清理和重建。下一个导出的APK不应该没有资源问题。

答案 6 :(得分:0)

也许您将调试标志放入Manifest文件中?