Android Studioでの快適な作業



すべての人に良い一日を!







Android Studioの生産性はどのくらいですか? PCやMacでスマートに動作すると思いますか? または、時々、遅れや長いアセンブリに遭遇しますか? そして、大規模なプロジェクトでは?







いずれにせよ、私たちは皆、ハードウェアとソフトウェアから最大限のパフォーマンスを得たいと考えています。 そのため、初心者や経験豊富な開発者向けのポイントとヒントのリストを用意しました。これらは、大規模プロジェクトで快適に作業したり、単に生産性を高めたりするのに役立ちます。 また、機器にアップグレードが必要かどうかも理解できます。







他の一般的なIDEのユーザーも、自分に役立つものを見つけるかもしれません。







やる気



Android Studioは、Eclipseからの移行の時代には不器用でした。 そしてすでに、このIDEの作業を最適化する方法を探し始めました。 ただし、ほとんどの同僚はこの「方法」に関連しています。 動作します。 必ずしも高速ではありません。 そして大丈夫。







しかし、もう1年間、私は別の会社で働いています。 気候は異なります。開発者はさまざまな技術に関するレポートを読みます。 これらのレポートの1つで、この記事のトピックが需要があると思われました。 特に、技術的な複雑さが増したプロジェクトのフレームワークで。







開発者の同僚や知人と話し合った結果、すべての「プロ」でさえハードウェア、OS、IDEのニュアンスを理解していないことが明らかになりました。 ここで私は自分の経験に基づいて完全な教育プログラムを集めようとしたのです。







免責事項! この記事で言及されているすべてのモデルとブランドは広告ではありません!









システム要件の列で、 Android Studio公式Webサイトのハードウェアについて説明します(ディスク容量は含まれません):







3 GB RAM minimum, 8 GB RAM recommended; plus 1 GB for the Android Emulator 1280x800 minimum screen resolution
      
      





これはスタジオが開始して作業するのに十分です。 私たちはパフォーマンスと快適さについて話していません。







この章では、大規模プロジェクトでの快適な作業に望ましいハードウェアの種類と、システムの「ボトルネック」になり得るものについて説明します。







ここでは、5つのパラメーターが最も重要です。









インテル製品をベースにした構成で作業することが多かったため、それらについて説明します。 ただし、AMDをお持ちの場合は、それを読んで、同様の赤いテクノロジーの修正を行ってください。 私がAMDで直面した唯一のマイナスは、 すでにHabréで説明されていました







Macについて一言



Macは開発に最適なマシンであると考えられています。 これは、MacBook Proについてよく言われます。







個人的には、これは神話だと思います。 NVMeテクノロジーの出現により、Macはその魔法を失いました。 そのため、今日、ラップトップの中でも、Macは価格-品質-性能比の面ではリーダーではありません。 特にAndroid Studioの開発のコンテキストでは。







そうでなければ、快適な開発のために、MacBook Pro 2015または2016はUプロセッサーでは意味がありません。 以下のその他の機能とサービスについてお読みください。







CPU



プロセッサのパフォーマンスは明らかで理解できます。 値が大きいほど良いです。 注意すべき唯一のことは、十分に高速なドライブがある場合、弱いプロセッサがシステムのボトルネックになることです。 NVMeドライブの場合は特に重要です。 多くの場合、それを操作するとき、CPUのパワーに正確に重点が置かれます。







スレッドの場合、事態はもう少し複雑です。 私は、ユーザーがスタジオとそのサブプロセスの優先度を下げて、OSがアセンブリ中に「ハング」しないようにすることを読みました。 ここでの理由は、1〜1個のハードウェアスレッドです。 これはIDEだけでなく、最新のOSにとっても十分ではありません。 唯一の「しかし」-私の実践では、ハイパースレッディングを備えたデュアルコアUプロセッサー(つまり、4スレッドで2コア)が比較的小さなプロジェクトで正常に機能する状況がありましたが、上記の問題は大きなプロジェクトで始まりました。







もちろん、ハードウェアの仮想化が必要です。







したがって、4以上のストリームとより強力なCore i5 HQ Skylakeを検討することをお勧めします。







RAM



標準に関しては、DDR3以降。 ここで、それは明らかだと思います。







2チャンネルまたは4チャンネルモードで作業でき、アクティブでない場合は、IDEの応答性を大幅に向上できるため、使用することを強くお勧めします。 この機能は、BIOS \ UEFI設定で、または追加のRAMモジュールをインストールすることでアクティブになります(まだ1つのモジュールがある場合)。







