Skip to content

Android notes

October 28, 2023
December 17, 2014

Notes on Android system and console tools available.

Android (and Friends) Reading Guide | Linux.org
hellogv 的专栏 - 博客频道 - CSDN.NET
Android Device - eLinux.org
Android Trends in 2020 - AndroidPub
Mind The Robot

Android versions: A living history from 1.0 to today | Computerworld
Stock Android vs Android One vs Android Go: the differences explained
Android Oreo: 18 advanced tips and tricks | Computerworld
10 hidden tricks for making the most of Android 10's gestures | Computerworld
How to take full advantage of Android 10's privacy-reclaiming powers | Computerworld

Secret settings hidden in your Android phone will make it feel twice as fast – BGR

How A/B Partitions and Seamless Updates Affect Custom Development on XDA

Android is not Open

Here we go again: Android is, apparently, not open – OSnews
Neither Microsoft, Nokia, nor anyone else should fork Android. It’s unforkable. – Ars Technica
New Android OEM licensing terms leak; “Open” comes with a lot of restrictions – Ars Technica

Android Apps

Android apps: Best of the best | Computerworld
18 time-saving tips for the Chrome Android browser | Computerworld
The best Android file manager apps | Computerworld
The best note-taking apps for Android | Computerworld
Save time with efficiency-boosting Android apps | Computerworld

Termux Android terminal emulator and Linux environment app

Play Store Alternatives

Download APK free online downloader | APKPure.com
QooApp Game Store
F-Droid - Free and Open Source Android App Repository

当贝市场 TV 版最新版当贝市场下载安卓电视 APK_当贝市场

UserLAnd

UserLAnd | Main UserLAnd Repository

UserLAnd, a Turnkey Linux in Your Pocket | Linux Journal
CypherpunkArmory/UserLAnd: Main UserLAnd Repository
UserLAnd - Apps on Google Play

Export Chrome's Tabs

When you never close tabs on your mobile Chrome browser - DEV Community 👩‍💻👨‍💻

./adb forward tcp:9222 localabstract:chrome_devtools_remote
curl http://localhost:9222/json/list | jq ".[].url" | tr -d '"' > mobile_tabs.txt
wget -O tabs.json http://localhost:9222/json/list

How can I export the list of open Chrome tabs? - Android Enthusiasts Stack Exchange

Android dev

Kotlin was supported officially as a language for Android dev at Google I/O 2017.
A Developer's Intro to Android

Guide to app architecture  |  Android Developers
Meet Google Play's target API level requirement  |  Android Developers

Android CPU, Compilers, D8 & R8 – ProAndroidDev Runtimes

Google Codelabs
Android Basics in Kotlin course  |  Android Developers
Android Basics with Compose course  |  Android Developers
Jetpack Compose for Android Developers
Android Kotlin Fundamentals  |  Training Courses  |  Android Developers
Advanced Android in Kotlin  |  Training Courses  |  Android Developers

Developing Android Apps with Kotlin | Udacity
Advanced Android with Kotlin | Udacity

ProAndroidDev
AndroidDev – AndroidPub – Medium

Modern Android development with Kotlin, Part 1 – ProAndroidDev
Modern Android development with Kotlin (Part 2) – ProAndroidDev
Modern Android development with Kotlin Part 3 – ProAndroidDev
Modern Android development with Kotlin Part 4 – ProAndroidDev
mladenrakonjac/ModernAndroidApp: Code for Medium article

突破 Android P 的非公开 API 限制

25 new Android libraries which you definitely want to try at the beginning of 2017

AOSP

AndroidXRef up to 9.0 in 2018
[GUIDE] Understanding the Android Source Code | XDA Forums
[GUIDE] Learning about the Android Build Process | XDA Forums

Tutorial: Diving into Android Source Code | ProTech 2013

IBinder

IBinder  |  Android Developers

What is Ibinder in Android? [Answered 2023]- Droidrant

Volley

Volley overview | Volley
Google I/O 2013 - Volley: Easy, Fast Networking for Android - YouTube

Jetpack

Android Jetpack Dev Resources - Android Developers❗!important, new standard library compatible with Kotlin
Jetpack Compose UI App Development Toolkit - Android Developers UI toolkit with Kotlin DSL

Android Developers Blog: Hello World, AndroidX
Android Jetpack Brings WorkManager, Navigation and More
s
Data Binding Library  |  Android Developers
Data Binding in Android: A tutorial with examples - LogRocket Blog

Compose From First Principles | Intelligible Babble
Store grand re-opening: loading Android data with coroutines - Dropbox

Room ORM

Save data in a local database using Room  |  Android Developers
7 Steps To Room – Google Developers – Medium

MatrixDev/Roomigrant: Automated Android Room ORM migrations generator with compile-time code generation

Transition

Animate layout changes using a transition | Android Developers

Android for PC

Android-x86 - Porting Android to x86

Top 5 Best Bluestacks Alternative in 2023 – AirDroid

