<p>
Android is the most popular operating system for mobile phones and tablets.
</p>

<h3>Contents</h3>
<ul>
<li><a href="#recommended_distribution">Recommended Distribution</a></li>
<li><a href="#recommended_apps">Recommended Apps</a>
<ul>
<li><a href="#apps_stores">App Stores</a></li>
<li><a href="#apps_internet">Internet</a></li>
<li><a href="#apps_security">Security</a></li>
<li><a href="#apps_camera">Camera</a></li>
<li><a href="#apps_navigation">Navigation</a></li>
<li><a href="#apps_calendar">Calendar</a></li>
<li><a href="#apps_contacts">Contacts</a></li>
<li><a href="#apps_multimedia">Multimedia</a></li>
<li><a href="#apps_reading">Reading</a></li>
<li><a href="#apps_theming">Theming</a></li>
<li><a href="#apps_games">Games</a></li>
<li><a href="#apps_science">Science and Education</a></li>
<li><a href="#apps_development">Development</a></li>
</ul>
</li>
<li><a href="#verify_signature">Verify Signature of Packages</a></li>
<li><a href="#send_sms">Send SMS Messages</a>
<ul>
<li><a href="#send_sms_termux">Using Termux:API</a></li>
<li><a href="#send_sms_adb">Using ADB</a></li>
</ul>
</li>
<li><a href="#android_studio">Android Studio</a></li>
<li><a href="#external_links">External Links</a></li>
</ul>


<h3 id="recommended_distribution">Recommended Distribution</h3>

<p>
Most vendors have their own (slightly modified) distribution of Android.<br />
Some distributions do not allow the user to remove preinstalled apps.<br />
Luckily, there are devices available that support flashing alternative Android distributions.
</p>

<dl>

<dt>LineageOS</dt>
<dd>Successor of CyanogenMod<br />
<a href="https://lineageos.org/" target="_blank">
https://lineageos.org/</a><br />
Supported devices:
<a href="https://wiki.lineageos.org/devices/" target="_blank">
https://wiki.lineageos.org/devices/</a></dd>

</dl>


<h3 id="recommended_apps">Recommended Apps</h3>

<p>
As in 2020, there are approximately three million apps on Google Play.<br />
If you need an app for something, you are possibly trying out some of them.<br />
Some of them need access to personal data. Some of them are full of advertisements.<br />
Here is a list of apps, I can recommend.
</p>

<h4 id="apps_stores">App Stores</h4>
<dl>

<dt>F-Droid</dt>
<dd>App store with free and open source software (foss)<br />
<a href="https://f-droid.org/packages/org.fdroid.fdroid/" target="_blank">
https://f-droid.org/packages/org.fdroid.fdroid/</a></dd>

<dt>Aurora Store</dt>
<dd>Download apps from Google Play without Google Apps (GApps) installed<br />
<a href="https://f-droid.org/packages/com.aurora.store/" target="_blank">
https://f-droid.org/packages/com.aurora.store/</a></dd>

</dl>

<h4 id="apps_internet">Internet</h4>
<dl>

<dt>Fennec</dt>
<dd>Internet browser based on Firefox<br />
<a href="https://f-droid.org/packages/org.mozilla.fennec_fdroid/" target="_blank">
https://f-droid.org/packages/org.mozilla.fennec_fdroid/</a><br />
In Fennec, popular <a href="https://addons.mozilla.org/android/" target="_blank">Firefox add-ons</a> can be used.</dd>

<dt>K-9 Mail</dt>
<dd>Full-featured email client<br />
<a href="https://f-droid.org/packages/com.fsck.k9/" target="_blank">
https://f-droid.org/packages/com.fsck.k9/</a></dd>

<dt>NewPipe</dt>
<dd>Lightweight YouTube front-end<br />
<a href="https://f-droid.org/packages/org.schabi.newpipe/" target="_blank">
https://f-droid.org/packages/org.schabi.newpipe/</a></dd>

<dt>RadioDroid</dt>
<dd>Internet radio and alarm clock<br />
<a href="https://f-droid.org/packages/net.programmierecke.radiodroid2/" target="_blank">
https://f-droid.org/packages/net.programmierecke.radiodroid2/</a><br />
Listen to online radio streams from <a href="https://www.radio-browser.info/" target="_blank">https://www.radio-browser.info/</a></dd>

<dt>Change Detection</dt>
<dd>Automatically detects changes on websites<br />
<a href="https://f-droid.org/packages/com.bernaferrari.changedetection/" target="_blank">
https://f-droid.org/packages/com.bernaferrari.changedetection/</a></dd>

<!--
<dt>Good Weather</dt>
<dd>Display weather information in nice widgets on the home screen<br />
<a href="https://f-droid.org/packages/org.asdtm.goodweather/" target="_blank">
https://f-droid.org/packages/org.asdtm.goodweather/</a></dd>
-->
</dl>