どのボリュームが必要ですか? 小さな(本当に小さな)プロジェクトの場合、4GBで十分です。 大規模なプロジェクトでは、スタジオはすぐに4GB以上のメモリを占有できます。 ここにHAXMエミュレーター(2 GBなど)を追加し、最新のOS(一部のLinuxディストリビューションを除く)がメモリーで約2 GBを占有することを考慮します-そして、8 GBはすでに「背中合わせ」になっています。







これには、たとえばSlack(メモリ内で平均約500 MBを必要とします)やChrome(請求書がギガバイトに達する場所)などは考慮されません。







一般に、8GBのRAMを使用すると、すばやく快適に作業できます。高速ドライブとスワップファイルを保存できます。 ただし、アップグレードを検討する必要があります。







そのため、同社は新しいものを購入するか、現在稼働中のマシンを12GB以上のRAMにアップグレードします。







SSD



ディスクサブシステムは最も頻繁に発生する「ボトルネック」であるため、まず最初に注意する必要があります。







2018年にHDDでAndroid Studioを操作することは苦痛に匹敵します。プロジェクトが大きくなればなるほど、より多くのフリーズが提供されます。 したがって、明らかにSSDのみを使用してください。







上記のように、2つの重要なパラメーターがあります。









それらが高いほど、スタジオの反応が速くなり、読み込みと組み立てが速くなります。







線形の読み取り/書き込み速度については話されていないことに注意してください。これはスタジオにとって重要ではありません。 したがって、ドライブを選択するときは、メーカーまたはストアのWebサイトでの読み取り/書き込み速度ではなく、 IOPSの数(より多いほど良い)を調べる必要があります。







もちろん、ここではMacについては説明しません。そこにあるドライブには独自の標準があるか、単にボードにはんだ付けされているからです。 より大きなボリュームを除き、交換が可能です。 ここで速度特性を上げることは不可能です。







NVMe



マザーボードがNVMeテクノロジーをサポートしている場合は、サポート付きのドライブを使用することをお勧めします。 Mac以上のSSDに匹敵する速度を得ることができます。







高速ドライブを使用している場合、PCIeバスとCPUの能力に焦点が当てられています。 したがって、たとえば、マザーボードがPCIe 2.0x4 \ 3.0x2ドライブへの出力をサポートしている場合、または非常に強力なCPUを持っていない場合、非常に高価なドライブを購入しないでください。 システムの機能とウォレットの厚さを見てください。







SATA3



はい、SATA3はすべての生き物よりも生きています。 そして、スタジオですぐに作業できます。







このセグメントでは、高速ドライブの方が手頃な価格なので、120 GB以上の容量を持つトップソリューションをすぐに見るのが理にかなっています。







Intel Optane



このドライブを搭載したマシンでAndroid Studioを使用する必要はありませんでした(呼び出すことができる場合)。 経験がある人はコメントに書いてください。







GPU



あまり話す必要はありません。

通常のユーザーアプリケーションを作成する場合は、スタジオとエミュレーター自体にIntel HD 500シリーズのようなもので十分です。







ゲームを開発している場合、またはこれがあなたの個人的なマシンである場合、個別のグラフィックスが意味をなします。 どの-あなたのニーズに応じて見てください。







冷却システムと調整



これはアップグレードに関するものではなく、メンテナンスに関するものです。







私たちのほとんどは、 スロットル現象を知っています。 その実装は、過熱から保護するために使用されます。







もちろん、スロットリングは生産性の低下につながります。 常に目立ちません。 場合によっては、ターボブースト操作が最小値に削減され、他の場合では、最大プロセッサ周波数の低下が始まります。 その理由は、冷却システムの効率が不十分なためです。 また、ほとんどのストレステスト(AIDAなど)が通常のTurbo Boost操作をスロットルとして診断することを理解することも重要です。







デスクトップPCの場合、すべてが長い間オンラインになっています。 ヒートパイプに基づくモバイルシステムの場合、多くの矛盾する情報。 これには、ほとんどのラップトップ、ネットトップ、MacBook、およびiMacが含まれます。 さらに、それらに焦点を当てます。







最新の強力なモバイルCPUでは、負荷がかかっているチップで80〜90度が標準です。 同時に、これらのCPUを搭載したSOCはオープンチップ設計であるため、熱伝達面積が小さくなります。 この熱の山はすべて取り除かれます このrid笑 同様の設計で、小さな閉じた液体回路があります。







