[ About | Licence | Contacts ]
Written by Oleksandr Gavenko (AKA gavenkoa), compiled on 2024-04-01 from rev 052223c22317.

Android.

Official docs

http://developer.android.com/sdk/index.html
Get the Android SDK
http://developer.android.com/guide/index.html
Introduction to Android
https://android.googlesource.com/platform/system/core/+/master/init/readme.txt
init.rd file syntax.

Getting tools

https://developer.android.com/studio/releases/platform-tools.html
SDK Platform Tools (includes adb and fastboot) download and rellease changelog.
https://developer.android.com/studio/index.html
Android Studio (official IDE for Android) and sdk-tools (includes sdkmanager).

Android emulator

Intel provided images and hypervisor to run x86 Android port with acceleration:

https://software.intel.com/en-us/articles/intel-hardware-accelerated-execution-manager-intel-haxm
Intel® Hardware Accelerated Execution Manager (Intel® HAXM). It is available from SDK manager also.

It starts service. To manage service use:

sc stop intelhaxm
sc start intelhaxm

Android stats

CPU:

$ cat /proc/cpuinfo
$ cat /proc/cpufreq/cpufreq_freq

Memory:

$ cat /proc/meminfo

Android API levels.

http://developer.android.com/guide/topics/manifest/uses-sdk-element.html
"Platform Version / API Level" table.

Package repositories.

https://play.google.com/
Google package repository.
https://f-droid.org/
Free software repository.
http://www.appbrain.com/
AppBrain, alternative catalog to Google Play. Packages is backed via lisnk to Google Play.

Link to package description page:

https://play.google.com/store/apps/details?id=com.google.android.talk

See also:

http://android.stackexchange.com/questions/216/what-are-the-alternative-android-app-markets/
What are the alternative Android app markets?

Mods.

http://xda-university.com/
How to mod.
http://www.cyanogenmod.org/about
CyanogenMod
https://www.clockworkmod.com/
ClockworkMod

Connect to Android via USB by adb in Linux

Add udev rule for fix permission issues:

$ cat /etc/udev/rules.d/90-android.rules

# Standard Google device.
SUBSYSTEM=="usb", ATTR{idVendor}=="0bb4", ATTR{idProduct}=="0c03", MODE="0666", GROUP="plugdev"
# China N101 II
SUBSYSTEM=="usb", ATTR{idVendor}=="2207", ATTR{idProduct}=="0010", MODE="0666", GROUP="plugdev"

Reload udev rules and re-plug device via USB:

$ sudo service udev force-reload

See:

http://developer.android.com/tools/device.html
Setting up a Device for Development.

Connect to Android via USB by adb in Windows

Get latest official Google drivers from:

https://developer.android.com/studio/run/win-usb.html
Get the Google USB Driver.

If your device isn't in official list you can try to find driver in Windows update catalog at http://www.catalog.update.microsoft.com.

Use search by vendor or device name, or string adb. Alternatively use hardware id.

BTW older version of official Google drivers are also in Windows update catalog.

Most probably you will fail to find drivers for numerous Chinese/noname Android devices. We can reuse official Google drivers. To do that:

Note

As you see Google's adb driver works fine with any Android phone. It's Microsoft policy to forbid class drivers so each vendor is required to provide same driver with different hardware ID and to pay money for Windows Logo® program and signing process.

Tip

bcdedit can be run with alternative options:

cmd# bcdedit.exe /set nointegritychecks on
cmd# bcdedit.exe /set nointegritychecks off

Recovery

To enter phone to recovery mode press VolumeDown``+``Power button or:

adb reboot recovery

See:

http://teamw.in/project/twrp2
Custom recovery built.

ADB tips

List available devices:

$ adb devices

Install an app from .apk file:

$ adb install /path/to/application.apk

Re-install an app from .apk file (avoids the error INSTALL_FAILED_ALREADY_EXISTS if the app is alreay installed):

$ adb install -f /path/to/application.apk

List installed package names (with path to .apk files!):

$ adb shell 'pm list packages -f'
$ adb shell 'cmd package list packages -f'

Uninstall application by its package name:

$ adb uninstall NAME

Uninstall an app but preserve data (for later install):

$ adb uninstall -k NAME

Disable/enable application:

$ adb shell pm disable PACKAGE_NAME
$ adb shell pm enable PACKAGE_NAME

List of disabled packages:

$ adb shell pm list packages -d

List of application properties (version, permissions, etc):

$ adb shell dumpsys package $PKG

List currently run activities:

$ adb shell 'dumpsys activity'

Find activities from package:

$ adb shell 'pm list packages -f'
$ adb pull APK_FROM_LIST
$ aapt dump badging APK_FILE

Start an activity:

$ adb shell am start PACKAGE_NAME/ACTIVITY_IN_PACKAGE
$ adb shell am start PACKAGE_NAME/FULLY_QUALIFIED_ACTIVITY

Start an activity with action filter:

android# am start -a com.example.ACTION_NAME -n com.package.name/com.package.name.ActivityName

List of running processes:

$ adb shell ps

or (supported arguments user,group,comm,args,pid,ppid,pgid,etime,nice,rgroup,ruser,time,tty,vsz,stat,rss):

$ adb shell
% ps -o pid,user,group,rss,vsz,args

To kill process:

$ adb shell ps | grep $REGEX
$ adb shell kill $PID

To stop application:

$ adb shell am kill com.google.android.contacts
$ adb shell am force-stop com.google.android.contacts

Take a screenshort:

$ adb shell screencap -p | perl -pe 's/\x0D\x0A/\x0A/g' > screen.png

Power button:

$ adb shell input keyevent 26

Unlock screen:

$ adb shell input keyevent 82

Show system log:

$ adb logcat
$ adb logcat "*:W"

logcat

Get help:

adb logcat --help

Clean log:

adb logcat -c

Log to file:

adb logcat -f my.log

dumpsys

Info from all services:

$ adb shell dumpsys

List of available services:

$ adb shell service list

Info from concrete service:

$ adb shell dumpsys phone
$ adb shell dumpsys diskstats
$ adb shell dumpsys usb
$ adb shell dumpsys activity
$ adb shell dumpsys package
$ adb shell dumpsys display
$ adb shell dumpsys gfxinfo
$ adb shell dumpsys power
$ adb shell dumpsys battery
$ adb shell dumpsys batteryinfo
$ adb shell dumpsys cpuinfo
$ adb shell dumpsys dbinfo
$ adb shell dumpsys meminfo
$ adb shell dumpsys account
$ adb shell dumpsys netstats

List partition

List partitions (with sizes):

android# cat /proc/partitions
android# cat /proc/mtd

List mounted file systems:

android# mount
android# df

Remount /system as RW

Usually with:

$ adb remount

If you have root but above command fail:

$ adb shell
android# su
android# mount | grep /system
...
android# mount -o remount,rw /system

Working with apk files

Getting package name, version, API requirements and permissions:

$ aapt dump badging $FILE.apk

Controlling Android from PC

Show screencast from Android.

http://droid-at-screen.org/
Easily show the screen of an Android device on a computer/laptop (PC, Mac, Linux, ...) and then project the desktop using a LCD-projector.
http://droid-at-screen.ribomation.com/
Old DNS name.