Bluestacks

BlueStacks –電腦和 Mac 上最快的安卓模擬器| 100%安全免費

How can I install APK file on Bluestacks app player? - Android Enthusiasts Stack Exchange

Android sysadmin

attach adbpull, adbpush, adbview, adbcmd here

# on device
cat /proc/wakelocks | busybox awk '{ printf "%-25s %-10s\n", $1, $5 }' | busybox grep -v " 0"

# with adb
adb shell cat /proc/wakelocks | awk '{ printf "%-25s %-10s\n", $1, $5 }' | grep -v " 0"
cat /proc/bus/input/devices

GPU

Caffe

OAID/CaffeOnACL: Using ARM Compute Library (NEON+GPU) to speed up caffe; Providing utilities to debug, profile and tune application performance
RockchipOpensourceCommunity/CaffeOnACL-Android: Porting CaffeOnACL to RK3399 Android platform

Renderscript

Deprecated from Android 12

RenderScript - Wikiwand
RenderScript Overview  |  Android Developers

Android Renderscript - YouTube 2011
Learn about RenderScript from Romain Guy and Chet Haase of the Android UI Toolkit team - YouTube 2011
Google I/O 2013 - High Performance Applications with RenderScript - YouTube
GDC Booth Presentation by Google: Renderscript 2013 - YouTube
AnDevCon: A Deep Dive into RenderScript - YouTube 2013

Renderscript from the perspective of an OpenCL/CUDA/C++ AMP programmer – Searching for divine code
android - Why did Google choose RenderScript instead of OpenCL - Stack Overflow

APK download

F-Droid - Free and Open Source Android App Repository
Download APK from Google Play Store free online downloader | APKPure.com
APK Download of Free Android Apps - AndroidDrawer.com
APK Downloader [Latest] Download Directly | Chrome Extension v3 (Evozi Official)
QooApp 遊戲庫

SmartTube (Official Site)
yuliskov/SmartTubeNext: SmartTube - an advanced player for set-top boxes and tv running Android OS

ReVanced Extended 18.40.34 | Download APK for Android

Remote mouse

悟空遥控器TV版最新版悟空遥控器下载安卓电视APK_当贝市场
Android app that is able to allow mobile to control Android STB remotely. The server app does not require rooting and system integration. It draws the cursor on an overlay layer and issue commands to Input framework.

Programmatically Injecting Events on Android - Part 1 - PocketMagic
Programmatically Injecting Events on Android - Part 2 - PocketMagic
Android Overlay Mouse Cursor - PocketMagic

Debugging

bytedance/btrace: 🔥🔥 btrace(AKA RheaTrace) is a high performance Android trace tool which is based on Systrace, it support to define custom events automatically during building apk and using bhook to provider more native events like IO.

adb

Android Debug Bridge (adb)  |  Android Studio  |  Android Developers
Android Debug Bridge - ArchWiki

ashishb/adb-enhanced: 🔪Swiss-army knife for Android testing and development 🔪 ⛺
JeffLIrion/adb_shell: A Python implementation of ADB with shell and FileSync functionality.

SDK Platform Tools release notes  |  Android Studio  |  Android Developers
How to Install ADB on Windows, macOS, and Linux

adb comes with the Android SDK, and released separately as Platform Tools in 2017.

Android Debug Bridge (ADB) | Android Open Source Project
adb - platform/system/core - Git at Google android11-release
adb - Android Code Search

Enable adb via TCP

On PC:

adb tcpip 5555

On device (need ROOT):

su
setprop service.adb.tcp.port 5555
stop adbd
start adbd
adb connect <DEVICE_IP_ADDRESS>:5555

logcat

logcat filtering (Eclipse and Android Studio)

pid:
text:
app: package name (com.example.android.bluetoothlegatt)
tag: ^(?!.*(DeskClock|dalvik|wpa)).*$, ^(?!(BluetoothAdapter|AbsListView))

android-log-viewer

mlopatkin / android-log-viewer — Bitbucket

logcat (node)

logcat-org/logcat: adb logcat console and web viewer

pidcat (python)

JakeWharton/pidcat: Colored logcat script which only shows log entries for a specific application package.

Android on Linux

Android Apps on Linux | Linux.org via Chrome
Best Ways To Use Android Apps In Ubuntu - LinuxAndUbuntu - Linux News | Apps Reviews | Linux Tutorials HowTo
Anbox Runs Android In Your Linux Without Emulation - LinuxAndUbuntu - Linux News | Apps Reviews | Linux Tutorials HowTo

Genymobile/scrcpy: Display and control your Android device
Scrcpy & Sndcpy: Screencast Any Android Phone To Your Computer - YouTube

Factory Reset Protection

Factory Reset Protection: What you need to know | Android Central

Bypass

How to Bypass Factory Reset Protection Android [2023 Latest] Samsung, Huawei

Gist:

GOOGLE Pixel 7 Bypass Google Account Verification | Remove Google Lock | Unlock FRP Android 13 - YouTube
New! Google Pixel 3 FRP Bypass Android 12 Without PC || Pixel 3 Frp Bypass Android 12 - YouTube

aapt

Android Asset Packaging Tool

Usage:
 aapt l[ist] [-v] [-a] file.{zip,jar,apk}
   List contents of Zip-compatible archive.

 aapt d[ump] [--values] [--include-meta-data] WHAT file.{apk} [asset [asset ...]]
   strings          Print the contents of the resource table string pool in the APK.
   badging          Print the label and icon for the app declared in APK.
   permissions      Print the permissions from the APK.
   resources        Print the resource table from the APK.
   configurations   Print the configurations in the APK.
   xmltree          Print the compiled xmls in the given assets.
   xmlstrings       Print the strings of the given compiled xml assets.

 aapt p[ackage] [-d][-f][-m][-u][-v][-x][-z][-M AndroidManifest.xml] \
        [-0 extension [-0 extension ...]] [-g tolerance] [-j jarfile] \
        [--debug-mode] [--min-sdk-version VAL] [--target-sdk-version VAL] \
        [--app-version VAL] [--app-version-name TEXT] [--custom-package VAL] \
        [--rename-manifest-package PACKAGE] \
        [--rename-instrumentation-target-package PACKAGE] \
        [--utf16] [--auto-add-overlay] \
        [--max-res-version VAL] \
        [-I base-package [-I base-package ...]] \
        [-A asset-source-dir]  [-G class-list-file] [-P public-definitions-file] \
        [-S resource-sources [-S resource-sources ...]] \
        [-F apk-file] [-J R-file-dir] \
        [--product product1,product2,...] \
        [-c CONFIGS] [--preferred-configurations CONFIGS] \
        [--split CONFIGS [--split CONFIGS]] \
        [--feature-of package [--feature-after package]] \
        [raw-files-dir [raw-files-dir] ...] \
        [--output-text-symbols DIR]

   Package the android resources.  It will read assets and resources that are
   supplied with the -M -A -S or raw-files-dir arguments.  The -J -P -F and -R
   options control which files are output.

 aapt r[emove] [-v] file.{zip,jar,apk} file1 [file2 ...]
   Delete specified files from Zip-compatible archive.

 aapt a[dd] [-v] file.{zip,jar,apk} file1 [file2 ...]
   Add specified files to Zip-compatible archive.

 aapt c[runch] [-v] -S resource-sources ... -C output-folder ...
   Do PNG preprocessing on one or several resource folders
   and store the results in the output folder.

 aapt s[ingleCrunch] [-v] -i input-file -o outputfile
   Do PNG preprocessing on a single file.

 aapt v[ersion]
   Print program version.

 Modifiers:
   -a  print Android-specific data (resources, manifest) when listing
   -c  specify which configurations to include.  The default is all
       configurations.  The value of the parameter should be a comma
       separated list of configuration values.  Locales should be specified
       as either a language or language-region pair.  Some examples:
            en
            port,en
            port,land,en_US
   -d  one or more device assets to include, separated by commas
   -f  force overwrite of existing files
   -g  specify a pixel tolerance to force images to grayscale, default 0
   -j  specify a jar or zip file containing classes to include
   -k  junk path of file(s) added
   -m  make package directories under location specified by -J
       comes before this one. The first Feature Split APK should not define
       anything here.
   --rename-manifest-package
       Rewrite the manifest so that its package name is the package name
       given here.  Relative class names (for example .Foo) will be
       changed to absolute names with the old package so that the code
       does not need to change.
   --rename-instrumentation-target-package
       Rewrite the manifest so that all of its instrumentation
       components target the given package.  Useful when used in
       conjunction with --rename-manifest-package to fix tests against
       a package that has been renamed.
   --product
       Specifies which variant to choose for strings that have
       product variants
   --utf16
       changes default encoding for resources to UTF-16.  Only useful when API
       level is set to 7 or higher where the default encoding is UTF-8.
   --non-constant-id
       Make the resources ID non constant. This is required to make an R java class
       that does not contain the final value but is used to make reusable compiled
       libraries that need to access resources.
   --shared-lib
       Make a shared library resource package that can be loaded by an application
       at runtime to access the libraries resources. Implies --non-constant-id.
   --error-on-failed-insert
       Forces aapt to return an error if it fails to insert values into the manifest
       with --debug-mode, --min-sdk-version, --target-sdk-version --version-code
       and --version-name.
       Insertion typically fails if the manifest already defines the attribute.
   --error-on-missing-config-entry
       Forces aapt to return an error if it fails to find an entry for a configuration.
   --output-text-symbols
       Generates a text file containing the resource symbols of the R class in the
       specified folder.
   --ignore-assets
       Assets to be ignored. Default pattern is:
       !.svn:!.git:!.ds_store:!*.scc:.*:<dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~