最新のモバイル冷却システム







このような冷却システムではより大きな負荷が発生し、より頻繁なメンテナンスが必要であることを理解する必要があります。 特にラップトップやMacBookの場合、振動から輸送されると、乾燥したサーマルペーストの層はより速く崩壊します。 また、時期尚早なメンテナンスには、生産性の低下だけでなく、サーモチューブの漏れや結晶の「ダンプ」も伴います。







メンテナンスは、保証期間の終了後、6か月から1年ごとに1回、サーマルグリースの交換とラジエーターのクリーニングから成ります。 いずれにせよ、これは私たちがやっていることです。







結晶の面積が小さいため、熱伝導率の高い誘電体サーマルペーストを使用するのが理にかなっています(1グラムあたり約800〜1000 rかかります)。 液体金属を使用しないでください! そうしないと、クリスタルをプレートから分離できない可能性が高くなります!







この手順に必要なスキルがない場合は、サービスに連絡することをお勧めします。







ハードウェア設定



この章では、機器の機能と設定に焦点を当てます。 おそらく、あなたはすでに知っています。







Intelハイパースレッディング



これは、カーネルハードウェアストリームを2つの「仮想」ストリームに分割するIntelテクノロジーです。 彼女のおかげで、システムは4コアプロセッサを8コアプロセッサと見なしています。 このアプローチにより、プロセッサの電力を効率的に利用できます。 AMDにも同様のテクノロジーがあります。







多くの場合、多くの開発者がこの機能を無効にしていて、一般にそれを知らないという事実に遭遇します。 ただし、これを含めると、スタジオの応答性が向上し、パフォーマンスが向上します。 場合によっては、10〜15%増加します。







マザーボードまたはラップトップのBIOS \ UEFI設定でオンになります。 アイテムは、同様または同様の方法で呼び出されます。 このテクノロジーについてまだ知らなかった場合は、その可用性を確認し、まだ行われていない場合は有効にすることをお勧めします。







Intel Turbo Boost



別のよく知られた技術。 実際、これはCPUの自動短期オーバークロックであり、アセンブリ中に大幅に増加します。 また、同時に、モバイルプロセッサをTjunctionからそれほど遠くない温度まで加熱することができます。







したがって、このテクノロジーが以前に無効にされていた場合、スイッチを入れる前に、冷却システムのステータスを確認し、場合によっては前の章で説明したようにメンテナンスを実行することをお勧めします。







BIOS \ UEFIとOS設定の両方で有効にできます。







Intelラピッドストレージ



このテクノロジーマザーボードのサポートを強くお勧めします。 詳細はこちらをご覧ください







インテルの公式Webサイトから、このテクノロジーのドライバーをタイムリーに最新バージョンに更新することをお勧めします。 ノートパソコンの製造元から古いドライバーが提供されている場合でも。







私の特定のケースでは、メーカーのドライバーバージョンから現在のドライバーバージョンに更新すると、リニア録音の速度が約30%増加し、任意の速度が15%増加しました。







LinuxでIRSTドライバーをインストールおよび更新する方法-知りません(そして、一般に、これは可能ですか?)。 誰でも知っているなら、コメントを書いてください、私は喜んで記事を補います。







SSDセキュア消去



低コストのSSDモデルのパフォーマンスは、時間の経過とともに低下する可能性があります。 これは、ドライブの「劣化」が原因で常に発生するとは限りません。 おそらくあなたのモデルではTRIMはあまり効率的に実装されていません。







セキュア消去により、コントローラーは強制的にすべてのメモリセルを空にマークします。これにより、理論的にはSSDのパフォーマンスを工場出荷時の状態に戻す必要があります。 また、すべてのデータを消去します! 注意して、バックアップを作成してください!







製造元の専用ユーティリティを使用して手順を実行できます。 ディスクがシステムディスクである場合、フラッシュドライブが必要になります。これにより、ユーティリティが起動可能になります。 以下の手順に従ってください。







ある段階では、操作中にドライブを直接再接続する必要があります。 したがって、M.2の場合、アダプターの存在が非常に望ましいです。







この操作にサードパーティのユーティリティを使用することは強くお勧めしません。







ただし、SSDの速度が1年以内に大幅に低下した場合は、ドライブを別のモデルに変更することをお勧めします。







