- PVSM.RU - https://www.pvsm.ru -
В данном материале можно будет увидеть различные инструменты и подсказки, которые здорово облегчают жизнь Android разработчикам. Большая часть собрана напрямую от знакомых разработчиков и содержит вещи, которые должен знать каждый. Дополнения и расширения приветствуются, и если вы знаете о каком-то крутом механизме, который не был упомянут в статье, не поленитесь перейти в оригинал [1] и открыть pull request.
Описание | Mac | Linux/Win |
Быстрый поиск по настройкам, действиям в 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 |
Приведение кода в соответствие code style | Cmd+Opt+L | Ctrl+Alt+L |
Окружить блок кода конструкцией(if, else, try) | Opt+Cmd+T | Alt+Ctrl+T |
Открыть терминал | Opt+F12 | Alt+F12 |
Сгенерировать Setter/Getters/ | 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 |
Переопределить метод родительского класса | Ctrl+O | Ctrl+O |
Удалить строку | Cmd+Backspace | Ctrl+Y |
Продублировать строку | Cmd+D | Ctrl+D |
Расширить/Уменьшить выделенное | Opt+Up/Down Arrow key | Shift +Ctrl+W |
Многострочное выделение [2] | Ctrl+G | Alt+J |
Полный список шорткатов | MacOSX [3] | Linux/Win [4] |
Template | Описание |
newInstance |
Генерирует статический метод `newInstance` внутри Фрагмента |
Toast |
Генерирует Toast.makeText(context, "", Toast.LENGTH_SHORT).show(); |
fbc |
findViewById с кастом к нужном типу View |
const |
Определить константу типа int |
logd |
Генерирует Log.d(TAG, ""); |
logm |
Вынести в лог текущее имя метода и его аргументы. |
logr |
Вынести в лог результат текущего метода |
logt |
Статическая строка TAG для лога, с текущим именем класса |
psf |
public static final |
sout |
Печатает строку в System.out |
soutm |
Печатает имя класса и имя метода в System.out |
soutp |
Печатает аргументы и значения метода в System.out |
visible |
Установить видимость View к VISIBLE |
gone |
Установить видимость View GONE |
noInstance |
Приватный конструктор без аргументов, чтобы запретить создание сущностей |
Полный список Live Templates в Android Studio [12]
В Android Studio/IntelliJ есть специальный механизм дополнения кода, который позволяет применить конструкцию к определённой переменной.
Template | Описание |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Полный список доступных постфиксных дополнений кода вы можете найти в Settings → Editor → Postfix Templates
Да, я осознаю, что это больше вопрос предпочтений. Однако поверьте мне, что использование тёмной темы сократит нагрузка на ваши глаза.
По возможности старайтесь использовать такой шрифт, который удобно читать и не доставляет дискомфорта для ваших глаз. Я использую Menlo font [13].
Вам следует использовать стандартный codestyle. Для примера посмотрите на AOSP Codestyle [14] или Square IntelliJ Codestyle [15]
Кроме использования реальных девайсов, вы также должны использовать эмуляторы ввиду простоты их настройки и использования. Также вы можете легко настраивать на них разрешение и версию API для тестирования. Genymotion [17], Intel эмулятора поставляемый вместе с SDK [18]
Это очень полезный инструмент, достойный отдельного упоминания. По сути, он позволяет стримить содержимое физического Android устройства на экран ноутбука. Очень удобно, когда вам нужно продемонстрировать демо вашего приложения на презентации. Мы можем взаимодействовать с реальным устройством, и всё это будет представлено прямо на экране ноутбука. Есть бесплатная и платная версии, и платная определённо стоит того, чтобы её купить.
Если вам необходимо манипулировать физическим Android устройством (используя клавиатуру и мышь), то это приложение замечательно с этим справится. Позволяет вам управлять вашим Android устройством, как если бы это была часть рабочего стола компьютера. Бесплатная версия [20] позволяет использовать мышь, Платная версия [21] позволяет использовать клавиатуру и другие возможности. С этим приложением можно тестировать приложение, не отрывая рук от клавиатуры ноутбука.
dependencies {
compile(name:'nameOfYourAARFileWithoutExtension', ext:'aar')
}
repositories {
flatDir {
dirs 'libs'
}
}
android {
...
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
android {
...
buildTypes {
release {
shrinkResources true
minifyEnabled true
...
}
}
}
adb shell am kill
Gradle memory >= Dex memory + 1Gb
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
}
}
./gradlew --refresh-dependencies
./gradlew clean build -x javaDoc
android {
buildTypes {
debug {
applicationIdSuffix '.debug'
versionNameSuffix '-DEBUG'
}
release {
// ...
}
}
}
./gradlew wrapper --gradle-version 3.1
— Установите опции сборки в глобальном в `gradle.properties` файле
android.enableBuildCache=true
./gradlew -stop
android.builder.sdkDownload=true
Это экспериментальная опция, и она загружает только build tools и platforms, но не обновляет Google или Support Repository [44]
Алиас | Использование |
|
|
|
|
|
|
|
|
|
|
//STOPSHIP
, добавьте в ваш `build.gradle`
android {
...
lintOptions {
abortOnError true
fatal 'StopShip'
}
}
Если у вас есть //STOPSHIP
комментарий в коде, релизная сборка не соберётся. Кроме этого, вы также можете включить в Android Studio подсветку таких комментариев (по умолчанию выключено). Preferences > Editor > Code Style > Inspections
. Ищите в поиске STOPSHIP и устанавливайте флажок для подсветки.
alfi $name_of_library$
Скопируйте нужную библиотеку.
Вставьте в ваш build.gradle.
dryrun $REMOTE_GIT_URL$
android {
...
testOptions.unitTests.all {
testLogging {
events 'passed', 'skipped', 'failed', 'standardOut', 'standardError'
outputs.upToDateWhen { false }
showStandardStreams = true
}
}
}
--offline
флаг говорит gradle, чтобы при сборке были использованы зависимости из кэша. Если запускать сборку с этим флагом, gradle никогда не попробует выкачать зависимости по сети. Если необходимые модули отсутствуют в кэше — приложение не соберётся
./gradlew assembleDevelopDebug --offline
./gradlew test --offline
Material Design использует физику реального мира как основу. Объекты в реальном мире не двигаются линейно, они двигаются по искривлённым траекториям а также с ускорением и замедлением в зависимости от ситуации.
Таким образом, вы должны манипулировать свойствами и анимировать объекты так, чтобы это выглядело натурально и естественно. Например машина, выезжающая за экран начинает движение медленно, постепенно ускоряясь по приближению к краю экрана. Аналогично ui элементы должны перемещаться используя такие классы как AccelerateInterpolator, FastOutSlowInInterpolator и другие [55].
В принципе, нестандартные шрифты можно использовать как часть брэндинга, однако лучше всё-таки остановиться на стандартных Roboto и Noto, если это возможно, в особенности для основного текста из-за их узнаваемости и частого использования.
Roboto покрывает Латинские, Греческие и Кириллические символы, Noto покрывает остальные языки [56].
Балансировка яркости шрифта — это один из наиболее важных параметров современной стилистики. Основная идея заключается в том, что чем меньше шрифт, тем более ярким он должен быть, и наоборот.
Сам текст должен быть выровнен по сетке с ячейкой 4dp.
Идеальная длина текста для больших блоков от 40 до 60 символов в строке.
Иконки должны быть размером 48dp c краями 1dp, что эквивалентно:
48px x 48px - mdpi
72px x 72px - hdpi
96px x 96px - xhdpi
144px x 144px - xxhdpi
192px x 192px - xxxhdpi
Дополнительная иконка с размером 512px x 512px должна быть предоставлена для Google Play.
То же касается иконки с размером 1024px x 500px, которая будет отображаться в шапке на странице вашего приложения.
Когда реализуете Ripple эффект, используйте ?attr/selectableItemBackground
вместо ?android:attr
, подробнее [57].
Когда реализуете Ripple эффект на элементе как Button используйте [58]:
android:background="?attr/selectableItemBackground"
Когда реализуете Ripple, который выходит за края View, как например у ImageView , используйте [59]:
?attr/selectableItemBackgroundBorderless
Элементы в соответствии с Material Design Views должны быть расположены на сетке с ячейкой размерами 8dp, если это возможно. Благодаря этому подходу UI выглядит структурированным и приятным [60].
Если вам нужна ссылка на какой-нибудь элемент ViewGroup (LinearLayout, FrameLayout, RelativeLayout, etc.) и вам не нужны никакие специфичные методы именно для этого типа ViewGroup, то не храните конкретный тип, используйте просто ViewGroup [61].
Все примеры, перечисленные ниже, тем или иным образом позволяют тестировать ваше приложение без бэкенда. Если понадобится воспользоваться, пробегитесь по списку и посмотрите, какой из пунктов максимально удовлетворяет вашим запросам и потребностям по функционалу.
Автор: ANublo
Источник [120]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/android-development/233806
Ссылки в тексте:
[1] оригинал: https://github.com/nisrulz/android-tips-tricks
[2] Многострочное выделение: https://android.jlelse.eu/ctrl-g-d94c88cd4475#.55flqgkb3
[3] MacOSX: https://resources.jetbrains.com/assets/products/intellij-idea/IntelliJIDEA_ReferenceCard_mac.pdf
[4] Linux/Win: https://resources.jetbrains.com/assets/products/intellij-idea/IntelliJIDEA_ReferenceCard.pdf
[5] KeyPromoter: https://plugins.jetbrains.com/plugin/4455
[6] String Manipulation: https://plugins.jetbrains.com/plugin/2162
[7] Lines Sorter: https://plugins.jetbrains.com/plugin/5919
[8] Findbugs: https://plugins.jetbrains.com/plugin/3847?pr=idea
[9] Sonar Lint: https://plugins.jetbrains.com/plugin/7973
[10] Checkstyle: https://plugins.jetbrains.com/plugin/1065
[11] ADB Idea: https://plugins.jetbrains.com/plugin/7380
[12] Полный список Live Templates в Android Studio: https://github.com/keyboardsurfer/idea-live-templates
[13] Menlo font: https://en.wikipedia.org/wiki/Menlo_(typeface)
[14] AOSP Codestyle: https://source.android.com/source/code-style.html
[15] Square IntelliJ Codestyle: https://github.com/square/java-code-styles
[16] Встроенный терминал в Android Studio: https://www.jetbrains.com/help/idea/2016.2/working-with-embedded-local-terminal.html
[17] Genymotion: https://www.genymotion.com/
[18] Intel эмулятора поставляемый вместе с SDK: https://developer.android.com/studio/run/emulator.html
[19] Vysor: http://www.vysor.io/
[20] DeskDock: https://play.google.com/store/apps/details?id=com.floriandraschbacher.deskdock.free
[21] Платная версия: https://play.google.com/store/apps/details?id=com.floriandraschbacher.deskdock.pro
[22] определённое число багов: https://android-developers.blogspot.in/2011/09/androids-http-clients.html
[23] Okhttp: https://square.github.io/okhttp/
[24] Анонс Okhttp: https://corner.squareup.com/2013/05/announcing-okhttp.html
[25] следующим образом: http://stackoverflow.com/a/28816265/2745762
[26] Pidcat: https://github.com/JakeWharton/pidcat
[27] git: https://git-scm.com/
[28] ClassyShark: https://github.com/google/android-classyshark
[29] Stetho: https://github.com/facebook/stetho
[30] Battery Historian: https://github.com/google/battery-historian
[31] Handler вместо TimerTask: http://www.mopri.de/2010/timertask-bad-do-it-the-android-way-use-a-handler/
[32] Не используйте ваш личный персональный email для публикации приложений: https://www.reddit.com/r/Android/comments/2hywu9/google_play_only_one_strike_is_needed_to_ruin_you/
[33] Для симуляции убийства системой вашего приложения в бэкграунде: https://twitter.com/Jahnold/status/759775495655333888
[34] для ускорения сборки gradle: https://medium.com/@skaliakoudas/decreasing-build-times-by-decreasing-gradle-memory-requirements-7fcafc6d98ea#.otnm0ofb6
[35] Больше различных gradle трюков: https://github.com/shekhargulati/gradle-tips
[36] Разделяйте пакеты по фичам, а не по слоям: https://medium.com/the-engineering-team/package-by-features-not-layers-2d076df1964d
[37] Научитесь решать конфликты зависимостей: http://crushingcode.co/the-curious-case-of-dependency-conflicts/
[38] официальная документация: https://docs.gradle.org/current/dsl/org.gradle.api.artifacts.ResolutionStrategy.html
[39] Проверьте наличие и устраните утечки памяти в вашем android приложении: http://blog.nimbledroid.com/2016/09/06/stop-memory-leaks.html
[40] Используйте стандартное наименование для ваших ресурсов: http://jeroenmols.com/blog/2016/03/07/resourcenaming/
[41] Пост на reddit, который содержит множество полезных gradle скриптов: https://www.reddit.com/r/androiddev/comments/3ig3gm/show_us_your_gradle_tasks
[42] этот: https://github.com/nisrulz/android-tips-tricks/blob/master/android.gitignore
[43] Используйте LeakCanary чтобы обнаруживать утечки памяти в вашем приложении: https://github.com/square/leakcanary
[44] но не обновляет Google или Support Repository: https://code.google.com/p/android/issues/detail?id=212309
[45] JCenter включает в себя MavenCentral: https://twitter.com/molsjeroen/status/791606774210199553
[46] терминала: https://medium.com/@jonfhancock/bash-your-way-to-better-android-development-1169bc3e0424#.8zcc4m5ch
[47] если код содержит //STOPSHIP: https://www.reddit.com/r/androiddev/comments/5c8b0a/i_know_android_studio_allows_you_to_make_custom/d9uhdzt/
[48] перечисленные в манифесте: https://developer.android.com/studio/command-line/adb.html
[49] Alfi: https://github.com/cesarferreira/alfi
[50] Gradle, please: http://gradleplease.appspot.com
[51] Dryrun: https://github.com/cesarferreira/dryrun
[52] напрямую в консоль: https://medium.com/@cesarmcferreira/mastering-the-terminal-side-of-android-development-e7520466c521#.1cw4bto7f
[53] Logger: https://github.com/nisrulz/android-tips-tricks/blob/develop/Logger.java
[54] , как это делает Firebase: https://firebase.googleblog.com/2016/12/how-does-firebase-initialize-on-android.html
[55] другие: https://developer.android.com/reference/android/animation/TimeInterpolator.html
[56] остальные языки: https://material.google.com/style/typography.html#
[57] подробнее: https://twitter.com/pareshmayani/status/772061422729637893
[58] используйте: https://twitter.com/pareshmayani/status/772268888931176448
[59] , используйте: https://twitter.com/pareshmayani/status/772269413290520576
[60] выглядит структурированным и приятным: https://material.google.com/layout/metrics-keylines.html
[61] используйте просто ViewGroup: https://android.jlelse.eu/android-pro-tip-1-443f423b4de6#.pklc9djmc
[62] Fragmented: http://fragmentedpodcast.com/
[63] Android Developers Backstage: https://androidbackstage.blogspot.in/
[64] Русскоязычный подкаст: http://androiddev.apptractor.ru/
[65] Player.fm: https://player.fm/
[66] приложение: https://play.google.com/store/apps/details?id=fm.player&hl=en
[67] Краткие android видео интервью с экспертами: https://www.youtube.com/channel/UCMEmNnHT69aZuaOrE-dF6ug/feed
[68] CodePath Android Cliffnotes: https://guides.codepath.com/android
[69] Позаботьтесь о копирайте: http://jeroenmols.com/blog/2016/08/03/copyright/
[70] Android Arsenal: https://android-arsenal.com/
[71] Множество простых изолированных примеров построения различных компонент: https://github.com/nisrulz/android-examples
[72] Примеры приложений, предоставляемых Google: https://github.com/googlesamples
[73] Google Android Codelabs: https://codelabs.developers.google.com/?cat=Android
[74] для своего обучения: https://twitter.com/search?q=%23AndroidDev
[75] Android Developers — Youtube: https://www.youtube.com/user/androiddevelopers/videos
[76] Android Niceties — UI Showcase: http://androidniceties.tumblr.com/
[77] Material Design Specs: https://material.google.com/
[78] Everything About Material Design: https://material.io/
[79] Platform Version Distribution: https://developer.android.com/about/dashboards/index.html#Platform
[80] Android Studio Release Notes: https://sites.google.com/a/android.com/tools/recent
[81] Android Developers Blog: https://android-developers.blogspot.in/
[82] AndroidDev-Reddit: https://www.reddit.com/r/androiddev
[83] Github Trending Java Projects: https://github.com/trending?l=java&since=weekly
[84] Stackoverflow-Android tag: https://stackoverflow.com/questions/tagged/android
[85] Support Library History: https://developer.android.com/topic/libraries/support-library/revisions.html
[86] Android Conferences: https://androidstudygroup.github.io/conferences/
[87] Android Dev Docs: https://developer.android.com/reference/packages.html
[88] Material Up — DesignShowcase: http://www.material.uplabs.com/
[89] Dribbble — MaterialDesignShowcase: https://dribbble.com/tags/material_design
[90] Mockey: https://github.com/clafonta/Mockey
[91] JSON Placeholder: http://jsonplaceholder.typicode.com/
[92] API Studio: http://apistudio.io/
[93] Mocky: http://www.mocky.io/
[94] Mockbin: http://mockbin.com
[95] Android Weekly: http://androidweekly.net/
[96] AndroidDevDigest: https://www.androiddevdigest.com/
[97] Infinium AndroidSweets: https://androidsweets.ongoodbits.com/
[98] Kotlin Weekly: http://us12.campaign-archive2.com/home/?u=f39692e245b94f7fb693b6d82&id=93b2272cb6
[99] Android SVG to VectorDrawable: https://inloop.github.io/svg2android/
[100] SQLite Viewer: https://inloop.github.io/sqlite-viewer/
[101] Android 9-patch shadow generator: https://inloop.github.io/shadow4android/
[102] APK method count: https://inloop.github.io/apk-method-count/
[103] Material Palette: https://www.materialpalette.com/
[104] Javadoc Themer: http://javadocthemer.crushingcode.co/
[105] Method Count: http://www.methodscount.com/
[106] Gradle, please: https://gradleplease.appspot.com/
[107] jsonschema2pojo: http://www.jsonschema2pojo.org/
[108] Android Asset Studio: https://developer.android.com/distribute/tools/promote/device-art.html
[109] EasyDeviceInfo: https://github.com/nisrulz/easydeviceinfo
[110] Sensey: https://github.com/nisrulz/Sensey
[111] PackageHunter: https://github.com/nisrulz/PackageHunter
[112] Zentone: https://github.com/nisrulz/zentone
[113] RecyclerViewHelper: https://github.com/nisrulz/recyclerviewhelper
[114] StackedHorizontalProgressbar: https://github.com/nisrulz/stackedhorizontalprogressbar
[115] QREader: https://github.com/nisrulz/qreader
[116] ScreenShott: https://github.com/nisrulz/screenshott
[117] EvTrack: https://github.com/nisrulz/EvTrack
[118] OptimusHTTP: https://github.com/nisrulz/OptimusHTTP
[119] ShoutOut: https://github.com/nisrulz/ShoutOut
[120] Источник: https://habrahabr.ru/post/319562/?utm_source=habrahabr&utm_medium=rss&utm_campaign=best
Нажмите здесь для печати.