2016-09-22 8 views
8

Androidの公式サイトで提案されているように、すべてのソースコードをASに移行しています。しかし、経験はあまり良くありません。記載されているように非常に鈍いですhere。しかし、これは今私の究極の問題ではありません。EclipseからAndroid Studioへのインポート

私は、このようなこの種のcompileSdkVersion になるように99のエラー更新など、多くの問題を解決している:

Error:(13) Error retrieving parent for item: No resource found that matches the given name 'android:TextAppearance.Material.Inverse'.

を整流することができます。しかし、問題は私が行くように撮影を続けています。今私はこの64k Dexの問題があります。

Eclipseを使用しているうちに私にこのような問題が発生したことはありません。Dex私がASに持つソースコードは、それがEclipseであったときとまったく同じです。唯一の違いは、ASで作業するために必要な階調変更です。なぜこのような突然の理由が考えられますかDexmultiDexEnabledtrueに設定した場合、どのような影響がありますか?

+2

残念ながら(これは本当に役に立たないと分かっていますが)移行プロセスは、部分的にはgradleのおかげで、プロジェクトの構造が変わりました。 Gradleは新しい「問題」を導入する可能性が高い。私はここで見てみることをお勧めしますhttps://developer.android.com/studio/build/multidex.html – zgc7009

+2

あなたの依存関係を見てみましょう。私は何年も前にプロジェクトで64k dexの問題にぶつかっていましたが、非常に大きく、すべてを必要としない依存関係も含めていました。私は、最初にそれを使用し始めたときに、gradleとAS studioによって少しオフになったが、後のバージョンではホットデプロイメントが行われたので、UIコードを変更し、デバッグボタンをクリックして、秒。 Eclipseで決して起こり得ないもの。 –

+1

この記事では、以前の提案から抜け出していると思う、参考文献(https://mutualmobile.com/posts/dex-64k-limit-not-problem-anymore-almost)を参考にしてください。プロジェクトを監査する必要がある場合は、そのプロセスを支援する[dexinfo gradle plugin](https://mutualmobile.com/posts/introducing-our-dexinfo-gradle-plugin)を作成しました。 – light

答えて

1

When your application and the libraries it references reach a certain size, you encounter build errors that indicate your app has reached a limit of the Android app build architecture.

あなたのようないくつかのリンクを参照することができます詳細については、これをデバッグするのは難しいです。 Androidスタジオ(2.2)の最新バージョンは、デックス限界をより透明にするAPKアナライザツールを提供します。

Googleはあなたが唯一のすべて(full list)を含むこれらのディレクティブ compile 'com.google.android.gms:play-services-fitness:9.6.1' ではなく、一緒に使用するものを含めていることを確認するためにダブルチェックすべきサービスAPIを使用して再生します。

あなたが既に使用しているすべてのライブラリが必要な場合は、開発環境でmultidexを有効にするか(L以上のデバイスまたはエミュレータを使用して開発する必要があります)、リリースでminificationEnabledあなたのリリースのAPKでmultidexを必要としないように構築します。これにより、リリースビルドの起動時間が遅くならないように、高速デバッグビルドとリリースビルド以外のマルチビルドが組み合わされます。

ビット詳細情報: デバッグビルドでネイティブマルチデックスを使用すると(minSdkをL以上に設定する必要があります)、モジュールとライブラリはデックスファイルとして展開され、デプロイ間の処理が少なくなるため、インクリメンタルビルドが高速になります。

リリースビルドでminificationEnabledを使用すると、使用しない依存関係のメソッドがトリミングされるため、2番目のdexファイルが不要になることがよくあります。これにより、通常、multidexの悪影響を無効にする単一のdexが発生します(<バージョンLデバイスのアプリ初期化時にN + 1 dexファイルをコピーします)。

+0

です。 (より良い答えが22時間以内に収穫されない限り、この回答は恩恵に値する)。ありがとう。 ;) – user1506104

2

まず、インポート後(ビルド - クリーン、ビルド - ビルドプロジェクト)にプロジェクトを再構築してください。

android { 

    defaultConfig { 
     ... 

     // Enabling multidex support. 
     multiDexEnabled true 
    } 
    ... 
    } 

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

をし、またMultiDexをサポートするためにJavaであなたにApplication.classを更新:制限法の参照して、この問題を修正。完全な情報を参照してくださいhere

UPDATE:

方法参照制限を環境から(AS私達の場合のように)を算出することができるので、このオプションは、Eclipseを無視します。このオプションがGradleビルドに含まれていない理由 - まだ質問...

Androidアプリケーション(APK)ファイルには実行可能なバイトコードファイルがDalvik Executable(DEX)ファイル形式で格納されています。アプリ。 Dalvik実行ファイル仕様では、1つのDEXファイル内で参照できるメソッドの総数が、Androidフレームワークメソッド、ライブラリメソッド、および独自のコードのメソッドを含めて65,536に制限されています。コンピュータサイエンスの文脈において、Kilo、Kという用語は1024(または2^10)を意味します。 65,536が64 X 1024に等しいので、この制限は '64K参照制限'と呼ばれます。あなたのプロジェクトにライブラリの多くを使用する場合

Source AS Doc

+0

あなたはなぜこの突然のDexの問題をASで知っていますか? – user1506104

+0

@ user1506104質問が更新されました。ありがとう。 – GensaGames

+0

あなたにupvoteを与えた。今のところ最良の答えは – user1506104

1

Multidexの問題が発生します。あなたのアプリケーションのコードに64kを超えるメソッドがある場合、それが起こります。私はせずに、あなたのDEXエラーがライブラリーの成長の結果である疑いがあるが、

How to enable multidexing with the new Android Multidex support library

http://www.rapidvaluesolutions.com/tech_blog/multidex-issue-or-building-application-over-65k-methods/

https://mutualmobile.com/posts/dex-64k-limit-not-problem-anymore-almost

関連する問題