ハードウェア仮想化



このテクノロジーは、x86エミュレーターの高速動作に必要です。 無効にしている場合は、BIOS \ UEFI設定で有効にします。 ベンダーごとに設定名が異なる場合があります。







はい、私たちは皆、GenymotionとBlueStacksについて知っています。これらは、ハードウェア仮想化なしでうまくいきます。 ただし、これらのエミュレーターのイメージでは、作業の速度を上げるために、Android APIの一部または多くの実装が大幅に変更されています。 これにより、実際のデバイスでは決して発生しない動作が引き起こされる可能性があります。 または、デバッグ時に、いくつかのバグを見逃す可能性があります。 したがって、実用的で機敏なAVDの存在が強く望まれます。







OSおよびサードパーティソフトウェア



この章では、生産性を向上させるために、可能なOSの構成とサードパーティソフトウェアのインストールに焦点を当てます。







索引付け



これは、Mac OSでWindowsとSpotlightを見つけることです。 これらのメカニズムは、/ buildで生成されたすべてのインデックスを作成しようとするため、アセンブリ中に最大15%のCPUパワーを消費する可能性があります。







もちろん、インデックス作成から、スタジオが動作するすべてのディレクトリを除外する必要があります。









アンチウイルス



開発環境の全員がウイルス対策ソフトウェアを使用しているわけではないことを知っています。 しかし、多くはそれを使用しています。 LinuxおよびMac OSを含む場合があります。 そして、その使用は完全に正当化されます。







Windows 10があり、ウイルス対策がない場合でも、Windows Defenderはその機能を実行します。







組み立てるとき、アンチウイルスはCPUの非常に重要な部分を占めることがあります。 そのため、「インデックス作成」列にリストされているすべてのディレクトリをアンチウイルスの例外に追加する必要があります。 また、スタジオ自体とJetBrains JVMのプロセスの名前を例外に追加することは理にかなっています。







ウイルス対策の実装に応じて、ビルド中のCPU消費は大幅に減少するか、CPUの消費をまったく停止します。 そして、アセンブリ時間自体が著しく短縮されます。







ドライブまたはホームディレクトリの暗号化



これらの機能は、すべての一般的なOSに存在するか、サードパーティソフトウェアによって実装されます。 もちろん、暗号化されたファイルスペースでのスタジオ作業には、より多くのCPUパワーが必要になる場合があります。 暗号化の実装に依存します。 したがって、このような機能を完全に無効にするか、可能であれば、「インデックス作成」列にリストされているディレクトリに対して無効にすることをお勧めします。







TRIMは機能しますか?



TRIMはハードウェアとソフトウェアの両方で実装できます。 後者の場合、TRIMを呼び出す義務はOSにあります。 また、さまざまな理由により、定期的な通話が切断され、ドライブ速度が低下する場合があります。







機能をテストし、専用のユーティリティを使用してTRIMの呼び出しを再開できます。 ドライブの製造元のユーティリティを使用することをお勧めします。







RAMDisk



RAMDiskとは何ですか? しかし、スタジオでの作業ではどれほど効果的ですか?







私自身の経験からは、あまりそうは言いません。 プロジェクト自体、SDK、スタジオなどをRAMDiskに転送しない限り。 十分なRAMがある場合...







500 mbを超えるプロジェクトを単純に転送すると(図はビルドキャッシュで示されます)、15%を超える増加を達成できませんでした。 どうやら、SDKとシステムAPIへの呼び出しは遅くなります。 結果として、そのような増加は非常に高価です。







次の方法は、はるかに効率的ではるかに安価です。







ドライブリクエストのキャッシュ



同様の何かがMac OSに実装されています。 ただし、下記の技術と比較すると、それほど効果的ではありません。







残念ながら、私に知られている実装は2つだけであり、どちらもメーカーの製品に厳密に関連付けられています。 Samsung RAPIDPlexTurboについてです







両方のテクノロジーは、同様の原則に従って機能します(自分が理解したとおりに説明します)









唯一の違いは、RAPIDが残りの空きRAMをキャッシュとして使用することです。 残りが少ない—キャッシュサイズが小さく、加速が少ない。 PlexTurboを使用すると、システムの起動時に最大キャッシュサイズを制限し、ハードディスクからロードできます。







SATA 3で使用すると、最大50%の増加を得ることができます。 NVMeドライブを使用する場合、サイズは小さくなりますが、多くの場合重要です。







