2016-07-20 18 views
3

アンドロイドサポートデザインライブラリのUI要素を使用し始めた後、アプリの初期読み込み時間が非常に遅くなり(約8秒!)、どうして本当にわからないのですか?Androidアプリの起動に時間がかかりません

私は(アンドロイドスタジオはCPUモニタの実行を開始することは時間がかかります)スタートアップのほとんどの間、メソッドの追跡を実行し、それが上の4秒を過ごすが見つかりました:なぜこれがそう長く取っているかわからないイム、 dalvik.system.DexFile.openDexFile

アイデア? (私はアプリケーションに多くのコードがあるので、私はコードを追加しなかったし、どこから問題が来ているのか分からない...)

+0

正常に動作するデバッグバージョンではなく、リリースアプリケーションをビルドするときにスピードが増しました。多分あなたはそれをテストすることができます。 – miqueloi

+0

どうすればいいですか? – TomerZ

+0

@miqueloiええ、面白い、それは働いた、あなたはなぜ知っていますか? – TomerZ

答えて

6

正常に動作するデバッグバージョンではなく、リリースアプリをビルドするときにスピードが増しました。

私はなぜそれが動作するのかはわかりませんが、コンパイラがextライブラリをapkにリンクする方法が原因であると思います。私は一度、アンドロイドのプラットフォームの開発者の一人であるChet Haaseとのインタビューを見ました。彼らは、アプリの最初のアクティビティをどのように鈍いスプラッシュスクリーンを避けるためにできるだけ早く表示しようとしていたかを説明しました。おそらくその機能がリリースビルドプロセスで何らかの形で有効になっているのかもしれません。

編集: 正しい答えは@Embydextrousによって以下に書き込まれます。これは、デバッグモードでのアプリケーションのデクシングによって引き起こされます。

+1

リリースビルドでは、proguardを使用し、不要なメソッドを削除します。したがって、単一の.dexファイルのみが作成されます。ビルドとデバッグのビルドをリリースしてください。デバッグビルドでは複数のクラス* .dexファイルが、リリースビルドでは1つのみ表示される可能性があります。 私もこの質問に答えを出しました。 – Embydextrous

+0

あなたはそれを持っています。意味があります。 – miqueloi

+0

http://stackoverflow.com/a/38476244/3529873 - 私の答えにリンクしてください。 – Embydextrous

0

名前として、openDexFileはdexファイルからメソッドをロードするアン​​ドロイドプロセスであることを示唆している。より多くのファイルがロードされます。

は、最初の要求でそれを初期化するので、あなたの質問に私の答えはちょうどあなたが持っているメソッドの数を減らしているとApp.onCreateであなたのネットlibが

アプリケーション

でそれらを初期化するので、代わりの初期化するのではなく、ライブラリの遅延ロードを好みます必要になるまでDBを作成しないでください。代わりにwhitescreenのユーザープリローダーを表示するアプリのテームにwindowBackground :)

より良い方法カウント参照する方法:

もアンドロイドを使用しての下でアンドロイドスタジオで

のプラグインのインストール「のAndroidメソッドがカウント」、ということ非常にシンプルなplugiです。私はその名前が何を示唆していると思いますか?

あなたのプロジェクトの知識があれば、今使っているライブラリの数を減らして、gradle-> root - >タスク - >アンドロイド - > AndroidDependenciesをクリックすると、プロジェクトに追加されているライブラリが表示されます。

また、実際に使用しているコアプレイサービスとライブラリのみを使用しないように注意してください。

4

これは通常、デバッグビルドで発生しますが、リリースビルドでも発生します。

複数のdexファイルの場合。主なdexファイル(classes.dex)が最初にロードされ、次に他のdexファイルがロードされます。

未使用のメソッドを削除し、メソッドの数を減らして1つの.dexしか作成しないproguardのため、通常リリースビルドには表示されません。デバッグビルドでは、proguardは使用されていないので、複数のdexファイルがあります。

しかし、AirBnb、Facebook、Twitterなどの非常に大きなアプリでは、複数のdexファイルがあります。したがって、アプリの起動遅延はdexオプティマイザを使用して最適化できます。

関連する問題