Androidのヒントとコツ

この記事では、Android開発者の作業を楽にするさまざまなツールとヒントを紹介します。 ほとんどは使い慣れた開発者から直接収集され、誰もが知っておくべきことを含んでいます。 エクストラとエクステンションは大歓迎です。記事に記載されていないクールなメカニズムを知っている場合は、 に戻ってプルリクエストを開くのが面倒ではないようにしてください。

ツールを知る


Android Studio


ショートカットを使用することを忘れないでください


説明MacLinux /勝利
IDEの設定、アクションのクイック検索Cmd + Shift + ACtrl + Shift + A
親クラスメソッドをオーバーライドするCmd + oCtrl + O
名前でファイルを検索するCmd + Shift + OCtrl + Shift + N
最近編集されたファイルのリストCmd + Shift + ECtrl + Shift + E
最近開いたファイルのリストCmd + eCtrl + E
最後に編集したファイルCmd + Shift + BackspaceCtrl + Shift + Backspace
メソッド/変数が使用されているすべての場所を見つけるOpt + F7Alt + F7
前のアイテムと同様に、ポップアップのみCmd + Opt + F7Ctrl + Alt + F7
コードをコードスタイルにするCmd + Opt + LCtrl + Alt + L
コードブロックをコンストラクトで囲みます(そうでない場合は試してください)Opt + Cmd + TAlt + Ctrl + T
オープンターミナルOpt + F12Alt + F12
セッターの生成/ゲッター/Cmd + nAlt + Ins
名前でクラスを検索するCMD + OCtrl + N
名前リファクタリングShift + F6Shift + F6
クイックフィックスOpt + EnterAlt + Enter
変数、クラス、メソッドの宣言に移動Cmd + bCtrl + B
メソッドのパラメーターのリストを表示するCmd + pCtrl + P
リファクタリングメニューCtrl + TCtrl + Alt + Shift + T
プロセスを強制終了するCmd + f2Ctrl + F2
プロジェクト全体を検索するShift + ShiftShift + Shift
行を削除Cmd +バックスペースCtrl + Y
行を複製Cmd + dCtrl + D
選択範囲の拡大/縮小Opt +上/下矢印キーShift + Ctrl + W
複数行選択Ctrl + GAlt + J
ショートカットの全リストMacosxLinux /勝利

プラグインを使用して効率を高める


  1. キープロモーター
    このプラグインは、IDEのボタンをクリックする代わりに使用する必要があるキーボードショートカットを備えた大きないポップアップを表示することで苦しみます。 しばらくすると、このひどいポップアップが表示されないようにするために、マシンで既にショートカットを使用します。

  2. 文字列操作
    文字列の操作を簡素化し、ソート、他のエンコーディングへの変換、重複の削除、テキストのトリミングなどを可能にします。

  3. 行ソーター
    メニューにアイコンを追加して、選択されている行または何も選択されていない場合はファイル全体をソートします。

  4. Findbugs
    Android Studioを使用してJavaコードのバグを検索するための静的バイトコードアナライザー。

  5. ソナーリント
    プラグイン。実行時に、Java、JavaScript、およびPHPの新しいバグとコード品質の違反に関する情報を表示します。

  6. チェックスタイル
    Android Studioを使用してJavaファイルをスキャンし、設定のコンプライアンスをチェックするプラグイン。 ビルドシステムに統合して、違反のあるビルドを防ぐことができます。

  7. ADBのアイデア
    Android StudioとIntellijにADBコマンド(アプリケーションのインストールとアンインストール、アプリケーションの再起動など)を追加するプラグイン。

Android Studioでの開発時にライブテンプレートを使用する


テンプレート説明
newInstanceフラグメント内で静的な `newInstance`メソッドを生成します
ToastToast.makeText(context、 ""、Toast.LENGTH_SHORT).show();を生成します
fbc目的のビュータイプに合わせたfindViewById
constint定数を定義します
logdLog.d(TAG、 "")を生成します。
logmメソッドの現在の名前と引数を記録します。
logr現在のメソッドの結果を記録する
logt現在のクラス名を持つログの静的タグ文字列
psfパブリックスタティックファイナル
soutSystem.outに文字列を出力します
soutmSystem.outのクラス名とメソッド名を出力します
soutpSystem.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で埋め込み端末を使用する


Android Studioのメモリ/ネットワーク/ CPU監視を使用して、アプリケーションのプロファイルを作成します



エミュレーター