現時点では、Samsung 860 EVO SATA 3が動作していますが、i7 6700HQおよびTurbo Boostが無効になっているスポイラーベンチマークの下で。







RAPIDをオンにする前の860 EVOとその後の2回の実行

RAPIDはオフです













最初の実行













二回目













システムが最初の実行でデータのキャッシュを開始する方法を明確に見ることができます。 最終的な結果は、SATA 3よりも大幅に高くなります。ただし、このテクノロジーの有効性は、CPUの能力に大きく依存します。 Turbo Boostをオンにすると、はっきりと見えるもの。







860 EVO + RAPID +ターボブースト







合成はもちろん良いです。 しかし、繰り返される小さなファイルを読み書きするときにすべて機能します。 そして、これらはAndroid Studioを実行する際の最も一般的な操作です。







私は現在、10個のモジュールで構成される合計700 MBのキャッシュを備えたプロジェクトに取り組んでいます。 モジュールの1つは、非常に重いロジックを備えた独自のkaptベースのコードジェネレーターです。 2つのNDKモジュール。そのうちの1つは外部パスのブーストを参照します。 残りは大量のKotlinコードです。







このプロジェクトの完全な再構築の時間を比較すると、結果は次のようになります。









短いプロセスでは、スタジオの成長がすぐに目立ちます。







その結果、これらのテクノロジーとドライブを生産性向上の良い方法として推奨できます。 安定性に関する苦情はありませんでした。







Android Studio



これらのヒントの多くはここから取られ、私のコメントで補足されています。 残りは私の研究と経験の結果です。







更新情報



アドバイスは、平凡ではありますが、常に関連しています。 レガシープロジェクトがない場合は、可能であれば、スタジオと関連コンポーネント(Gradle、Androidプラグイン、Kotlinプラグインなど)のバージョンを最新の状態に保つようにしてください。 GoogleとJetBrainsは、速度を最適化し、新しいバージョンを作成するために多くの作業を行います。







もちろん、新しいバージョンが予測どおりに動作を停止し、エラーを引き起こすと、恥ずかしい思いをすることがあります。 したがって、そのような状況での行動方法に関する規制があります。







場合によっては、File->キャッシュを無効にし、ロールバック後に再起動する必要があります。 スタジオ自体を更新する場合は、スタジオのディレクトリと設定ディレクトリをバックアップすることをお勧めします。 , - , .









, , API, library-. . , , .







, . , .







Instant Run



. " ". . -.







, , . . , - , Instant Run.







Build, Execution, Deployment -> Instant Run Enable Instant Run.







Attach to Process



. , ( ) . .







, - Attach debugger to Android process.







Gradle build configs



, buildConfig flavour , release- (, crashlytics, annotation- gradle-)- debug . - , , .







, buildConfig, PNG crunching, - debug-. png . :







 android { buildTypes { myConfig { crunchPngs false } } } //   android plugin android{ aaptOptions { cruncherEnabled false } }
      
      





WebP



minimum api level 18, WebP. , . . , - .









(, app-), Compile independent modules in parallel Settings->Build, Execution, Deployment -> Compiler. CPU . - heap size , , .







gradle.properties







org.gradle.parallel=true









Gradle daemon



- , .







jvm gradle . . - . gradle.properties







org.gradle.daemon=true









Offline-



Gradle web- , . . , - .







Build, Execution, Deployment -> Gradle Offline work.







heap size Android Studio IDEA



. xmx1280m ( , RAM ). GC , , .







heap size , Gradle.







Gradle gradle.properties







org.gradle.jvmargs=-Xms1024m -Xmx4096m









1 4 . , .







Android Studio IDEA Help -> Edit Custom VM Options JVM- .







JVM , - . java -X



.







プラグイン



, IDE. - . . .







- . Settings -> Plugins , , . , - .







Inspections



Settings -> Editor -> Inspections IDE. .







, . - , .







Power Save mode



File. (, , Spell Checking ..). . , , VS Code.







, .







Settings Repository



, . . .







codestyle- Git, copyright , codestyle .







, , .idea , - .







AVD



AVD . 3 , ( x86-).







, x86- Pie AVD . . , .







, HAXM 2 RAM .







, AVD CPU - , . , CPU - .







- . Settings -> Advanced . , . , Cold Boot. .







AVD







GPU , - GPU, . , . Cold Boot.







まとめ



, . .







- . , .








All Articles