android.rst
author Oleksandr Gavenko <gavenkoa@gmail.com>
Mon, 30 Jan 2017 00:44:30 +0200
changeset 2075 ccaa2f364422
parent 2051 b517b191156b
child 2121 b6f9485fad08
permissions -rw-r--r--
Improve page formatting.

.. -*- coding: utf-8; -*-

==========
 Android.
==========
.. contents::
   :local:

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.

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.
==================================

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.

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 application from ``.apk`` file::

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

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

  $ adb shell 'pm list packages -f'

Uninstall application by its package name::

  $ adb uninstall PACKAGE_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"

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

* https://source.android.com/devices/tech/debug/dumpsys.html
* http://stackoverflow.com/questions/11201659/whats-the-android-adb-shell-dumpsys-tool-and-what-are-its-benefits

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.
============================

 * http://code.google.com/p/androidscreencast/
 * http://code.google.com/p/android-screen-monitor/
 * http://androidwebkey.com/

Show screencast from Android.
=============================

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