<h4 id="apps_security">Security</h4>
<dl>

<dt>KeePassDX</dt>
<dd>Password safe<br />
<a href="https://f-droid.org/packages/com.kunzisoft.keepass.libre/" target="_blank">
https://f-droid.org/packages/com.kunzisoft.keepass.libre/</a></dd>

<dt>OpenKeychain</dt>
<dd>Encrypts your communication<br />
<a href="https://f-droid.org/packages/org.sufficientlysecure.keychain/" target="_blank">
https://f-droid.org/packages/org.sufficientlysecure.keychain/</a></dd>

</dl>

<h4 id="apps_camera">Camera</h4>
<dl>

<dt>Open Camera</dt>
<dd>Feature-rich camera app<br />
<a href="https://f-droid.org/packages/net.sourceforge.opencamera/" target="_blank">
https://f-droid.org/packages/net.sourceforge.opencamera/</a></dd>

<dt>Barcode Scanner</dt>
<dd>QR code scanner<br />
<a href="https://f-droid.org/packages/com.google.zxing.client.android/" target="_blank">
https://f-droid.org/packages/com.google.zxing.client.android/</a></dd>

</dl>

<h4 id="apps_navigation">Navigation</h4>
<dl>

<dt>OsmAnd~</dt>
<dd>Offline/online maps and navigation<br />
<a href="https://f-droid.org/packages/net.osmand.plus/" target="_blank">
https://f-droid.org/packages/net.osmand.plus/</a></dd>

<dt>HERE WeGo</dt>
<dd>City navigation<br />
<a href="https://apkpure.com/here-wego-maps-navigation/com.here.app.maps" target="_blank">
https://apkpure.com/here-wego-maps-navigation/com.here.app.maps</a></dd>

</dl>

<h4 id="apps_calendar">Calendar</h4>
<dl>

<dt>Etar - OpenSource Calendar</dt>
<dd>Supports offline calendars<br />
<a href="https://f-droid.org/packages/ws.xsoh.etar/" target="_blank">
https://f-droid.org/packages/ws.xsoh.etar/</a></dd>

<dt>Calendar Import-Export</dt>
<dd>Import &amp; export (backup) calendars using ics files<br />
<a href="https://f-droid.org/packages/org.sufficientlysecure.ical/" target="_blank">
https://f-droid.org/packages/org.sufficientlysecure.ical/</a></dd>

</dl>

<h4 id="apps_contacts">Contacts</h4>
<dl>

<dt>Export Contacts</dt>
<dd>Backup contacts in vCard 3.0 contacts file (*.vcf)<br />
<a href="https://f-droid.org/packages/am.ed.exportcontacts/" target="_blank">
https://f-droid.org/packages/am.ed.exportcontacts/</a></dd>

<dt>Share my number via QR code</dt>
<dd>This app displays a QR code others can easily scan<br />
<a href="https://f-droid.org/packages/com.github.characterdog.share_my_number/" target="_blank">
https://f-droid.org/packages/com.github.characterdog.share_my_number/</a></dd>

</dl>

<h4 id="apps_multimedia">Multimedia</h4>
<dl>

<dt>VLC</dt>
<dd>Video and music player<br />
<a href="https://f-droid.org/packages/org.videolan.vlc/" target="_blank">
https://f-droid.org/packages/org.videolan.vlc/</a></dd>

<dt>eSpeak</dt>
<dd>Text-to-speech (TTS) engine<br />
<a href="https://f-droid.org/packages/com.reecedunn.espeak/" target="_blank">
https://f-droid.org/packages/com.reecedunn.espeak/</a><br />
Since LineageOS 16 (Android 9), a TTS engine is no longer included.</dd>

</dl>

<h4 id="apps_reading">Reading</h4>
<dl>

<dt>MuPDF</dt>
<dd>Lightweight document viewer<br />
<a href="https://f-droid.org/packages/com.artifex.mupdf.viewer.app/" target="_blank">
https://f-droid.org/packages/com.artifex.mupdf.viewer.app/</a></dd>

<dt>LibreOffice Viewer</dt>
<dd>Read various office file formats<br />
<a href="https://f-droid.org/packages/org.documentfoundation.libreoffice/" target="_blank">
https://f-droid.org/packages/org.documentfoundation.libreoffice/</a></dd>

</dl>

<h4 id="apps_theming">Theming</h4>
<dl>

<dt>Muzei</dt>
<dd>Live wallpaper of famous art<br />
<a href="https://f-droid.org/packages/net.nurik.roman.muzei/" target="_blank">
https://f-droid.org/packages/net.nurik.roman.muzei/</a></dd>

</dl>

<h4 id="apps_games">Games</h4>
<dl>

