iegik
7/25/2017 - 11:37 AM

Android

Android

ADB

connect via TCP/IP

adb -s <device_name> tcpip 5555

shell

adb -s <device_name> shell

List third-party packages

adb shell pm list packages -3
adb shell cmd package list packages -3

List permissions of the app

adb shell dumpsys package <packagename>

Run application

am start -n <package-name>/<package-name>.MainActivity

Run commmand beside app permissions

run-as <package-name> <command>

Problems

  • INSTALL_FAILED_USER_RESTRICTED - Turn On "Install via USB"
  • INSTALL_FAILED_UPDATE_INCOMPATIBLE - adb install -r -t -d <apk> -r: replace existing application -t: allow test packages -d: allow version code downgrade (debuggable packages only) -p: partial application install (install-multiple only) -g: grant all runtime permissions
  • Network Response Timeout
adb -s <device name> reverse tcp:8081 tcp:8081
adb -s <device name> reverse --remove-all

5.1.1

  permission:android.permission.ACCESS_COARSE_LOCATION
  permission:android.permission.ACCESS_FINE_LOCATION
  permission:android.permission.ACCESS_MOCK_LOCATION
  permission:android.permission.AUTHENTICATE_ACCOUNTS
  permission:android.permission.BLUETOOTH
  permission:android.permission.BLUETOOTH_ADMIN
  permission:android.permission.CALL_PHONE
  permission:android.permission.CAMERA
  permission:android.permission.CHANGE_WIFI_MULTICAST_STATE
  permission:android.permission.CHANGE_WIFI_STATE
  permission:android.permission.CHANGE_WIMAX_STATE
  permission:android.permission.CLEAR_APP_CACHE
  permission:android.permission.DISABLE_KEYGUARD
  permission:android.permission.INTERNET
  permission:android.permission.LGT_CONTENTS
  permission:android.permission.MANAGE_ACCOUNTS
  permission:android.permission.NFC
  permission:android.permission.NFC_TRANSACTION
  permission:android.permission.PROCESS_OUTGOING_CALLS
  permission:android.permission.READ_CALENDAR
  permission:android.permission.READ_CALL_LOG
  permission:android.permission.READ_CELL_BROADCASTS
  permission:android.permission.READ_CONTACTS
  permission:android.permission.READ_PHONE_STATE
  permission:android.permission.READ_PROFILE
  permission:android.permission.READ_SMS
  permission:android.permission.READ_SOCIAL_STREAM
  permission:android.permission.READ_USER_DICTIONARY
  permission:android.permission.RECEIVE_MMS
  permission:android.permission.RECEIVE_SECURITY_SMS
  permission:android.permission.RECEIVE_SMS
  permission:android.permission.RECEIVE_WAP_PUSH
  permission:android.permission.RECORD_AUDIO
  permission:android.permission.SEND_SMS
  permission:android.permission.SUBSCRIBED_FEEDS_WRITE
  permission:android.permission.SYSTEM_ALERT_WINDOW
  permission:android.permission.USE_CREDENTIALS
  permission:android.permission.USE_SIP
  permission:android.permission.WRITE_CALENDAR
  permission:android.permission.WRITE_CALL_LOG
  permission:android.permission.WRITE_CONTACTS
  permission:android.permission.WRITE_EXTERNAL_STORAGE
  permission:android.permission.WRITE_PROFILE
  permission:android.permission.WRITE_SMS
  permission:android.permission.WRITE_SOCIAL_STREAM

Команды перезагрузки в режим прошивки (bootloader)

Перезагрузка Android в режим загрузки (bootloader), данная команда работает если устройство включено в обычном режиме:

adb reboot bootloader

Перезагрузка Android в обычный режим из режима прошивки (bootloader):

fastboot reboot

Перезагрузка Android из режима прошивки (bootloader) в этот же режим:

fastboot reboot-bootloader

Команда «видит» ли ПК ваш Android

Возьмите в привычку проверять перед тем как что-то делать в Fastboot если соединение между компьютером и Android:

Проверка «видит ли» ПК ваш Android:

fastboot devices

Данную команду выполнять когда устройство уже в режиме прошивке (bootloader)Прошить Android с помощью FastBoot

Команды разблокировки и блокировки загрузчика Nexus

Разлочить bootloader для Nexus:

fastboot oem unlock

или

fastboot flashing unlock

Залочить bootloader для Nexus:

fastboot oem lock

Команда узнать версию bootloader

Покажет установленную на Android номер версии бутлоадер:

fastboot getvar version-bootloader

Команды форматирования раздела

Перед тем как прошить какой либо раздел в Android, вначале его необходимо отформатировать для того чтобы не возникло проблем в работе fastboot erase Imya_razdela — стереть раздел: boot, radio, recovery, system, userdata и другие.

Стирает раздел Кеш (Cache):

fastboot erase cache

Стирает раздел Дата (Data/UserData):

fastboot erase userdata

или

fastbot -w

Стирает раздел Систем (System):

fastboot erase system

Стирает раздел Recovery:

fastboot erase recovery

