2017-01-13 3 views
0

私はテスト用のアプリケーションを生成していますが、最終的にjava.lang.OutOfMemoryError:GCオーバーヘッド限界を超えたエラーを表示します。
この問題を解決するために、私はこのlinkの解決策に従った。
そして私は、モジュールのbuild.gradleファイル
引数のメソッドdexOptions()を見つけることができませんでした

dexOptions{ 
    incremental true 
    javaMaxHeapSize "2g" 
} 

にこのコード行を追加した。しかし、今では

Gradle sync failed: Could not find method dexOptions() for arguments [[email protected]] on project ':app' of type org.gradle.api.Project. 
     Consult IDE log for more details (Help | Show Log) 


はあなたが私はこの問題を解決するために助けることができると言う別のエラーがスローされます?
ありがとうございます。

答えて

1

あなたのminSdkVersionがが21以上に設定されている場合は、ここで示したように、あなたがする必要があるすべては、あなたのモジュールレベルのbuild.gradleファイルでtrueにmultiDexEnabledに設定されている:

android { 
     defaultConfig { 
      ... 
      minSdkVersion 21 
      targetSdkVersion 25 
      multiDexEnabled true 
     } 
     ... 
} 

しかし、あなたのminSdkVersionがあれば次のようにあなたがmultidexサポートライブラリを使用する必要があり、20以下に設定されています

はmultidexを有効にして、ここに示すように、依存関係としてmultidexライブラリを追加するモジュールレベルのbuild.gradleファイルを変更します。

android { 
    defaultConfig { 
     ... 
     minSdkVersion 15 
     targetSdkVersion 25 
     multiDexEnabled true 
    } 
    ... 
} 

dependencies { 
    compile 'com.android.support:multidex:1.0.1' 
} 
012あなたは、Applicationクラスを上書きアンドロイド設定するためにマニフェストファイルを編集していない場合は ::次のようにタグに名前を:

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

場合は、Applicationクラスをオーバーライドし、次のいずれかを実行するかどうかに応じて、

(可能であれば)MultiDexApplicationを次のように拡張するように変更します。 public class MyApplication extends MultiDexApplication {...} また、Applicationクラスをオーバーライドしても基本クラスを変更することはできません。代わりにattachBaseContext()メソッドをオーバーライドし、MultiDex.install(this)を呼び出してmultidexを有効にすることができます。

public class MyApplication extends SomeOtherApplication { 
    @Override 
    protected void attachBaseContext(Context base) { 
    super.attachBaseContext(context); 
    Multidex.install(this); 
    } 
} 
+0

マニフェストにアンドロイド:name = "android.support.multidex.MultiDexApplication"という行を追加したとき、次のアクティビティ行にエラーがスローされます。私はアプリケーションを起動するたびに実行したいAppControllerファイルを持っています。アンドロイド:名前を置き換えると大丈夫ですか? –

+0

"MyApplicationを" のようなクラスを作成し、アプリケーション・クラスを拡張し、 "@Override 保護ボイドattachBaseContext(コンテキストベース){ super.attachBaseContext(コンテキスト); Multidex.install(この); }" を追加し、<アプリケーション アンドロイド:name = "MyApplication"> ...

+0

コンテキストとMultidexでエラーが発生します。 –

関連する問題