<dt>Apple Flinger</dt>
<dd>Use a slingshot to shoot with apples<br />
<a href="https://f-droid.org/packages/com.gitlab.ardash.appleflinger.android/" target="_blank">
https://f-droid.org/packages/com.gitlab.ardash.appleflinger.android/</a></dd>

<dt>Mindustry</dt>
<dd>A factory-based sandbox tower defense game<br />
<a href="https://f-droid.org/packages/io.anuke.mindustry/" target="_blank">
https://f-droid.org/packages/io.anuke.mindustry/</a></dd>

<dt>PPSSPP</dt>
<dd>PSP emulator<br />
<a href="https://f-droid.org/packages/org.ppsspp.ppsspp/" target="_blank">
https://f-droid.org/packages/org.ppsspp.ppsspp/</a></dd>

<dt>lichess</dt>
<dd>Play chess online against others or offline against Stockfish engine<br />
<a href="https://f-droid.org/packages/org.lichess.mobileapp.free/" target="_blank">
https://f-droid.org/packages/org.lichess.mobileapp.free/</a></dd>

</dl>

<h4 id="apps_science">Science and Education</h4>
<dl>

<dt>Aard 2</dt>
<dd>Offline dictionary<br />
<a href="https://f-droid.org/packages/itkach.aard2/" target="_blank">
https://f-droid.org/packages/itkach.aard2/</a><br />
Dictionaries:
<a href="https://github.com/itkach/slob/wiki/Dictionaries" target="_blank">
https://github.com/itkach/slob/wiki/Dictionaries</a></dd>

<dt>Graph 89</dt>
<dd>Calculator emulator<br />
<a href="https://f-droid.org/packages/com.Bisha.TI89EmuDonation/" target="_blank">
https://f-droid.org/packages/com.Bisha.TI89EmuDonation/</a><br />
ROM:
<a href="https://www.ticalc.org/programming/emulators/romdump.html#12" target="_blank">
https://www.ticalc.org/programming/emulators/romdump.html#12</a></dd>

</dl>

<h4 id="apps_development">Development</h4>
<dl>

<dt>Acode</dt>
<dd>Text editor with syntax highlighting<br />
<a href="https://f-droid.org/packages/com.foxdebug.acode/" target="_blank">
https://f-droid.org/packages/com.foxdebug.acode/</a></dd>

<dt>Termux</dt>
<dd>Terminal emulation<br />
<a href="https://f-droid.org/packages/com.termux/" target="_blank">
https://f-droid.org/packages/com.termux/</a><br />
On first start, the bootstrap zip file is downloaded and extracted to <code>/data/data/com.termux/files/usr/</code>.<br />
Terminal toolbar can be hidden by pressing <kbd>volume up</kbd> and <kbd>q</kbd>.</dd>

<dt>Termux:API</dt>
<dd>Command line access to device API<br />
<a href="https://f-droid.org/packages/com.termux.api/" target="_blank">
https://f-droid.org/packages/com.termux.api/</a><br />
Version 0.31 is the last that supports sending sms messages.<br />
To install old versions, the F-Droid Archive repository needs to be enabled.</dd>

<dt>Hacker's Keyboard</dt>
<dd>Keyboard with tab, ctrl and arrow keys<br />
<a href="https://f-droid.org/packages/org.pocketworkstation.pckeyboard/" target="_blank">
https://f-droid.org/packages/org.pocketworkstation.pckeyboard/</a></dd>

</dl>


<h3 id="verify_signature">Verify Signature of Packages</h3>
<p>
Android packages (APKs) are signed with self-signed certificates.
</p>
<p>
The command line tool <code>apksigner</code> is part of the Android SDK Build Tools:
</p>
<p>
<a href="https://developer.android.com/studio/command-line/apksigner#usage-verify" target="_blank">
https://developer.android.com/studio/command-line/apksigner#usage-verify</a>
</p>
<p>
In Termux, <code>apksigner</code> can be installed using the following command:
</p>
<pre><code class="language-bash">pkg install apksigner</code></pre>
<p>
To verify the signature of an APK, execute the following command:
</p>
<pre><code class="language-bash">apksigner verify --print-certs org.fdroid.fdroid_1010000.apk</code></pre>

<dl>

<dt>F-Droid</dt>
<dd><pre>
Signer #1 certificate DN: CN=Ciaran Gultnieks, OU=Unknown, O=Unknown, L=Wetherby, ST=Unknown, C=UK
Signer #1 certificate SHA-256 digest: 43238d512c1e5eb2d6569f4a3afbf5523418b82e0a3ed1552770abb9a9c9ccab
Signer #1 certificate SHA-1 digest: 05f2e65928088981b317fc9a6dbfe04b0fa13b4e
Signer #1 certificate MD5 digest: 17c55c628056e193e95644e989792786
</pre></dd>