dfastcach1

Команды для прошивки разделов Android

После того как выполнили форматирование раздела или разделов, можете приступить к прошивке:

fastboot flash Imya_razdela imya_file.img # прошивка выбранного раздела: boot, radio, recovery, system, userdata и другие.

Прошить раздел системы (System):

fastboot flash system imya.img

Прошить раздел кеш (Cache):

fastboot flash cache imya.img

Прошить раздел дата (Data):

fastboot flash userdata imya.img

Прошить раздел Recovery:

fastboot flash recovery imya.img

Прошить Android c помощью FastBoot

Установка анимации включения (прошивка раздела с анимацией):

fastboot flash splash1 splash.img

Прошить все разделы (boot, recovery и system):

fastboot flashall

Вместо imya.img — необходимо прописывать имя файла которые вы собираетесь прошить

Команда для установки update.zip

Прошивает на Android архив-обновление в формате update.zip или архив ZIP с IMG образами различных разделов:

fastboot update имя_файла.zip

Для устройств Sony

Проверка подключения устройства Sony, если ответ 0.3 устройство, то тогда подключено:

fastboot -i 0x0fce getvar version

Разблокировка bootloader

fastboot -i 0x0fce oem unlock 0xПолученый_Ключ

Более детальная информация по разблокировке Bootloader Sony — Как разблокировать Bootloader Sony

Ошибка Waiting for Device

Если у вас долгое время в командном окне горит надпись waiting for device — значит:

Не установлен или некорректно установлен драйвер — переустановить или установить Устройство Android не в режиме Bootloader — перевести Некорректное подключение к USB порту — использовать задние порты USB 2.0 компьютера, не использовать USB хабы Более подробно о данной ошибке «Waiting for Device» читайте в специальной посвященной этому статье Waiting for Device.

Flashing

Enable root flag: ##7378423##

Unlock by IMAY: https://developer.sonymobile.com/unlockbootloader/

f that fails 1: Flash boot.img in fastboot & reboot into recovery 2 (optional): If the device is not booting, reboot to bootloader again and run: fastboot erase system fastboot erase userdata 3: Enter recovery, go to mounts and storage 4: Format /system, then /data and then /cache (Important step!)

Enter Recovery Mode

  • SM-A300F - Volume Up + Home + Power

https://desktop.firmware.mobi/

  • Android 15 (beta)

  • Android 14 (stable)

    targetSdk will need to be 34+ for new apps and app updates by August 31, 2024.

  • Android 13 (LTS)

    targetSdk must be 33+ for new apps and app updates since August 31, 2023.

  • Android 12 (legacy)

    targetSdk 31+

https://endoflife.date/android

CodenameVersionAPI level/NDK releaseLTS
Baklava16API level 36latest
Vanilla Ice Cream15API level 35LTS
Updide Down Cake14API level 34LTS
Tiramisu13API level 33legacy
Snow Cone v212API level 32
Snow Cone12API level 31
Red Velvet Cake11API level 30
Quince Tart10API level 29
Pie9API level 28
Oreo8.1.0API level 27
Oreo8.0.0API level 26
Nougat7.1API level 25
Nougat7.0API level 24
Marshmallow6.0API level 23
Lollipop5.1API level 22
Lollipop5.0API level 21
KitKat4.4 - 4.4.4API level 19
Jelly Bean4.3.xAPI level 18
Jelly Bean4.2.xAPI level 17
Jelly Bean4.1.xAPI level 16
Ice Cream Sandwich4.0.3 - 4.0.4API level 15, NDK 8
Ice Cream Sandwich4.0.1 - 4.0.2API level 14, NDK 7
Honeycomb3.2.xAPI level 13
Honeycomb3.1API level 12, NDK 6
Honeycomb3.0API level 11
Gingerbread2.3.3 - 2.3.7API level 10
Gingerbread2.3 - 2.3.2API level 9, NDK 5
Froyo2.2.xAPI level 8, NDK 4
Eclair2.1API level 7, NDK 3
Eclair2.0.1API level 6
Eclair2.0API level 5
Donut1.6API level 4, NDK 2
Cupcake1.5API level 3, NDK 1
(no codename)1.1API level 2
(no codename)1.0API level 1

Java

CodenameVersionLTS
Java 2565RC
Java 2465
Java 2365
Java 2265latest
Java 2165LTS
Java 2064
Java 1963
Java 1862
Java 1761LTS
Java 1660
Java 1559
Java 1458
Java 1357
Java 1256
Java 1155LTS (preffered)
Java 1054
Java 953
Java 852EOL
Java 751
Java 650
Java 549

-https://www.jenv.be/-

For React Native apps use OpenJDK (AdoptOpenJDK/Eclipse Adoptium)

brew install openjdk@11

  • Why?: OpenJDK is the open-source reference implementation of the Java platform, and AdoptOpenJDK (now part of Eclipse Adoptium) provides well-maintained, free builds of OpenJDK. It’s widely used in the development community, including for Android development, which is integral to React Native.
  • Version: For React Native, Java 11 is typically recommended. It's compatible with Android development tools, and AdoptOpenJDK provides long-term support (LTS) versions, making it a stable choice.
  • Ease of Setup: AdoptOpenJDK is easy to install and integrate with Android Studio, which is often used alongside React Native for Android development.

