为什么不能在已签名的发行版本中构buildGoogle的市场计费示例?

我试图find类似的问题,但提供的解决scheme似乎不符合我的具体情况:

我最初遵循了configuration和构build应用内结算示例应用程序的说明,用Google开发人员帐户中的公钥replace安全密钥,并将包名称从com.example更改为com.billtheape

然后,我build立了一个非发布版本,并在我的Android手机上执行了“完整性检查”。 一切正常(除了访问Android电子市场服务器,当然,因为从devise上来说,它只能使用签名发行版)。

然后我试图build立一个签名的发行版本,但收到错误:

 [2012-01-03 20:52:45 - Dex Loader] Unable to execute dex: Multiple dex files define Lcom/android/vending/billing/IMarketBillingService; [2012-01-03 20:52:45 - Dungeons] Conversion to Dalvik format failed: Unable to execute dex: Multiple dex files define Lcom/android/vending/billing/IMarketBillingService; 

现在的问题是即使是“debugging版”的构build也会产生相同的错误,无论我尝试清理项目的次数多less。

在我看来,接受的答案(我也检查过,但是找不到任何可疑的东西),这在我看来并不像构buildpath问题。 所以我尝试了其他的东西:

  1. 退出Eclipse
  2. %ANDROID_HOME%\extras\google\market_billing\gen\com下find三个子目录:(1)android(2)example(3)billtheape
  3. 删除了子目录的example
  4. 启动Eclipse并清理项目。

debugging版本现在生成正确,但签名版本仍然生成相同的错误。 事实certificate,删除多余的子目录不是什么魔术,而是重新启动Eclipse,然后清理项目。

好的,所以至less我得到了“debugging版本”的工作,但签署的版本导出保持失败,同样的错误。

任何想法这个错误意味着什么,为什么会发生,以及如何解决它?

Solutions Collecting From Web of "为什么不能在已签名的发行版本中构buildGoogle的市场计费示例?"

简短的回答:因为Eclipse + ADT很糟糕。 这就是为什么。

较长的回答:我只是将一个确切的项目导入到一个稍微不同的configuration的不同机器:Eclipse 3.6.2(而不是上述有问题的系统中的3.6.1)和SDK R13(而不是有问题的系统中的R9)。

然后我尝试导出它,使用上述相同的确切步骤。 奇迹般有效!

这是什么? 巫毒?

IDE在哪些日子比我试图发展的软件更可预测地发生了什么?

下一步: 在有问题的系统上升级Eclipse(至3.6.2),看看是否也解决了该系统中的问题。

更新:我刚刚完成更新Eclipse 3.6.1到3.6.2的违规系统。 事实certificate,安装Eclipse 保留现有的ADT是不可能的。 https://dl-ssl.google.com/android/eclipse/会强制您安装“最新最好的”,即使您不想要(例如configurationpipe理和跟踪原因)。 所以在新的Eclipse 3.6.2我也得到了ADT 16.0.0.v201112150204-238534 。 奇迹般有效!

Eclipse 3.6.1 + ADT 9.0.1.v201101191456-93220组合的奇怪行为的根本原因和解释永远不会被知道…这是一个组合,开发人员应该(并且)发布商业级应用程序在某个时间点的Android电子市场。 令人惊叹 。

我也有同样的问题,我解决了:

  1. 删除bin和gen文件夹
  2. 删除依赖库(如果有的话)并将其添加回来
  3. 最后清理项目并重新构build。

完成!