2016-07-01 8 views
4

私はAndroidプログラミングには比較的新しいので、Google Mapsプロジェクトを作成しようとしています。 Android Studioでテンプレートオプションを使用し、APIのキーを追加しました。Android Studio:新しいGoogle Maps APIプロジェクトでマルチデックスエラーが発生するのはなぜですか?

私は自分のコードを追加していないので、コードを実行して見た目を見たいと思ったのでテンプレートコードをそのまま残しましたが、実行しようとすると多重デックスエラーが発生しますこれはエミュレータ上でビルドが失敗する原因となります。私はすべてのコードを追加していないので、私はこのエラーが発生して私には奇妙です、そしてGoogleスタジオからGoogle Mapsテンプレートが持っているものを使っています。

誰もがこのエラーが全く新しいプロジェクトに表示される理由を知っていますか?私が見るエラーは下に貼り付けられています。

エラー:.dexファイル内のメソッド参照の数は64Kを超えることはできません。 https://developer.android.com/tools/building/multidex.html

エラー: ':app:transformClassesWithDexForDebug'タスクの実行に失敗しました。

com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'C:\Program Files\Java\jdk1.8.0_91\bin\java.exe'' finished with non-zero exit value 2

+3

コンパイル 'com.google.android.gms:play-services:9.2.0'を使用して、すべてのプレイサービスAPIをコンパイルしています...これで、64Kのdex制限を避けるためにAPIを選択的にコンパイルできます。 Googleマップの場合は、com.google.android.gms:play-services-maps:9.2.0 ... – LokiDroid

+1

^上記のコメントは魅力的に機能します。ありがとう。 – shong

+0

面白いGoogleスクラップでもDEXの制限がありますが、なぜこの問題を解決できないのかわかりません。 – JPM

答えて

4

の下に引用した:

Your probably compiling all of the play-services API's using compile 'com.google.android.gms:play-services:9.2.0'... Now we can selectively compile API's to avoid dex limit of 64K. For Google Maps use com.google.android.gms:play-services-maps:9.2.0... – Loki Jul 1 at 19:01

ロキからの回答は、働いてみませんか非常に簡単でした。

0

問題は現在、多数の方法があります。デックスのための方法は65536しかない。 build.gradleファイルを編集してmultiDexを有効にすることができます。

android { 
      //stuff 

defaultConfig { 
    ... 

     // Enable multiDex support. 
     multiDexEnabled true 
    } 

} 

dependencies { 
    compile 'com.android.support:multidex:1.0.0' 
} 

はまた、おっと、あなたのマニフェストに記載された上記のポスターのように、あなたはまた、あなたがmultidexサポートライブラリからmultidexクラスを使用していることを追加する必要があります。あなたのGradleは、コンフィギュレーションを構築

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.example.android.multidex.dexapp"> 
<application 
    ... 
    android:name="android.support.multidex.MultiDexApplication"> 
    ... 
</application> 

0

変更はマニフェストでmultidex

android { 
    compileSdkVersion 23 
    buildToolsVersion "24.0.0 rc2" 

    defaultConfig { 
     applicationId "com.try.app" 
     minSdkVersion 16 
     targetSdkVersion 23 
     versionCode 1 
     versionName "1.0" 
     multiDexEnabled true 
    } 

は、アプリケーション要素にmultidexサポートライブラリからMultiDexApplicationクラスを追加できるようにします。

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.example.android.multidex.myapplication"> 
    <application 
     ... 
     android:name="android.support.multidex.MultiDexApplication"> 
     ... 
    </application> 
</manifest> 

注:詳細はhttps://developer.android.com/studio/build/multidex.htmlを参照してください。

+0

Multidexは吸いますが、実行時エラーが発生しますので、これを避けてください! – JPM

+0

自分の「Application」クラスがすでにある場合はどうなりますか? – Gattsu

0

defaultConfigのプロパティmultiDexEnabledをtrueに設定します。このエラーは、メソッド参照が65kの制限を増加させる場合に発生します。 Google PlayサービスAPIを確認します。ここで

android{ 
     ... 
     defaultConfig { 
      ... 
      multiDexEnabled true 
     } 
     ... 
    } 

はロキにより示唆されるように、私は依存関係を削除し、それが動作Google Maps Android API

0

を始めるのに良いソースです。

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    testCompile 'junit:junit:4.12' 
    compile 'com.android.support:appcompat-v7:24.1.1' 
    compile 'com.google.android.gms:play-services-maps:9.4.0' 
} 
1

setting up google play services

ちょうどあなたがあなたのアプリケーションで必要依存関係を追加し、このリンクを通過します。 これにより、64kを超えるエラーが防止されます。

ハッピーコーディング。

関連する問題