実際のデバイスを使用することに加えて、構成と使用が簡単であるため、エミュレータも使用する必要があります。 APIのテスト用に、APIの解像度とバージョンを簡単に構成することもできます。 GenymotionSDKに付属のIntelエミュレーター

バイザー


これは特筆に値する非常に便利なツールです。 実際、Androidデバイスのコンテンツをノートパソコンの画面にストリーミングできます。 プレゼンテーションでアプリケーションのデモをデモする必要がある場合に非常に便利です。 実際のデバイスと対話することができ、これらすべてがラップトップ画面に表示されます。 無料版と有料版があり、有料版は購入する価値があります。

デスクドック


(キーボードとマウスを使用して)物理的なAndroidデバイスを操作する必要がある場合、このアプリケーションはこれをうまく処理します。 Androidデバイスをコンピューターのデスクトップの一部であるかのように制御できます。 無料版ではマウスを使用でき、 有料版ではキーボードやその他の機能を使用できます。 このアプリケーションを使用すると、ノートパソコンのキーボードから手を離さずにアプリケーションをテストできます。

コードを書くときに最適なツールを選択してください


  1. HttpUrlConnectの代わりにOkHttpを使用します。

    HttpUrlConnectには、 一定数のバグが含まれています。 Okhttpはかなりうまく決定しました。 Okhttpの発表
  2. 次のようにローカルの `aar`ファイルにリンクします

     dependencies { compile(name:'nameOfYourAARFileWithoutExtension', ext:'aar') } repositories { flatDir { dirs 'libs' } } 

  3. Pidcatを使用してログをより便利に処理する
  4. バージョン管理システム(VCS)、できればgitを使用する
  5. ClassySharkを使用する
    .apk、.jar、.class、.dex、.aar、.soなどのファイルを分析できるAndroid開発者向けの特別なプログラム。 クラスのフィールドとメソッド、依存関係.apk、アプリケーションで使用されるメソッドの数などに関する情報を表示できます。
  6. ステトを使用する
    Chrome Dev Toolsを使用してアプリケーションをデバッグできます。 ネットワークモニター(ネットワークモニター)、共有設定の表示が含まれます。
  7. Battery Historianを使用する
    バッテリー消費を分析するためのプログラム
  8. 依存関係を使用する場合は、常に定数を使用してください。 たとえば、「24.2.0」
    使用するライブラリのバージョンを示すために「+」を使用しないでください。
    これにより、新しいバージョンでAPIが変更された場合に、予期しないバグやビルドの問題を回避できます。 また、アセンブリ中に、依存ライブラリの最新バージョンを確認するために毎回インターネット接続を開く必要はありません。
  9. TimerTaskの代わりにハンドラーを使用する
  10. 個人の個人用メールを使用してアプリケーションを公開しないでください。
  11. PNGの代わりにベクトルを使用する
    まだpngがある場合は、それらを絞ります。 これについては、[TinyPNG](https://tinypng.com)をご覧ください。
  12. プロガードを使用する

     android { ... buildTypes { release { minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } 

  13. shrinkResourcesを使用する

     android { ... buildTypes { release { shrinkResources true minifyEnabled true ... } } } 

  14. バックグラウンドアプリケーションのシステムの強制終了をシミュレートするには、ターミナルで実行します

     adb shell am kill 

  15. gradleビルドを高速化するための設定を調べる

     Gradle memory >= Dex memory + 1Gb 

  16. ネイティブコードを使用する場合は、.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 } } 

  17. MVPやClean Architectureなどのアプリケーションアーキテクチャを構築する方法を学ぶ
  18. TDDの原則(テスト駆動開発)を理解して使用する
  19. キャッシュされた依存関係をgradleに再読み込みさせる

     ./gradlew --refresh-dependencies 

  20. アセンブリ中にgradleタスクを除外します。 タスク「javaDoc」を除外するとします。この場合、「-x」オプションとタスクの名前を使用します。この例では「javaDoc」

     ./gradlew clean build -x javaDoc 

  21. さまざまなgradleトリック
  22. DRY(自分を繰り返さないでください)の原則に従ってください
  23. レイヤーではなく機能ごとにパッケージを分離する
  24. 依存関係の競合を解決する方法を学ぶ
    Androidライブラリとその更新の開発速度を考えると、ある時点で、アプリケーションで依存関係の競合が発生します。 Gradleでは、これらの問題を公式ドキュメントで解決できます
  25. 別のパッケージ名を使用してアセンブリをデバッグする

     android { buildTypes { debug { applicationIdSuffix '.debug' versionNameSuffix '-DEBUG' } release { // ... } } } 

  26. Androidアプリケーションでのメモリリークの確認と修正
  27. リソースのデフォルト名を使用します。
  28. 自分でgradleタスクを書き始めます
    AndroidはGradleをアセンブリシステムとして使用します。これにより、多くの作業を簡素化し、自動化のための独自のタスクを作成できます。 多くの便利なgradleスクリプトを含むredditの投稿
  29. このようなAndroidプロジェクトで適切な.gitignoreを使用します
  30. LeakCanaryを使用して、アプリケーションのメモリリークを検出します。
  31. Android Studio 2.2以降でのgradleビルドの高速化
    -gradleバージョン3.1にアップグレードします。

    プロジェクトディレクトリで次のコマンドを実行して、gradleラッパーを更新します。

     ./gradlew wrapper --gradle-version 3.1 

    -`gradle.properties`ファイルでビルドオプションをグローバルに設定する

     android.enableBuildCache=true 

  32. gradleでビルドプロセスを停止する

     ./gradlew -stop 

  33. 欠落しているAndroid SDKコンポーネントを自動的にダウンロードするようにgradleを構成します。
    グローバルgradle.propertiesファイルで次のオプションを設定します。

     android.builder.sdkDownload=true 

    これは実験的なオプションであり、ビルドツールとプラットフォームのみをダウンロードしますが、 Googleまたはサポートリポジトリは更新しません。
  34. build.gradleファイルにjcenter()とmavenCentral()を同時に含めないでください。
    JCenterにはMavenCentralが含まれています
  35. Android SDKで提供されているサポートライブラリとGoogle Playサービスライブラリに互換性がないと思われる場合は、gradleキャッシュを消去してください。
    〜/ .gradle / caches /ディレクトリに移動し、キャッシュフォルダー内のすべてのコンテンツを削除します。
    SDKマネージャーを開き、すべてのサポートライブラリとGoogle Playサービスを再同期します。
    次に、プロジェクトのgradle依存関係を更新します。
    これですべてが良好な状態になり、正しく動作するはずです。
  36. 端末に便利な「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 

  37. コードに// STOPSHIPが含まれる場合、ビルド時にクラッシュするようにAndroid Studioを設定します。
    //STOPSHIPリントチェックを有効にするには、 `build.gradle`に追加します

     android { ... lintOptions { abortOnError true fatal 'StopShip' } } 

    コードに//STOPSHIPコメントがある場合、リリースビルドはビルドされません。 さらに、Android Studioでそのようなコメントの強調表示を有効にすることもできます(デフォルトではオフ)。 Preferences → Editor → Code Style → Inspections 。 ストップシップを検索し、チェックボックスをオンにして強調表示します。
  38. マニフェストにリストされているすべての権限を付与するには、「adb install -g」を使用します。
  39. Alfiを使用して、名前でライブラリを検索します。 gradleアプリケーションのビルドスクリプトに含める文字列がすぐに表示されます。 これは基本的に、WebアプリケーションであるGradleのコンソールバージョンです。

     alfi $name_of_library$ 

    目的のライブラリをコピーします。 build.gradleに貼り付けます。
  40. Dryrunを使用して、ライブラリまたはサンプルアプリケーションを迅速かつ便利にテストします。

     dryrun $REMOTE_GIT_URL$ 

  41. 単体テストの結果をコンソールに直接表示します。

     android { ... testOptions.unitTests.all { testLogging { events 'passed', 'skipped', 'failed', 'standardOut', 'standardError' outputs.upToDateWhen { false } showStandardStreams = true } } } 

  42. オフラインモードを使用してより速くビルドします
    --offlineフラグは、ビルド時にキャッシュの依存関係を使用するように--offline指示します。 このフラグを使用してアセンブリを実行すると、gradleはネットワーク経由で依存関係をダウンロードしようとしません。 必要なモジュールがキャッシュにない場合、アプリケーションはビルドされません
  43. デバッグビルドをできるだけ速くビルドします。

     ./gradlew assembleDevelopDebug --offline 

  44. できるだけ早く単体テストを実行します。

     ./gradlew test --offline 

  45. ロガーを別のクラスにカプセル化する
  46. ライブラリを自動的に初期化する場合は、コンテンツプロバイダーを使用します。 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:attrmoreの代わりに?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ライブラリ


Source: https://habr.com/ru/post/J319562/


All Articles