多个dex文件定义 – 删除额外的jar文件仍然无效。 我该怎么办?

我正在尝试将Google Play服务应用到我的应用程序中。

我知道有一个名为BaseGameUtils的示例项目,我需要将其导入我的工作区并将其标记为库。将google-play-services_lib导入我的工作区后,我将其作为BaseGameUtils库中的库引用。 最后,我在我实际想要发布到Google Play的项目中引用了BaseGameUtils和google-play-services_lib。

在所有这些连接的某个地方,我的类路径中有一个同名的jar文件。 要解决此问题,我需要删除google-play-services_lib的一个引用,因为当我尝试导出项目时,我收到此错误:

无法执行dex:多个dex文件定义Lcom / google / ads / AdRequest $ ErrorCode;

好的,所以如果我取消选择“Android私人图书馆”,项目将会导出,但没有任何Google Play服务可用。 当我尝试启动该类时,在启动应用程序时,我收到错误:

super.onCreate(savedInstanceState); 

我明白我必须打电话

  setRequestedClients(BaseGameActivity.CLIENT_GAMES | BaseGameActivity.CLIENT_APPSTATE); 

之前

  // call BaseGameActivity's onCreate() super.onCreate(savedInstanceState); 

但它不起作用。 这意味着GoogleApiClient将无法启动,因为未导出类。

  @Override public void onCreate(Bundle savedInstanceState) { // set requested clients (games and cloud save) setRequestedClients(BaseGameActivity.CLIENT_GAMES | BaseGameActivity.CLIENT_APPSTATE); // call BaseGameActivity's onCreate() super.onCreate(savedInstanceState); // game-specific logic: setContentView(R.layout.pillow); findViewById(R.id.sign_in_button).setOnClickListener(this); findViewById(R.id.sign_out_button).setOnClickListener(this); } 

因此,如果我取消选择“Android私有库”,当我添加.jars时,项目将很好地导出我通常需要在外部使用并将它们添加到构建路径..但​​是Google Play服务。

我可以从构建路径中删除外部jar并将“Android Private Libraries”添加到构建路径,但后来我有多个google-play-services_lib。

我很困惑它要么两次,要么根本没有。

有谁知道发生了什么事?

希望这有效..

这看起来像是一个与adobs相关的问题。 Admobs现已集成到Google Play Services jar中,但看起来您仍然在项目中包含单独的admobs jar。 这两个jar子都包含相同的类名,因此这会导致您的问题。

我建议您从构建路径中删除GoogleAdMobAdsSdk.jar。

有关此问题的更多信息,请查看

多个dex文件定义Lcom / google / ads / AdRequest $ ErrorCode和多个dex文件定义Lcom / google / ads / AdRequest $ ErrorCode