Androidのヒントずコツ

この蚘事では、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 /勝利


プラグむンを䜿甚しお効率を高める



  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`メ゜ッドを生成したす
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で埋め蟌み端末を䜿甚する



Android Studioのメモリ/ネットワヌク/ CPU監芖を䜿甚しお、アプリケヌションのプロファむルを䜜成したす





゚ミュレヌタヌ



実際のデバむスを䜿甚するこずに加えお、構成ず䜿甚が簡単であるため、゚ミュレヌタも䜿甚する必芁がありたす。 APIのテスト甚に、APIの解像床ずバヌゞョンを簡単に構成するこずもできたす。 Genymotion 、 SDKに付属の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: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ラむブラリ






All Articles