この記事では、Android開発者の作業を楽にするさまざまなツールとヒントを紹介します。 ほとんどは使い慣れた開発者から直接収集され、誰もが知っておくべきことを含んでいます。 エクストラとエクステンションは大歓迎です。記事に記載されていないクールなメカニズムを知っている場合は、
元に戻ってプルリクエストを開くのが面倒ではないようにしてください。
ツールを知る
Android Studio
ショートカットを使用することを忘れないでください
説明 | Mac | Linux /勝利 |
IDEの設定、アクションのクイック検索 | Cmd + Shift + A | Ctrl + Shift + A |
親クラスメソッドをオーバーライドする | Cmd + o | Ctrl + O |
名前でファイルを検索する | Cmd + Shift + O | Ctrl + Shift + N |
最近編集されたファイルのリスト | Cmd + Shift + E | Ctrl + Shift + E |
最近開いたファイルのリスト | Cmd + e | Ctrl + E |
最後に編集したファイル | Cmd + Shift + Backspace | Ctrl + Shift + Backspace |
メソッド/変数が使用されているすべての場所を見つける | Opt + F7 | Alt + F7 |
前のアイテムと同様に、ポップアップのみ | Cmd + Opt + F7 | Ctrl + Alt + F7 |
コードをコードスタイルにする | Cmd + Opt + L | Ctrl + Alt + L |
コードブロックをコンストラクトで囲みます(そうでない場合は試してください) | Opt + Cmd + T | Alt + Ctrl + T |
オープンターミナル | Opt + F12 | Alt + F12 |
セッターの生成/ゲッター/ | Cmd + n | Alt + Ins |
名前でクラスを検索する | CMD + O | Ctrl + N |
名前リファクタリング | Shift + F6 | Shift + F6 |
クイックフィックス | Opt + Enter | Alt + Enter |
変数、クラス、メソッドの宣言に移動 | Cmd + b | Ctrl + B |
メソッドのパラメーターのリストを表示する | Cmd + p | Ctrl + P |
リファクタリングメニュー | Ctrl + T | Ctrl + Alt + Shift + T |
プロセスを強制終了する | Cmd + f2 | Ctrl + F2 |
プロジェクト全体を検索する | Shift + Shift | Shift + Shift |
行を削除 | Cmd +バックスペース | Ctrl + Y |
行を複製 | Cmd + d | Ctrl + D |
選択範囲の拡大/縮小 | Opt +上/下矢印キー | Shift + Ctrl + W |
複数行選択 | Ctrl + G | Alt + J |
ショートカットの全リスト | Macosx | Linux /勝利 |
プラグインを使用して効率を高める
- キープロモーター
このプラグインは、IDEのボタンをクリックする代わりに使用する必要があるキーボードショートカットを備えた大きないポップアップを表示することで苦しみます。 しばらくすると、このひどいポップアップが表示されないようにするために、マシンで既にショートカットを使用します。
- 文字列操作
文字列の操作を簡素化し、ソート、他のエンコーディングへの変換、重複の削除、テキストのトリミングなどを可能にします。
- 行ソーター
メニューにアイコンを追加して、選択されている行または何も選択されていない場合はファイル全体をソートします。
- Findbugs
Android Studioを使用してJavaコードのバグを検索するための静的バイトコードアナライザー。
- ソナーリント
プラグイン。実行時に、Java、JavaScript、およびPHPの新しいバグとコード品質の違反に関する情報を表示します。
- チェックスタイル
Android Studioを使用してJavaファイルをスキャンし、設定のコンプライアンスをチェックするプラグイン。 ビルドシステムに統合して、違反のあるビルドを防ぐことができます。
- ADBのアイデア
Android StudioとIntellijにADBコマンド(アプリケーションのインストールとアンインストール、アプリケーションの再起動など)を追加するプラグイン。
Android Studioでの開発時にライブテンプレートを使用する
テンプレート | 説明 |
newInstance | フラグメント内で静的な `newInstance`メソッドを生成します |
Toast | Toast.makeText(context、 ""、Toast.LENGTH_SHORT).show();を生成します |
fbc | 目的のビュータイプに合わせたfindViewById |
const | int定数を定義します |
logd | Log.d(TAG、 "")を生成します。 |
logm | メソッドの現在の名前と引数を記録します。 |
logr | 現在のメソッドの結果を記録する |
logt | 現在のクラス名を持つログの静的タグ文字列 |
psf | パブリックスタティックファイナル |
sout | System.outに文字列を出力します |
soutm | System.outのクラス名とメソッド名を出力します |
soutp | System.outでメソッドの引数と値を出力します |
visible | ビューの可視性を可視に設定します |
gone | ビューGONEの可視性を設定する |
noInstance | エンティティの作成を禁止する引数のないプライベートコンストラクター |
→
Android Studioのライブテンプレートの全リストAndroid StudioでのPostfixコード補完
Android Studio / IntelliJには、特定の変数に構造を適用できるコードを追加するための特別なメカニズムがあります。
テンプレート | 説明 |
<expr>.null | null if(<expr> == null) |
<expr>.notnull | null if(<expr> != null) |
<expr>.var | T name = <expr> |
<expr>.field | field = <expr> |
<ArrayExpr>.for | for(T item : <Arrayexpr>) |
<ArrayExpr>.fori | for(int i = 0; i < <Arrayexpr>.length; i++) |
<ArrayExpr>.forr | for(int i = <Arrayexpr>.length - 1; i => 0 ; i--) |
利用可能な後置コードの追加の完全なリストは、設定→エディター→後置テンプレートにあります。
Android StudioでDarculaテーマを使用する
はい、これはもっと好みの問題だと思います。 ただし、暗いテーマを使用すると、目の負担が軽減されると信じてください。
不便な/小さな活字を使用しないでください
可能であれば、読みやすく、目に不快感を与えないフォントを使用してください。
Menloフォントを使用しています。
コードスタイルを使用する
標準のコードスタイルを使用する必要があります。 例として、
AOSP Codestyleまたは
Square IntelliJ Codestyleをご覧くださいAndroid Studioのメモリ/ネットワーク/ CPU監視を使用して、アプリケーションのプロファイルを作成します
エミュレーター
実際のデバイスを使用することに加えて、構成と使用が簡単であるため、エミュレータも使用する必要があります。 APIのテスト用に、APIの解像度とバージョンを簡単に構成することもできます。
Genymotion 、
SDKに付属のIntelエミュレーターこれは特筆に値する非常に便利なツールです。 実際、Androidデバイスのコンテンツをノートパソコンの画面にストリーミングできます。 プレゼンテーションでアプリケーションのデモをデモする必要がある場合に非常に便利です。 実際のデバイスと対話することができ、これらすべてがラップトップ画面に表示されます。 無料版と有料版があり、有料版は購入する価値があります。
(キーボードとマウスを使用して)物理的なAndroidデバイスを操作する必要がある場合、このアプリケーションはこれをうまく処理します。 Androidデバイスをコンピューターのデスクトップの一部であるかのように制御できます。
無料版ではマウスを使用でき、
有料版ではキーボードやその他の機能を使用できます。 このアプリケーションを使用すると、ノートパソコンのキーボードから手を離さずにアプリケーションをテストできます。
コードを書くときに最適なツールを選択してください
- HttpUrlConnectの代わりにOkHttpを使用します。
HttpUrlConnectには、 一定数のバグが含まれています。 Okhttpはかなりうまく決定しました。 Okhttpの発表 。
- 次のようにローカルの `aar`ファイルにリンクします 。
dependencies { compile(name:'nameOfYourAARFileWithoutExtension', ext:'aar') } repositories { flatDir { dirs 'libs' } }
- Pidcatを使用してログをより便利に処理する
- バージョン管理システム(VCS)、できればgitを使用する
- ClassySharkを使用する
.apk、.jar、.class、.dex、.aar、.soなどのファイルを分析できるAndroid開発者向けの特別なプログラム。 クラスのフィールドとメソッド、依存関係.apk、アプリケーションで使用されるメソッドの数などに関する情報を表示できます。
- ステトを使用する
Chrome Dev Toolsを使用してアプリケーションをデバッグできます。 ネットワークモニター(ネットワークモニター)、共有設定の表示が含まれます。
- Battery Historianを使用する
バッテリー消費を分析するためのプログラム
- 依存関係を使用する場合は、常に定数を使用してください。 たとえば、「24.2.0」
使用するライブラリのバージョンを示すために「+」を使用しないでください。
これにより、新しいバージョンでAPIが変更された場合に、予期しないバグやビルドの問題を回避できます。 また、アセンブリ中に、依存ライブラリの最新バージョンを確認するために毎回インターネット接続を開く必要はありません。
- TimerTaskの代わりにハンドラーを使用する
- 個人の個人用メールを使用してアプリケーションを公開しないでください。
- PNGの代わりにベクトルを使用する
まだpngがある場合は、それらを絞ります。 これについては、[TinyPNG](https://tinypng.com)をご覧ください。
- プロガードを使用する
android { ... buildTypes { release { minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } }
- shrinkResourcesを使用する
android { ... buildTypes { release { shrinkResources true minifyEnabled true ... } } }
- バックグラウンドでアプリケーションのシステムの強制終了をシミュレートするには、ターミナルで実行します
adb shell am kill
- gradleビルドを高速化するための設定を調べる
Gradle memory >= Dex memory + 1Gb
- ネイティブコードを使用する場合は、.apkをgradleで区切ります。 あなたが苦しみ、ソースを理解するので、すべてを一緒に混ぜないでください。
defaultConfig { ... ndk { abiFilters "armeabi", "armeabi-v7a", "mips", "x86" } } //Split into platform dependent APK splits { abi { enable true reset() include 'armeabi', 'armeabi-v7a', 'mips', 'x86' //select ABIs to build APKs for universalApk false //generate an additional APK that contains all the ABIs } } // map for the version code project.ext.versionCodes = ['armeabi': 1, 'armeabi-v7a': 2, 'mips': 5, 'x86': 8] // Rename with proper versioning android.applicationVariants.all { variant -> // assign different version code for each output variant.outputs.each { output -> output.versionCodeOverride = project.ext.versionCodes.get(output.getFilter(com.android.build.OutputFile.ABI), 0) * 1000000 + android.defaultConfig.versionCode } }
- MVPやClean Architectureなどのアプリケーションアーキテクチャを構築する方法を学ぶ
- TDDの原則(テスト駆動開発)を理解して使用する
- キャッシュされた依存関係をgradleに再読み込みさせる
./gradlew --refresh-dependencies
- アセンブリ中にgradleタスクを除外します。 タスク「javaDoc」を除外するとします。この場合、「-x」オプションとタスクの名前を使用します。この例では「javaDoc」
./gradlew clean build -x javaDoc
- さまざまなgradleトリック
- DRY(自分を繰り返さないでください)の原則に従ってください
- レイヤーではなく機能ごとにパッケージを分離する
- 依存関係の競合を解決する方法を学ぶ
Androidライブラリとその更新の開発速度を考えると、ある時点で、アプリケーションで依存関係の競合が発生します。 Gradleでは、これらの問題を公式ドキュメントで解決できます
- 別のパッケージ名を使用してアセンブリをデバッグする
android { buildTypes { debug { applicationIdSuffix '.debug' versionNameSuffix '-DEBUG' } release {
- Androidアプリケーションでのメモリリークの確認と修正
- リソースのデフォルト名を使用します。
- 自分でgradleタスクを書き始めます
AndroidはGradleをアセンブリシステムとして使用します。これにより、多くの作業を簡素化し、自動化のための独自のタスクを作成できます。 多くの便利なgradleスクリプトを含むredditの投稿 。
- このようなAndroidプロジェクトで適切な.gitignoreを使用します
- LeakCanaryを使用して、アプリケーションのメモリリークを検出します。
- Android Studio 2.2以降でのgradleビルドの高速化
-gradleバージョン3.1にアップグレードします。
プロジェクトディレクトリで次のコマンドを実行して、gradleラッパーを更新します。
./gradlew wrapper --gradle-version 3.1
-`gradle.properties`ファイルでビルドオプションをグローバルに設定する
android.enableBuildCache=true
- gradleでビルドプロセスを停止する
./gradlew -stop
- 欠落しているAndroid SDKコンポーネントを自動的にダウンロードするようにgradleを構成します。
グローバルgradle.propertiesファイルで次のオプションを設定します。
android.builder.sdkDownload=true
これは実験的なオプションであり、ビルドツールとプラットフォームのみをダウンロードしますが、 Googleまたはサポートリポジトリは更新しません。
- build.gradleファイルにjcenter()とmavenCentral()を同時に含めないでください。
JCenterにはMavenCentralが含まれています 。
- Android SDKで提供されているサポートライブラリとGoogle Playサービスライブラリに互換性がないと思われる場合は、gradleキャッシュを消去してください。
〜/ .gradle / caches /ディレクトリに移動し、キャッシュフォルダー内のすべてのコンテンツを削除します。
SDKマネージャーを開き、すべてのサポートライブラリとGoogle Playサービスを再同期します。
次に、プロジェクトのgradle依存関係を更新します。
これですべてが良好な状態になり、正しく動作するはずです。
- 端末に便利な「adb」エイリアスを設定します。
〜/ .bashrcまたは〜/ .zshrcファイルに次のコマンドを追加し、保存してターミナルを再起動します。 その後、 使用法の列に示すように使用できます。
エイリアス | 使用する |
alias screenshot="adb exec-out screencap -p > screen-$(date -j "+%s").png" | screenshot |
alias startintent="adb devices | tail -n +2 | cut -sf 1 | xargs -IX adb -s X shell am start $1" | startintent https://twitter.com/nisrulz |
alias apkinstall="adb devices | tail -n +2 | cut -sf 1 | xargs -IX adb -s X install -r $1" | apkinstall ~/Desktop/DemoApp.apk |
alias rmapp="adb devices | tail -n +2 | cut -sf 1 | xargs -IX adb -s X uninstall $1" | rmapp com.example.demoapp |
alias clearapp="adb devices | tail -n +2 | cut -sf 1 | xargs -IX adb -s X shell pm clear $1" | clearapp com.example.demoapp |
- コードに// STOPSHIPが含まれる場合、ビルド時にクラッシュするようにAndroid Studioを設定します。
//STOPSHIP
リントチェックを有効にするには、 `build.gradle`に追加します
android { ... lintOptions { abortOnError true fatal 'StopShip' } }
コードに//STOPSHIP
コメントがある場合、リリースビルドはビルドされません。 さらに、Android Studioでそのようなコメントの強調表示を有効にすることもできます(デフォルトではオフ)。 Preferences → Editor → Code Style → Inspections
。 ストップシップを検索し、チェックボックスをオンにして強調表示します。
- マニフェストにリストされているすべての権限を付与するには、「adb install -g」を使用します。
- Alfiを使用して、名前でライブラリを検索します。 gradleアプリケーションのビルドスクリプトに含める文字列がすぐに表示されます。 これは基本的に、WebアプリケーションであるGradleのコンソールバージョンです。
alfi $name_of_library$
目的のライブラリをコピーします。 build.gradleに貼り付けます。
- Dryrunを使用して、ライブラリまたはサンプルアプリケーションを迅速かつ便利にテストします。
dryrun $REMOTE_GIT_URL$
- 単体テストの結果をコンソールに直接表示します。
android { ... testOptions.unitTests.all { testLogging { events 'passed', 'skipped', 'failed', 'standardOut', 'standardError' outputs.upToDateWhen { false } showStandardStreams = true } } }
- オフラインモードを使用してより速くビルドします 。
--offline
フラグは、ビルド時にキャッシュの依存関係を使用するように--offline
指示します。 このフラグを使用してアセンブリを実行すると、gradleはネットワーク経由で依存関係をダウンロードしようとしません。 必要なモジュールがキャッシュにない場合、アプリケーションはビルドされません
- デバッグビルドをできるだけ速くビルドします。
./gradlew assembleDevelopDebug --offline
- できるだけ早く単体テストを実行します。
./gradlew test --offline
- ロガーを別のクラスにカプセル化する
- ライブラリを自動的に初期化する場合は、コンテンツプロバイダーを使用します。 Firebaseの仕組みをご覧ください。
便利なUI / UXのヒント
ムーブメント
材料設計では、現実世界の物理学を基盤として使用します。 現実の世界のオブジェクトは直線的に移動するのではなく、湾曲した経路に沿って移動し、状況に応じて加速と減速も行います。
したがって、自然に見えるようにプロパティを操作し、オブジェクトをアニメーション化する必要があります。 たとえば、画面を離れて運転している車はゆっくりと動き始め、画面の端に向かって徐々に加速します。 同様に、UI要素はAccelerateInterpolator、FastOutSlowInInterpolatorなどのクラスを使用して移動する必要があり
ます 。
フォント、インデント
原則として、非標準フォントはブランド化の一部として使用できますが、可能であれば、特に認識と頻繁な使用のためにメインテキストについては、標準のRobotoとNotoを使用することをお勧めします。
Robotoはラテン文字、ギリシャ文字、キリル文字をカバーし、Notoは
他の言語をカバーし
ます 。
フォントの明るさのバランスは、現代のスタイリングの最も重要なパラメーターの1つです。 基本的な考え方は、フォントが小さければ小さいほど明るくなることであり、逆もまた同様です。
テキスト自体は、4dpセルでグリッドに揃える必要があります。
1行あたり40〜60文字の大きなブロックの理想的なテキスト長。
アイコン
アイコンのサイズは48dpで、エッジは1dpである必要があります。
48px x 48px - mdpi
72px x 72px - hdpi
96px x 96px - xhdpi
144px x 144px - xxhdpi
192px x 192px - xxxhdpi
Google Playには、サイズが512px x 512pxの追加のアイコンを提供する必要があります。
アプリケーションのページのヘッダーに表示される1024px x 500pxのサイズのアイコンにも同じことが当てはまります。
リップル
リップル効果を実装するときは、
?android:attr
、
moreの代わりに
?android:attr
?attr/selectableItemBackground
使用し
?attr/selectableItemBackground
。 Button
useのような要素にリップル効果を実装する
場合 :
android:background="?attr/selectableItemBackground"
ImageViewなど、ビューの端を超えて広がるリップルを実装する場合は、次を
使用します 。
?attr/selectableItemBackgroundBorderless
残りのアイテム
マテリアルデザインビューに準拠した要素は、可能であればセルサイズが8dpのグリッド上に配置する必要があります。 このアプローチのおかげで、UI
は構造化されて楽しいように見えます。
ViewGroup要素(LinearLayout、FrameLayout、RelativeLayoutなど)へのリンクが必要で、この特定のViewGroupタイプに特定のメソッドが必要ない場合は、特定のタイプを保存せず、
ViewGroupを使用します 。
その他の資料
さまざまな人気のあるリソースでブラウザーをブックマークする
テストには無料の模擬APIを使用します。
以下にリストするすべての例は、何らかの形で、バックエンドなしでアプリケーションをテストすることを可能にします。 使用する必要がある場合は、リストを調べて、機能のニーズと要件に最も適した項目を確認してください。
Android開発ダイジェストにサインアップする
より便利なソフトウェアの例
さらに-私が個人的に開発したAndroidライブラリ