Ruby

VersionLTS
ruby-3.4.0RC
ruby-3.3.4latest
ruby-3.1.6LTS
ruby-3.0.7EOL

Install Play Store

  1. Download a Open GApps zip file from the site.
unzip open_gapps-*.zip 'Core/*'
rm Core/setup*
lzip -d Core/*.lz
for f in $(ls Core/*.tar); do
  tar -x --strip-components 2 -f $f
done
  1. Start emulator in write mode
$ANDROID_HOME/tools/emulator @... -writable-system &
  1. Install packages
$ANDROID_HOME/platform-tools/adb root
$ANDROID_HOME/platform-tools/adb remount
$ANDROID_HOME/platform-tools/adb push etc /system
$ANDROID_HOME/platform-tools/adb push framework /system
$ANDROID_HOME/platform-tools/adb push app /system
$ANDROID_HOME/platform-tools/adb push priv-app /system
  1. Restart
$ANDROID_HOME/platform-tools/adb shell stop
$ANDROID_HOME/platform-tools/adb shell start
  1. Stop the emulator and start it again in write mode (2.).
  2. Then, stop it and start it again normally.
$ANDROID_HOME/tools/emulator @... &

Works on Android Pie

Optimize Android for Kiosk-mode

Connect to device

adb -s <device name> shell

Get info

getprop ro.build.version.release

Disable animations (biggest visible speed boost)

settings put global window_animation_scale 0
settings put global transition_animation_scale 0
settings put global animator_duration_scale 0

Stay awake

settings put system screen_off_timeout 2147483647
svc power stayon true

Remove bloatware

pm list packages
pm uninstall --user 0 com.google.android.youtube
pm uninstall --user 0 com.google.android.music
pm uninstall --user 0 com.google.android.videos
pm uninstall --user 0 com.facebook.katana
pm uninstall --user 0 com.facebook.system

Safe to disable

pm disable-user --user 0 <package>

# Unwanted
com.google.android.youtube
com.google.android.videos
com.spotify.music
com.samsung.android.video
com.samsung.android.music

# printing
com.android.bips # Android Built-In Print Service
com.android.printspooler
com.android.dreams # Android screensaver
com.android.dreams.basic
com.android.dreams.phototable
com.android.wallpaper.livepicker

# Samsung extras
com.samsung.android.game.gos
com.samsung.android.kidsinstaller
com.samsung.android.forest
com.samsung.android.app.dressroom
com.samsung.android.livestickers
com.samsung.android.dynamiclock
com.samsung.android.homemode

# Voice / search / assistants
com.google.android.googlequicksearchbox
com.samsung.android.app.settings.bixby
com.samsung.android.bixby.service

# Sharing / cloud / personal features
com.samsung.android.privateshare
com.samsung.android.app.simplesharing
com.samsung.android.allshare.service.fileshare
com.samsung.android.allshare.service.mediashare
com.samsung.android.scloud

# Diagnostics / telemetry (safe on kiosk)
com.android.traceur
com.google.android.feedback
com.google.mainline.telemetry
com.samsung.android.securitylogagent
com.samsung.android.knox.analytics.uploader

Limit up to 1 app running

settings put global background_process_limit 1

Hide some UI

settings put secure show_ime_with_hard_keyboard 0
# settings put secure doze_enabled 0 # Power-saving mode when device is idle
settings put global device_idle_constants inactive_to=600000

Lock CPU performance (no root version)

cmd power set-fixed-performance-mode-enabled true

Disable notifications globally (kiosk style)

settings put global heads_up_notifications_enabled 0
cmd notification set_dnd true
Error occurred. Check logcat for details. Invalid filter: 0

Kiosk app

Add to whitelist

dumpsys deviceidle whitelist +<com.your.kiosk.app>
cmd appops set com.your.kiosk.app RUN_IN_BACKGROUND allow

Lock app in foreground (optional but powerful)

am set-inactive com.your.kiosk.app false

Diagnostics

# Check RAM
dumpsys meminfo

# Check running processes
top -m 10

# Reboot
adb reboot

Rollback

svc power stayon false
settings put system screen_off_timeout 600000  # 10 minutes
settings put secure doze_enabled 1
settings put global animator_duration_scale 1
settings put global heads_up_notifications_enabled 1
settings put global transition_animation_scale 1
settings put global window_animation_scale 1
settings put global zen_mode 0
settings delete global background_process_limit
pm enable com.android.bips
pm enable com.android.dreams
pm enable com.android.printspooler
cmd package install-existing com.google.android.youtube
cmd power set-fixed-performance-mode-enabled false
cmd notification set_dnd false

All actions rollback table:

userollback
settings put global <key> <value>-//-
pm uninstall --user 0 <package>cmd package install-existing <package>
pm disable-user --user 0 <package>pm enable <package>