<dt>HERE WeGo</dt>
<dd><pre>
Signer #1 certificate DN: CN=CodeSigning for HERE Global BV, OU=Android Signing, OU=Android Signing, O=HERE Global BV, L=Veldhoven, ST=Veldhoven, C=NL
Signer #1 certificate SHA-256 digest: f3fa1a6eb3f8bace3662e83ab167a90462d1a78240e64cf24675887c5d78cb13
Signer #1 certificate SHA-1 digest: 6d256640c0eff26ccb3a8b817cdc901f3d1d77b4
Signer #1 certificate MD5 digest: 528eab01b512151498f89f5e88767bf9
</pre></dd>

<dt>Magic Earth</dt>
<dd><pre>
Signer #1 certificate DN: CN=ROUTE 66, OU=ROUTE 66 Switzerland GmbH, O=ROUTE 66 Switzerland GmbH, L=Brasov, ST=Romania, C=RO
Signer #1 certificate SHA-256 digest: fa91bd3a8bfa2b03bda48422b238d584f23921154a5279e721f2f90a74d38806
Signer #1 certificate SHA-1 digest: 3705ba93d86f9566cdb440977e65c8df660514ae
Signer #1 certificate MD5 digest: 82380142088327f4d4a14c9547ff46de
</pre></dd>

<dt>Tor Browser</dt>
<dd><pre>
Signer #1 certificate DN: C=US, ST=WA, L=Seattle, O=The Tor Project, CN=Tor Browser
Signer #1 certificate SHA-256 digest: 20061f045e737c67375c17794cfedb436a03cec6bacb7cb9f96642205ca2cec8
Signer #1 certificate SHA-1 digest: 6e9d890dcf0d5ca0d7c8f28c822ed228da5f3490
Signer #1 certificate MD5 digest: e8ee59c262de3d867b015afbae38e061
</pre></dd>

</dl>


<h3 id="send_sms">Send SMS Messages</h3>

<h4 id="send_sms_termux">Using Termux:API</h4>
<pre><code class="language-bash">termux-sms-send -n "+1234567890" "Just a test!"</code></pre>
<ul>
<li>Requires Termux:API version &lt;= 0.31</li>
<li>The sent message is logged in the messages app</li>
</ul>

<h4 id="send_sms_adb">Using ADB</h4>
<p>
Functions of service interfaces are declared in<br />
the Android Interface Definition Language (AIDL).<br />
There is a service interface to handle SMS API requests:
</p>
<p>
<a href="https://github.com/aosp-mirror/platform_frameworks_base/blob/android12-release/telephony/java/com/android/internal/telephony/ISms.aidl#L123" target="_blank">
ISms.aidl of Android 12</a>:
</p>
<pre><code class="language-plaintext">/* ... */
interface ISms {
    /* ... */
    void sendTextForSubscriber(in int subId, String callingPkg, String callingAttributionTag,
            in String destAddr, in String scAddr, in String text, in PendingIntent sentIntent,
            in PendingIntent deliveryIntent, in boolean persistMessageForNonDefaultSmsApp,
            in long messageId);
    /* ... */
}
</code></pre>
<p>
Functions of the service interfaces can be called via <code>adb shell</code>.<br />
The follwing shell command calls the 5th function of the <code>isms</code> service interface:
</p>
<pre><code class="language-bash">adb shell service call isms 5  i32 0  s16 "com.android.mms.service"  s16 "null" \
    s16 "+1234567890"  s16 "null"  s16 "'Just a test'"  s16 "null" \
    s16 "null"  i32 0 \
    i64 0
</code></pre>

<h3 id="android_studio">Android Studio</h3>
<p>
The Android Studio is the official Integrated Development Environment (IDE)<br />
for Android. The IDE based on IntelliJ IDEA.<br />
The installer is available on the developer pages of Android:
</p>
<p>
<a href="https://developer.android.com/studio" target="_blank">
https://developer.android.com/studio</a>
</p>


<h3 id="external_links">External Links</h3>
<dl>

<dt>Termux</dt>
<dd>
<a href="https://termux.com/" target="_blank">
https://termux.com/</a><br />
<a href="https://github.com/termux/termux-packages/releases" target="_blank">
https://github.com/termux/termux-packages/releases</a>
</dd>

<dt>microG Project</dt>
<dd>
<a href="https://microg.org/" target="_blank">
https://microg.org/</a><br />
<a href="https://lineage.microg.org/" target="_blank">
https://lineage.microg.org/</a>
</dd>

<dt>Privacy Firendly Apps</dt>
<dd>
<a href="https://secuso.aifb.kit.edu/105.php" target="_blank">
https://secuso.aifb.kit.edu/105.php</a>
</dd>

<dt>Dominik Sch&uuml;rmann</dt>
<dd>
<a href="https://www.schuermann.eu/about/#android" target="_blank">
https://www.schuermann.eu/about/#android</a>
</dd>

</dl>