From dd953e097a9693c0b0e5aacc0bb5e960b4cfb8b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9sar=20D=C3=ADez=20S=C3=A1nchez?= Date: Thu, 12 Nov 2015 10:14:19 +0100 Subject: [PATCH 01/26] Update README.md add new permissions section --- README.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/README.md b/README.md index d40c1fe..f15c181 100644 --- a/README.md +++ b/README.md @@ -30,6 +30,7 @@ - __Retrieve application's private data and databases for non debug application without root access__ - __Indentify Frame Rate Issues (Dumpsys)__ - __Use ADB over Wi-Fi without extra application or software__ + - __Test new Marshmallow permissions__ - __AAPT__ - __Check Permissions in order to avoid Play Store app filtering__ @@ -376,6 +377,18 @@ Use following command to change ADB mode to USB $ adb usb ``` + +#### Test new Marshmallow permissions + +In order to test permissions targeting API 23+, we could use following commands to programatically grant and revoke permissions on the device: +```sh +$adb pm grant +``` +or +```sh +$adb pm revoke +``` +
From 9852abf379aa3e4e89989e69ff7ab0e28b7b3613 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9sar=20D=C3=ADez=20S=C3=A1nchez?= Date: Fri, 29 Jan 2016 16:44:50 +0000 Subject: [PATCH 02/26] Update README.md --- README.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/README.md b/README.md index f15c181..4354f90 100644 --- a/README.md +++ b/README.md @@ -27,6 +27,7 @@ - __See the executed SQL statements in plain text in Logcat__ - __Testing - Execute Monkey to test user interaction__ - __Find out processor version on Android Device (check if it's an ARM, for example)__ + - __Find out Application Binary Interface (ABI) in different devices__ - __Retrieve application's private data and databases for non debug application without root access__ - __Indentify Frame Rate Issues (Dumpsys)__ - __Use ADB over Wi-Fi without extra application or software__ @@ -284,6 +285,14 @@ Complete information at http://developer.android.com/tools/help/monkey.html $ adb shell cat /proc/cpuinfo ``` + +#### Find out Application Binary Interface (ABI) in different devices + +__ABI__ (Application Binary Interface) is gonna tell us if an Android device support 64-bit. So using the next command the developer know if the device is __32-bit__ or __64-bit__ based. +```sh +$ adb shell getprop ro.product.cpu.abi\ +``` + #### Retrieve application's private data and databases for non debug application without root access From 20998745a995cf0f0e5ad8f5a992348de5a822b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9sar=20D=C3=ADez=20S=C3=A1nchez?= Date: Sun, 3 Apr 2016 22:04:28 +0100 Subject: [PATCH 03/26] Update README.md --- README.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/README.md b/README.md index 4354f90..0eca918 100644 --- a/README.md +++ b/README.md @@ -16,6 +16,7 @@ - __Power button__ - __Unlock screen__ - __Print all installed packages__ + - __Get the path of an installed application__ - __Simulate application being killed__ - __Screen recording using Android 4.4__ - __Check battery stats__ @@ -172,6 +173,13 @@ $ adb shell inout text "KEYCODE_POWER" "KEYCODE_MENU" $ adb shell pm list packages -f ``` + +#### Get the path of an installed application + +```sh +$ adb shell pm path app.package.application-name +``` + #### Simulate application being killed From 0cefd700c3825b5ebe759e1b01e89a4b76eca8ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9sar=20D=C3=ADez=20S=C3=A1nchez?= Date: Sun, 3 Apr 2016 22:07:29 +0100 Subject: [PATCH 04/26] Update README.md --- README.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/README.md b/README.md index 0eca918..20f1a5a 100644 --- a/README.md +++ b/README.md @@ -12,6 +12,7 @@ - __Install an application__ - __Uninstall an application__ - __Start an Activity__ + - __Open a deep linking intent__ - __Take an screenshot__ - __Power button__ - __Unlock screen__ @@ -135,6 +136,13 @@ $ adb shell am start -n com.package.name/.ActivityName $ adb shell am start -n com.package.name/com.package.name.ActivityName ``` + +#### Open a deep linking intent + +```sh +$ adb shell am start -n android.intent.action.VIEW -d "scheme://app/deep/linking" +``` + #### Take an screenshot From 1eae92f956dc156ea2f966263dab86afa45c20b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9sar=20D=C3=ADez=20S=C3=A1nchez?= Date: Sun, 3 Apr 2016 22:10:52 +0100 Subject: [PATCH 05/26] Update README.md --- README.md | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 20f1a5a..f2906f5 100644 --- a/README.md +++ b/README.md @@ -5,10 +5,11 @@ - __SHA-1__ - __Debug Keystore__ - __Release Keystore__ -- __ADB__ + - __ADB__ - __Database__ - __Watching StrictMode__ - __View connected devices__ + - __List of running services__ - __Install an application__ - __Uninstall an application__ - __Start an Activity__ @@ -106,8 +107,16 @@ $ adb shell dumpsys dropbox data_app_strictmode --print ```sh $ adb devices ``` + If multiple devices are attached, use `adb -s DEVICE_ID` to target a specific device + +#### List of running services + +```sh +$ adb shell dumpsys activity services +``` + #### Install an application From 8573d555401c4147342364db280a7f86b6f198dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9sar=20D=C3=ADez=20S=C3=A1nchez?= Date: Fri, 22 Apr 2016 22:53:45 +0100 Subject: [PATCH 06/26] Updated readme with Testing your app with App Standby --- README.md | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index f2906f5..1e9fc3e 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ - __SHA-1__ - __Debug Keystore__ - __Release Keystore__ - - __ADB__ +- __ADB__ - __Database__ - __Watching StrictMode__ - __View connected devices__ @@ -32,6 +32,7 @@ - __Find out processor version on Android Device (check if it's an ARM, for example)__ - __Find out Application Binary Interface (ABI) in different devices__ - __Retrieve application's private data and databases for non debug application without root access__ + - __Testing your app with App Standby__ - __Indentify Frame Rate Issues (Dumpsys)__ - __Use ADB over Wi-Fi without extra application or software__ - __Test new Marshmallow permissions__ @@ -425,6 +426,30 @@ $adb pm revoke
+ +#### Testing your app with App Standby + +[__Source__](http://developer.android.com/intl/ru/training/monitoring-device-state/doze-standby.html?utm_campaign=android_series_appstandby_012116&utm_source=medium&utm_medium=blog#testing_your_app_with_app_standby) + +To test the App Standby mode with your app: + +1- Configure a hardware device or virtual device with an Android 6.0 (API level 23) or higher system image. +2- Connect the device to your development machine and install your app. +3- Run your app and leave it active. +4- Force the app into App Standby mode by running the following commands: +```sh +$ adb shell dumpsys battery unplug +$ adb shell am set-inactive true +``` +5- Simulate waking your app using the following commands: +```sh +$ adb shell am set-inactive false +$ adb shell am get-inactive +``` +6- Observe the behavior of your app after waking it. Make sure the app recovers gracefully from standby mode. In particular, you should check if your app's Notifications and background jobs continue to function as expected. + +
+
### AAPT From 7cfc673bccd68db604eb80b6cc307e9a1e65b0e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9sar=20D=C3=ADez=20S=C3=A1nchez?= Date: Fri, 22 Apr 2016 22:54:25 +0100 Subject: [PATCH 07/26] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 1e9fc3e..91224ce 100644 --- a/README.md +++ b/README.md @@ -32,10 +32,10 @@ - __Find out processor version on Android Device (check if it's an ARM, for example)__ - __Find out Application Binary Interface (ABI) in different devices__ - __Retrieve application's private data and databases for non debug application without root access__ - - __Testing your app with App Standby__ - __Indentify Frame Rate Issues (Dumpsys)__ - __Use ADB over Wi-Fi without extra application or software__ - __Test new Marshmallow permissions__ + - __Testing your app with App Standby__ - __AAPT__ - __Check Permissions in order to avoid Play Store app filtering__ From acae923ea710f79a24d0cb9eb008bec4fc30ad10 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9sar=20D=C3=ADez=20S=C3=A1nchez?= Date: Fri, 22 Apr 2016 23:51:03 +0100 Subject: [PATCH 08/26] Updated readme with Testing your app with Doze --- README.md | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/README.md b/README.md index 91224ce..9efeefa 100644 --- a/README.md +++ b/README.md @@ -36,6 +36,7 @@ - __Use ADB over Wi-Fi without extra application or software__ - __Test new Marshmallow permissions__ - __Testing your app with App Standby__ + - __Testing your app with Doze__ - __AAPT__ - __Check Permissions in order to avoid Play Store app filtering__ @@ -450,6 +451,27 @@ $ adb shell am get-inactive
+ +#### Testing your app with Doze + +[__Source__](http://developer.android.com/intl/ru/training/monitoring-device-state/doze-standby.html?utm_campaign=android_series_appstandby_012116&utm_source=medium&utm_medium=blog#testing_your_app_with_app_standby) + +You can test Doze mode by following these steps: + +1- Configure a hardware device or virtual device with an Android 6.0 (API level 23) or higher system image. +2- Connect the device to your development machine and install your app. +3- Run your app and leave it active. +4- Shut off the device screen. (The app remains active.) +5- Force the system to cycle through Doze modes by running the following commands: +```java +$ adb shell dumpsys battery unplug +$ adb shell dumpsys deviceidle step +``` +You may need to run the second command more than once. Repeat it until the device state changes to idle. +6- Observe the behavior of your app after you reactivate the device. Make sure the app recovers gracefully when the device exits Doze. + +
+
### AAPT From 720be51c534f925498604674e6a1338982b86639 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9sar=20D=C3=ADez=20S=C3=A1nchez?= Date: Fri, 22 Apr 2016 23:52:45 +0100 Subject: [PATCH 09/26] Fixed broken linebreaks --- README.md | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 9efeefa..34f902d 100644 --- a/README.md +++ b/README.md @@ -434,20 +434,20 @@ $adb pm revoke To test the App Standby mode with your app: -1- Configure a hardware device or virtual device with an Android 6.0 (API level 23) or higher system image. -2- Connect the device to your development machine and install your app. -3- Run your app and leave it active. -4- Force the app into App Standby mode by running the following commands: +1. Configure a hardware device or virtual device with an Android 6.0 (API level 23) or higher system image. +2. Connect the device to your development machine and install your app. +3. Run your app and leave it active. +4. Force the app into App Standby mode by running the following commands: ```sh $ adb shell dumpsys battery unplug $ adb shell am set-inactive true ``` -5- Simulate waking your app using the following commands: +5. Simulate waking your app using the following commands: ```sh $ adb shell am set-inactive false $ adb shell am get-inactive ``` -6- Observe the behavior of your app after waking it. Make sure the app recovers gracefully from standby mode. In particular, you should check if your app's Notifications and background jobs continue to function as expected. +6. Observe the behavior of your app after waking it. Make sure the app recovers gracefully from standby mode. In particular, you should check if your app's Notifications and background jobs continue to function as expected.
@@ -458,17 +458,17 @@ $ adb shell am get-inactive You can test Doze mode by following these steps: -1- Configure a hardware device or virtual device with an Android 6.0 (API level 23) or higher system image. -2- Connect the device to your development machine and install your app. -3- Run your app and leave it active. -4- Shut off the device screen. (The app remains active.) -5- Force the system to cycle through Doze modes by running the following commands: +1. Configure a hardware device or virtual device with an Android 6.0 (API level 23) or higher system image. +2. Connect the device to your development machine and install your app. +3. Run your app and leave it active. +4. Shut off the device screen. (The app remains active.) +5. Force the system to cycle through Doze modes by running the following commands: ```java $ adb shell dumpsys battery unplug $ adb shell dumpsys deviceidle step ``` You may need to run the second command more than once. Repeat it until the device state changes to idle. -6- Observe the behavior of your app after you reactivate the device. Make sure the app recovers gracefully when the device exits Doze. +6. Observe the behavior of your app after you reactivate the device. Make sure the app recovers gracefully when the device exits Doze.
From 35d6efa1797048246646e88fc20da0bc9930986a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9sar=20D=C3=ADez=20S=C3=A1nchez?= Date: Fri, 22 Apr 2016 23:54:43 +0100 Subject: [PATCH 10/26] Fixed broken linebreaks and section, again. --- README.md | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 34f902d..6879184 100644 --- a/README.md +++ b/README.md @@ -434,20 +434,22 @@ $adb pm revoke To test the App Standby mode with your app: -1. Configure a hardware device or virtual device with an Android 6.0 (API level 23) or higher system image. -2. Connect the device to your development machine and install your app. -3. Run your app and leave it active. -4. Force the app into App Standby mode by running the following commands: +- Configure a hardware device or virtual device with an Android 6.0 (API level 23) or higher system image. +- Connect the device to your development machine and install your app. +- Run your app and leave it active. +- Force the app into App Standby mode by running the following commands: ```sh $ adb shell dumpsys battery unplug $ adb shell am set-inactive true ``` -5. Simulate waking your app using the following commands: + +- Simulate waking your app using the following commands: ```sh $ adb shell am set-inactive false $ adb shell am get-inactive ``` -6. Observe the behavior of your app after waking it. Make sure the app recovers gracefully from standby mode. In particular, you should check if your app's Notifications and background jobs continue to function as expected. + +- Observe the behavior of your app after waking it. Make sure the app recovers gracefully from standby mode. In particular, you should check if your app's Notifications and background jobs continue to function as expected.
@@ -458,17 +460,19 @@ $ adb shell am get-inactive You can test Doze mode by following these steps: -1. Configure a hardware device or virtual device with an Android 6.0 (API level 23) or higher system image. -2. Connect the device to your development machine and install your app. -3. Run your app and leave it active. -4. Shut off the device screen. (The app remains active.) -5. Force the system to cycle through Doze modes by running the following commands: +- Configure a hardware device or virtual device with an Android 6.0 (API level 23) or higher system image. +- Connect the device to your development machine and install your app. +- Run your app and leave it active. +- Shut off the device screen. (The app remains active.) +- Force the system to cycle through Doze modes by running the following commands: ```java $ adb shell dumpsys battery unplug $ adb shell dumpsys deviceidle step ``` + You may need to run the second command more than once. Repeat it until the device state changes to idle. -6. Observe the behavior of your app after you reactivate the device. Make sure the app recovers gracefully when the device exits Doze. + +- Observe the behavior of your app after you reactivate the device. Make sure the app recovers gracefully when the device exits Doze.
From a024a5a6ac1b7f8cdc7e41771cd308a0da674f84 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9sar=20D=C3=ADez?= Date: Fri, 8 Jul 2016 22:28:39 +0100 Subject: [PATCH 11/26] added launchtime adb watcher --- README.md | 90 ++++++++++++++++++++++++++++++------------------------- 1 file changed, 50 insertions(+), 40 deletions(-) diff --git a/README.md b/README.md index 6879184..84d82f7 100644 --- a/README.md +++ b/README.md @@ -3,33 +3,34 @@ #### Table of Contents -
__SHA-1__ - - __Debug Keystore__ - - __Release Keystore__ + - __Debug Keystore__ + - __Release Keystore__ - __ADB__ - - __Database__ - - __Watching StrictMode__ - - __View connected devices__ - - __List of running services__ - - __Install an application__ - - __Uninstall an application__ - - __Start an Activity__ - - __Open a deep linking intent__ - - __Take an screenshot__ - - __Power button__ - - __Unlock screen__ - - __Print all installed packages__ - - __Get the path of an installed application__ - - __Simulate application being killed__ - - __Screen recording using Android 4.4__ - - __Check battery stats__ - - __Auto Backup Data (only in Android M)__ - - __Simulate fingerprint inputs (only in Android M)__ - - __Filter by tagname in Logcat__ - - __Filter by priority in Logcat__ - - __Filter using grep in Logcat__ - - __See the executed SQL statements in plain text in Logcat__ - - __Testing - Execute Monkey to test user interaction__ - - __Find out processor version on Android Device (check if it's an ARM, for example)__ + - __Show cold start Activity time__ + - __Database__ + - __Watching StrictMode__ + - __View connected devices__ + - __List of running services__ + - __Install an application__ + - __Uninstall an application__ + - __Start an Activity__ + - __Open a deep linking intent__ + - __Take an screenshot__ + - __Power button__ + - __Unlock screen__ + - __Print all installed packages__ + - __Get the path of an installed application__ + - __Simulate application being killed__ + - __Screen recording using Android 4.4__ + - __Check battery stats__ + - __Auto Backup Data (only in Android M)__ + - __Simulate fingerprint inputs (only in Android M)__ + - __Filter by tagname in Logcat__ + - __Filter by priority in Logcat__ + - __Filter using grep in Logcat__ + - __See the executed SQL statements in plain text in Logcat__ + - __Testing - Execute Monkey to test user interaction__ + - __Find out processor version on Android Device (check if it's an ARM, for example)__ - __Find out Application Binary Interface (ABI) in different devices__ - __Retrieve application's private data and databases for non debug application without root access__ - __Indentify Frame Rate Issues (Dumpsys)__ @@ -68,21 +69,33 @@ $ keytool -list -v -keystore {path_to_keystore}/my-release.keystore -alias {alia ### ADB + +#### Show cold start Activity time + +```sh +$ adb logcat | grep "ActivityManager" +``` + +The output would be something similar to: +``` +ActivityManager: Displayed com.example.launchtime/.LaunchTime: +666ms +``` + #### Database [__This__](https://gist.github.com/ignasi) is a Database getter script, developed by [__Ignasi__](https://github.com/ignasi) ```sh #!/bin/bash - -# android 4.3+ changes app's internal directory permissions and you can not just pull your + +# android 4.3+ changes app's internal directory permissions and you can not just pull your # databases to your computer, so this is a workaround to extract your databases. # I only use it for debug, use it under YOUR responsability. IT REQUIRES ROOT - + package=$1 db_name=$2 path="/data/data/$package/" - + rm $db_name adb shell "su -c 'cd $path; chmod -R 777 databases; exit'; exit" adb pull $path/databases/$db_name @@ -92,9 +105,9 @@ open $db_name #### Watching StrictMode -If you’re using `penaltyLog()`, the default, just run +If you’re using `penaltyLog()`, the default, just run ```sh -$ adb logcat +$ adb logcat ``` and watch the terminal output. Any violations will be logged to your console, slightly rate-limited for duplicate elimination. @@ -300,7 +313,7 @@ The Monkey is a program that runs on your emulator or device and generates pseud ```sh $ adb shell monkey [options] # Basic, make 500 random actions. -$ adb shell monkey -p your.package.name -v 500 +$ adb shell monkey -p your.package.name -v 500 ``` Complete information at http://developer.android.com/tools/help/monkey.html @@ -354,7 +367,7 @@ What matter is the three columns shown. Copy paste results in a spreadsheet. And ![Image](./images/dumpsys_sample.png) -This is the data you can grab. You can create a stack graph, so every bar contains the sum of the three columns on the left in the data we output. Is the time it takes to update the display list on every frame. +This is the data you can grab. You can create a stack graph, so every bar contains the sum of the three columns on the left in the data we output. Is the time it takes to update the display list on every frame. * The middle column is called process display list. It's the time we take to draw the actual display list * The last column is the time we take to swap the buffers, so to give the buffer back to surface flinger. Scrolling or doing any kind of actions should be below 16 millisecond limit. So this app is running at 60FPS, we're vsync'd, everything is going great. You can see that most of the time, you should spend most of the time in process display list, so drawing, executing the display list should be where you spend the bulk of the time. @@ -387,7 +400,7 @@ $ adb usb $ adb devices ``` -* Change adb mode from USB to tcpip using following command. +* Change adb mode from USB to tcpip using following command. ```sh $ adb tcpip 5555 # Restarting in TCP mode port: 5555. @@ -396,7 +409,7 @@ $ adb tcpip 5555 * Now, adb is running over TCP/IP mode, Let’s find IP address of Android device. Go to Settings in Android device -> About -> Status -> IP address. note down the IP address of connected Android Device. * Use following command to connect ADB with IP address ```sh -$ adb connect #.#.#.# +$ adb connect #.#.#.# # Connected to #.#.#.#:5555. ``` @@ -420,7 +433,7 @@ In order to test permissions targeting API 23+, we could use following commands ```sh $adb pm grant ``` -or +or ```sh $adb pm revoke ``` @@ -536,6 +549,3 @@ supports-any-density: 'true' locales: '--_--' densities: '120' '160' '240' '320' ``` - - - From 4198bde58a5a43a2005615907badb8b62e2e6785 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9sar?= Date: Tue, 16 Aug 2016 10:43:04 +0200 Subject: [PATCH 12/26] Added test alarms section/ --- README.md | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/README.md b/README.md index 84d82f7..2798efa 100644 --- a/README.md +++ b/README.md @@ -31,6 +31,7 @@ - __See the executed SQL statements in plain text in Logcat__ - __Testing - Execute Monkey to test user interaction__ - __Find out processor version on Android Device (check if it's an ARM, for example)__ + - [__Test Alarms__](#test-alarms) - __Find out Application Binary Interface (ABI) in different devices__ - __Retrieve application's private data and databases for non debug application without root access__ - __Indentify Frame Rate Issues (Dumpsys)__ @@ -325,6 +326,25 @@ Complete information at http://developer.android.com/tools/help/monkey.html $ adb shell cat /proc/cpuinfo ``` +#### Test Alarms + +[__Source__](http://vitovalov.com/2016/07/18/adb-date-changer.html) + +To check the alarms that are set on the connected device and to know more about them: + +```shell +$ adb shell dumpsys alarm +``` + +To see the alarms from you app you can grep with your package keywords: +```shell +$ adb shell dumpsys alarm | grep -A 3 google +``` + +So now you can see if you have correctly implemented your alarms functionality using AlarmManager API. + +[__More info here__](http://vitovalov.com/2016/07/18/adb-date-changer.html) + #### Find out Application Binary Interface (ABI) in different devices From eab5658be3badd685c92ed09d434a7e003299d13 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9sar=20D=C3=ADez=20S=C3=A1nchez?= Date: Tue, 30 Aug 2016 07:49:52 +0100 Subject: [PATCH 13/26] Android Nightmode enabler section (adb) --- README.md | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 2798efa..a30e92c 100644 --- a/README.md +++ b/README.md @@ -39,8 +39,9 @@ - __Test new Marshmallow permissions__ - __Testing your app with App Standby__ - __Testing your app with Doze__ -- __AAPT__ - - __Check Permissions in order to avoid Play Store app filtering__ + - __Enabling Night Mode on Android Nougat__ + - __AAPT__ + - __Check Permissions in order to avoid Play Store app filtering__
@@ -507,6 +508,17 @@ You may need to run the second command more than once. Repeat it until the devic - Observe the behavior of your app after you reactivate the device. Make sure the app recovers gracefully when the device exits Doze. +
+ + +#### Enabling Night Mode on Android Nougat + +[__Source__](http://michaelevans.org/blog/2016/08/23/enabling-night-mode-on-android-nougat/) +``` +$ adb -d shell am start --ez show_night_mode true com.android.systemui/.tuner.TunerActivity +``` + +
From f558206f213c5a1a0acd674acee56e2db05be987 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9sar=20D=C3=ADez=20S=C3=A1nchez?= Date: Tue, 30 Aug 2016 07:50:37 +0100 Subject: [PATCH 14/26] Wrong format fixed --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a30e92c..c500283 100644 --- a/README.md +++ b/README.md @@ -40,7 +40,7 @@ - __Testing your app with App Standby__ - __Testing your app with Doze__ - __Enabling Night Mode on Android Nougat__ - - __AAPT__ +- __AAPT__ - __Check Permissions in order to avoid Play Store app filtering__
From b0cac5ba6401ef0bd13f6485a06dbbd753810559 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9sar?= Date: Mon, 5 Sep 2016 19:38:24 +0100 Subject: [PATCH 15/26] Added Content Provider Query section --- README.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/README.md b/README.md index c500283..ad69024 100644 --- a/README.md +++ b/README.md @@ -32,6 +32,7 @@ - __Testing - Execute Monkey to test user interaction__ - __Find out processor version on Android Device (check if it's an ARM, for example)__ - [__Test Alarms__](#test-alarms) + - [__Query a Content Provider__](#query-a-content-provider) - __Find out Application Binary Interface (ABI) in different devices__ - __Retrieve application's private data and databases for non debug application without root access__ - __Indentify Frame Rate Issues (Dumpsys)__ @@ -346,6 +347,12 @@ So now you can see if you have correctly implemented your alarms functionality u [__More info here__](http://vitovalov.com/2016/07/18/adb-date-changer.html) +#### Query a Content Provider + +```shell +$ adb shell content query --uri content://your.package.name --projection name +``` + #### Find out Application Binary Interface (ABI) in different devices From 0609374372d5df67a50ceaef5c956b5064e776fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9sar=20D=C3=ADez=20S=C3=A1nchez?= Date: Thu, 10 Nov 2016 15:58:31 +0100 Subject: [PATCH 16/26] Update README.md added more adb actions. --- README.md | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index ad69024..c5346e0 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,7 @@ - __Debug Keystore__ - __Release Keystore__ - __ADB__ + - __Server actions__ - __Show cold start Activity time__ - __Database__ - __Watching StrictMode__ @@ -72,6 +73,19 @@ $ keytool -list -v -keystore {path_to_keystore}/my-release.keystore -alias {alia ### ADB + +### Server actions + +The following command kills the adb server: +```sh +adb kill-server +``` + +This starts the adb server: +```sh +adb start-server +``` + #### Show cold start Activity time @@ -139,8 +153,9 @@ $ adb shell dumpsys activity services #### Install an application ```sh -$ adb install -r file.apk -# Optional -r argument reinstalls and keeps any data if the application is already installed on the device. +$ adb install -r file.apk // (or com.package.name) +# optional -r argument reinstalls and keeps any data if the application is already installed on the device. +# optional -s argument installs the app on the SD card instead of the internal storage. ``` @@ -155,6 +170,12 @@ To uninstall the application using uninstall dialog: $ adb shell am start -a android.intent.action.DELETE -d package:com.package.name ``` +To keep the data in the cache directory, add `-k` + +```sh +$ adb uninstall -k com.package.name +``` + #### Start an Activity @@ -525,7 +546,6 @@ You may need to run the second command more than once. Repeat it until the devic $ adb -d shell am start --ez show_night_mode true com.android.systemui/.tuner.TunerActivity ``` -
From 5e1932dac251e1a5ec13fe5b7a67479f14f99c24 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9sar=20D=C3=ADez=20S=C3=A1nchez?= Date: Thu, 10 Nov 2016 16:31:19 +0100 Subject: [PATCH 17/26] Update README.md push and pull local files to device/emulator. --- README.md | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index c5346e0..88fb188 100644 --- a/README.md +++ b/README.md @@ -42,6 +42,7 @@ - __Testing your app with App Standby__ - __Testing your app with Doze__ - __Enabling Night Mode on Android Nougat__ + - [__Copy files from/to a device/emulator__](#copy-files-emulator) - __AAPT__ - __Check Permissions in order to avoid Play Store app filtering__ @@ -74,7 +75,7 @@ $ keytool -list -v -keystore {path_to_keystore}/my-release.keystore -alias {alia ### ADB -### Server actions +#### Server actions The following command kills the adb server: ```sh @@ -548,6 +549,35 @@ $ adb -d shell am start --ez show_night_mode true com.android.systemui/.tuner.Tu
+
+##### Copy files from/to a device/emulator + +[__Source__](http://crushingcode.co/do-you-like-to-adb/) + +To push a file/dir to device: +```sh +$ adb push +``` +where `` is file in your local system i.e my_image.png and `` is file location in device/emulator i.e `/sdcard/Downloads/my_image.png` + +Sample: +```sh +$ adb push ~/Downloads/my_image.png /sdcard/Downloads/my_image.png +``` +To pull a file/dir from device + +```sh +$ adb pull [] +``` +where `` is file in your local system i.e my_image.png and `` is file location in device/emulator i.e `/sdcard/Downloads/my_image.png`. + +Sample: +```sh +adb pull /sdcard/Downloads/my_image.png my_image.png +``` + +
+
### AAPT From a09406ce7d7c613e61c299119a36ac580b07b1fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9sar=20D=C3=ADez=20S=C3=A1nchez?= Date: Fri, 9 Dec 2016 11:42:43 +0000 Subject: [PATCH 18/26] Update README.md Added device selection instructions. --- README.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/README.md b/README.md index 88fb188..1bffd31 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,7 @@ - __Debug Keystore__ - __Release Keystore__ - __ADB__ + - [__Select a device when multiple devices are connected__](#select-a-device-when-multiple-devices-are-connected) - __Server actions__ - __Show cold start Activity time__ - __Database__ @@ -74,6 +75,14 @@ $ keytool -list -v -keystore {path_to_keystore}/my-release.keystore -alias {alia ### ADB +#### Select a device when multiple devices are connected + +You can use `adb devices -l` to check information related to them, in order to select the one you want. Then: +``` +adb -s +``` +where is the number listed when you use `adb devices` and are the instructions you want to execute over the device. + #### Server actions From 2784dcdf53fd65da4d503c4b49fde3f193d6188c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9sar=20D=C3=ADez=20S=C3=A1nchez?= Date: Fri, 9 Dec 2016 11:43:28 +0000 Subject: [PATCH 19/26] Update README.md fixed error related to instructions. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 1bffd31..250f1c4 100644 --- a/README.md +++ b/README.md @@ -81,7 +81,7 @@ You can use `adb devices -l` to check information related to them, in order to s ``` adb -s ``` -where is the number listed when you use `adb devices` and are the instructions you want to execute over the device. +where `` is the number listed when you use `adb devices` and `` are the instructions you want to execute over the device. #### Server actions From 2ec208919c77ca81a8db896e8b02caac0c3a76fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9sar=20D=C3=ADez=20S=C3=A1nchez?= Date: Sun, 16 Apr 2017 08:43:03 +0100 Subject: [PATCH 20/26] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 250f1c4..d1a0d3d 100644 --- a/README.md +++ b/README.md @@ -49,8 +49,8 @@
-
### SHA-1 + In order to get SHA1 to use it in many services, like Google+ Sign In, Maps, In app purchases, we should generate keys for every keystore (certificate): From 27527c65a39fd33cb257b2f371886ae0500cbcdf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9sar=20D=C3=ADez=20S=C3=A1nchez?= Date: Mon, 17 Apr 2017 17:52:10 +0100 Subject: [PATCH 21/26] Update README.md --- README.md | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/README.md b/README.md index d1a0d3d..5fc0b90 100644 --- a/README.md +++ b/README.md @@ -44,6 +44,7 @@ - __Testing your app with Doze__ - __Enabling Night Mode on Android Nougat__ - [__Copy files from/to a device/emulator__](#copy-files-emulator) + - [Trigger a notification without GCM](trigger-a-notification-without-gcm) - __AAPT__ - __Check Permissions in order to avoid Play Store app filtering__ @@ -585,6 +586,28 @@ Sample: adb pull /sdcard/Downloads/my_image.png my_image.png ``` +#### Trigger a notification without GCM + +[Source](https://plus.google.com/108612553581259107752/posts/ERVnjUAjsbZ) + +**IMPORTANT**: Remember to remove **temporally** the following attribute from the declaration of the Broadcast Receiver you want to test, in the Manifest: +``` +android:permission="com.google.android.c2dm.permission.SEND" +``` + +It's based on enabling broadcast receivers. +``` +am broadcast -a -n / +``` + +Some examples could be: +``` +adb shell am broadcast -a com.whereismywifeserver.intent.TEST --es sms_body "test from adb" +adb shell am broadcast -a com.google.android.c2dm.intent.REGISTRATION -n de.example/.GCMBroadcastReceiver +--es "registration_id" "1234" +``` +where `--es` define extra as string +
From c176abc29b445790bdb07177c0cfbebbc4077cf4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9sar=20D=C3=ADez=20S=C3=A1nchez?= Date: Mon, 17 Apr 2017 17:53:59 +0100 Subject: [PATCH 22/26] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 5fc0b90..dd193f1 100644 --- a/README.md +++ b/README.md @@ -44,7 +44,7 @@ - __Testing your app with Doze__ - __Enabling Night Mode on Android Nougat__ - [__Copy files from/to a device/emulator__](#copy-files-emulator) - - [Trigger a notification without GCM](trigger-a-notification-without-gcm) + - [__Trigger a notification without GCM__](trigger-a-notification-without-gcm) - __AAPT__ - __Check Permissions in order to avoid Play Store app filtering__ From 6712a83734f930209fdf23a7fb7108e136146f2a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9sar=20D=C3=ADez=20S=C3=A1nchez?= Date: Mon, 17 Apr 2017 17:54:32 +0100 Subject: [PATCH 23/26] Updated bold title in the table of content From 72e40cf5bc987ddd04860a45640613118aed8adf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9sar=20D=C3=ADez=20S=C3=A1nchez?= Date: Mon, 17 Apr 2017 17:56:02 +0100 Subject: [PATCH 24/26] Update README.md --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index dd193f1..1d44a16 100644 --- a/README.md +++ b/README.md @@ -35,16 +35,16 @@ - __Find out processor version on Android Device (check if it's an ARM, for example)__ - [__Test Alarms__](#test-alarms) - [__Query a Content Provider__](#query-a-content-provider) - - __Find out Application Binary Interface (ABI) in different devices__ - - __Retrieve application's private data and databases for non debug application without root access__ - - __Indentify Frame Rate Issues (Dumpsys)__ - - __Use ADB over Wi-Fi without extra application or software__ - - __Test new Marshmallow permissions__ - - __Testing your app with App Standby__ - - __Testing your app with Doze__ - - __Enabling Night Mode on Android Nougat__ - - [__Copy files from/to a device/emulator__](#copy-files-emulator) - - [__Trigger a notification without GCM__](trigger-a-notification-without-gcm) + - __Find out Application Binary Interface (ABI) in different devices__ + - __Retrieve application's private data and databases for non debug application without root access__ + - __Indentify Frame Rate Issues (Dumpsys)__ + - __Use ADB over Wi-Fi without extra application or software__ + - __Test new Marshmallow permissions__ + - __Testing your app with App Standby__ + - __Testing your app with Doze__ + - __Enabling Night Mode on Android Nougat__ + - [__Copy files from/to a device/emulator__](#copy-files-emulator) + - [__Trigger a notification without GCM__](#trigger-a-notification-without-gcm) - __AAPT__ - __Check Permissions in order to avoid Play Store app filtering__ From a204fdf1380bfc2890fd6578f6b4dec6e92cc14a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9sar=20D=C3=ADez=20S=C3=A1nchez?= Date: Sat, 29 Apr 2017 11:03:03 -0400 Subject: [PATCH 25/26] Update README.md --- README.md | 37 ++++++++++++++++++++++++++++++++----- 1 file changed, 32 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 1d44a16..1e2db2d 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ - __ADB__ - [__Select a device when multiple devices are connected__](#select-a-device-when-multiple-devices-are-connected) - __Server actions__ - - __Show cold start Activity time__ + - [__Show launcher activity cold start time__](#show-launcher-activity-cold-start-time) - __Database__ - __Watching StrictMode__ - __View connected devices__ @@ -97,17 +97,44 @@ This starts the adb server: adb start-server ``` - -#### Show cold start Activity time +
-```sh +#### Show launcher activity cold start time + +[__Source__](https://www.youtube.com/watch?v=oJAS7T-qurk) + +``` $ adb logcat | grep "ActivityManager" ``` The output would be something similar to: + +``` +ActivityManager: Displayed com.example.launchtime/: +666ms +``` + +If we also use want to show the content ready time, we should use the API method `reportFullyDrawn`: + ``` -ActivityManager: Displayed com.example.launchtime/.LaunchTime: +666ms +ActivityCompatAdditions.reportFullyDrawn(this); ``` +Then the time output will be the actual time that takes to Activity to be ready: +``` +ActivityManager: Displayed com.example.launchtime/.LaunchTimeActivity: +666ms +ActivityManager: Fully drawn com.example.launchtime/.LaunchTimeActivity: +1s440ms +``` + +Amount of time that takes to draw the first frame + the content. + +We can also use the `Activity` start command from ADB, with the `W` flag: + +``` +adb shell am start -W com.package.name/.LauncherScreenActivity +``` + +We will see 3 times related to starting times. + +
#### Database From 85cbd6c60a4d1dbf8ee40c8ffb63536ceb4ac73b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9sar=20D=C3=ADez=20S=C3=A1nchez?= Date: Fri, 8 Jun 2018 11:24:27 -0400 Subject: [PATCH 26/26] Update README.md --- README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README.md b/README.md index 1e2db2d..72a8cd2 100644 --- a/README.md +++ b/README.md @@ -228,6 +228,11 @@ $ adb shell am start -n com.package.name/com.package.name.ActivityName ```sh $ adb shell am start -n android.intent.action.VIEW -d "scheme://app/deep/linking" ``` +or +```sh +$ adb shell am start -n android.intent.action.VIEW -d "https://name.app/user-settings/324" com.packaging.app +``` + #### Take an screenshot