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

时间:2014-07-15 20:53:26

标签: java android google-play-services dex

我正在尝试将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。

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

有谁知道发生了什么事?

hope this works..

1 个答案:

答案 0 :(得分:0)

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

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

有关此问题的详细信息,请参阅

Multiple dex files define Lcom/google/ads/AdRequest$ErrorCode and Multiple dex files define Lcom/google/ads/AdRequest$ErrorCode