<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Android | SUMAN</title><link>https://suman.netlify.app/category/android/</link><atom:link href="https://suman.netlify.app/category/android/index.xml" rel="self" type="application/rss+xml"/><description>Android</description><generator>Hugo Blox Builder (https://hugoblox.com)</generator><language>en-us</language><lastBuildDate>Fri, 17 Apr 2026 00:00:00 +0000</lastBuildDate><image><url>https://suman.netlify.app/media/icon_hu_1f8f41e4ad59c1b5.png</url><title>Android</title><link>https://suman.netlify.app/category/android/</link></image><item><title>Redmi Note 15 Pro+ 5G — Complete Debloat &amp; Ad Removal Guide</title><link>https://suman.netlify.app/post/debloat-ad-removal-guide/</link><pubDate>Fri, 17 Apr 2026 00:00:00 +0000</pubDate><guid>https://suman.netlify.app/post/debloat-ad-removal-guide/</guid><description>&lt;h2 id="-device-info"&gt;📌 Device Info&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Details&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Device&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Redmi Note 15 Pro+ 5G&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Purchase Price&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;৳60,000 (3-month EMI)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;OS&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;HyperOS (Global)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;PC&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Windows 10 Pro + Android Studio installed&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id="-important--payjoy-warning-emi-device"&gt;⚠️ IMPORTANT — PayJoy Warning (EMI Device)&lt;/h2&gt;
&lt;p&gt;The app &lt;code&gt;com.payjoy.access&lt;/code&gt; was found pre-installed. &lt;strong&gt;PayJoy&lt;/strong&gt; is a device-financing lock app. Since this phone was bought on &lt;strong&gt;3-month EMI&lt;/strong&gt;, &lt;strong&gt;do NOT remove this app&lt;/strong&gt; until all installments are paid — the finance company can remotely lock your device.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;✅ Once EMI is fully paid, remove it safely:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;adb shell pm uninstall -k --user &lt;span class="m"&gt;0&lt;/span&gt; com.payjoy.access
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id="-adb-methods--choose-one"&gt;🔧 ADB Methods — Choose One&lt;/h2&gt;
&lt;h3 id="method-1--adb-via-pc-windows"&gt;Method 1 — ADB via PC (Windows)&lt;/h3&gt;
&lt;h4 id="step-1--enable-developer-options"&gt;Step 1 — Enable Developer Options&lt;/h4&gt;
&lt;p&gt;&lt;code&gt;Settings → About Phone → tap &amp;quot;HyperOS Version&amp;quot; 7 times fast&lt;/code&gt;
You&amp;rsquo;ll see: &lt;em&gt;&amp;ldquo;You are now a developer!&amp;rdquo;&lt;/em&gt;&lt;/p&gt;
&lt;h4 id="step-2--enable-usb-debugging"&gt;Step 2 — Enable USB Debugging&lt;/h4&gt;
&lt;p&gt;&lt;code&gt;Settings → Additional Settings → Developer Options&lt;/code&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Turn ON &lt;strong&gt;USB Debugging&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Turn ON &lt;strong&gt;USB Debugging (Security Settings)&lt;/strong&gt; ← &lt;em&gt;Critical for HyperOS!&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="step-3--get-adb-on-pc"&gt;Step 3 — Get ADB on PC&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;Option A — From Android Studio (already installed):&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-gdscript3" data-lang="gdscript3"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;C&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;\&lt;span class="n"&gt;Users&lt;/span&gt;\&lt;span class="n"&gt;YourName&lt;/span&gt;\&lt;span class="n"&gt;AppData&lt;/span&gt;\&lt;span class="n"&gt;Local&lt;/span&gt;\&lt;span class="n"&gt;Android&lt;/span&gt;\&lt;span class="n"&gt;Sdk&lt;/span&gt;\&lt;span class="n"&gt;platform&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;tools&lt;/span&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;Shift + Right-click&lt;/code&gt; in that folder → &lt;em&gt;Open PowerShell / CMD here&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Option B — Download standalone:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://developer.android.com/tools/releases/platform-tools" target="_blank" rel="noopener"&gt;https://developer.android.com/tools/releases/platform-tools&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Extract to &lt;code&gt;C:\platform-tools\&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Option C — Add to System PATH (permanent):&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;Win + S&lt;/code&gt; → &lt;em&gt;&amp;ldquo;Environment Variables&amp;rdquo;&lt;/em&gt; → &lt;strong&gt;Path&lt;/strong&gt; → &lt;strong&gt;Edit&lt;/strong&gt; → &lt;strong&gt;New&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Paste: &lt;code&gt;C:\Users\Dell\AppData\Local\Android\Sdk\platform-tools&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;OK → OK → OK → reopen terminal&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 id="step-4--connect--verify"&gt;Step 4 — Connect &amp;amp; Verify&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Plug phone with original data cable → tap &lt;strong&gt;ALLOW&lt;/strong&gt; on phone popup&lt;/li&gt;
&lt;li&gt;Change USB mode to &lt;strong&gt;File Transfer (MTP)&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-powershell" data-lang="powershell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# PowerShell — use .\adb prefix&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;.\&lt;/span&gt;&lt;span class="n"&gt;adb&lt;/span&gt; &lt;span class="n"&gt;devices&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# CMD — use adb directly&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;adb&lt;/span&gt; &lt;span class="n"&gt;devices&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Expected output:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;List of devices attached
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;XXXXXXXXXXXXXXXX device
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Output&lt;/th&gt;
&lt;th&gt;Fix&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;unauthorized&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Check phone popup, tap Allow&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;offline&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Try different USB port or cable&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;empty list&lt;/td&gt;
&lt;td&gt;Set USB mode to MTP; run &lt;code&gt;adb kill-server&lt;/code&gt; then &lt;code&gt;adb start-server&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h3 id="method-2--wireless-adb-via-termux-no-pc-needed--recommended"&gt;Method 2 — Wireless ADB via Termux (No PC Needed) ✅ Recommended&lt;/h3&gt;
&lt;p&gt;Shizuku is not available for HyperOS. Use Termux with Wireless ADB instead — full ADB control, no PC required.&lt;/p&gt;
&lt;h4 id="step-1--enable-wireless-debugging-on-phone"&gt;Step 1 — Enable Wireless Debugging on Phone&lt;/h4&gt;
&lt;p&gt;&lt;code&gt;Settings → Additional Settings → Developer Options → Wireless Debugging → Turn ON&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Tap &lt;strong&gt;&amp;ldquo;Pair device with pairing code&amp;rdquo;&lt;/strong&gt; — note the IP, pairing port, and pairing code.&lt;/p&gt;
&lt;h4 id="step-2--install-adb-in-termux"&gt;Step 2 — Install ADB in Termux&lt;/h4&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pkg update &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; pkg install android-tools
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id="step-3--pair-termux-with-phone"&gt;Step 3 — Pair Termux with Phone&lt;/h4&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;adb pair &amp;lt;IP&amp;gt;:&amp;lt;pairing-port&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Example:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;adb pair 192.168.1.5:41234
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Enter the pairing code when prompted: 123456&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id="step-4--connect"&gt;Step 4 — Connect&lt;/h4&gt;
&lt;p&gt;Back in the Wireless Debugging screen, note the main &lt;strong&gt;IP:Port&lt;/strong&gt; (different from pairing port):&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;adb connect 192.168.1.5:5555
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id="step-5--run-commands-normally"&gt;Step 5 — Run Commands Normally&lt;/h4&gt;
&lt;p&gt;All commands below work exactly the same — no &lt;code&gt;.\&lt;/code&gt; prefix needed in Termux:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;adb shell pm uninstall -k --user &lt;span class="m"&gt;0&lt;/span&gt; com.package.name
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h2 id="-removal-results-actual-session-via-pc"&gt;🗑️ Removal Results (Actual Session via PC)&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Package&lt;/th&gt;
&lt;th&gt;App&lt;/th&gt;
&lt;th&gt;Result&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;com.xiaomi.mipicks&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;GetApps Store&lt;/td&gt;
&lt;td&gt;✅ Removed&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;com.miui.videoplayer&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Mi Video&lt;/td&gt;
&lt;td&gt;✅ Removed&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;com.xiaomi.joyose&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Ad/Tracking Service&lt;/td&gt;
&lt;td&gt;✅ Removed&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;com.miui.yellowpage&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Yellow Pages&lt;/td&gt;
&lt;td&gt;✅ Removed&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;com.miui.cleanmaster&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Cleaner&lt;/td&gt;
&lt;td&gt;❌ Not installed&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;com.xiaomi.gamecenter&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Game Center&lt;/td&gt;
&lt;td&gt;❌ Not installed&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;com.mi.globalbrowser&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Mi Browser&lt;/td&gt;
&lt;td&gt;❌ Not installed&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;com.miui.android.fashiongallery&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Fashion Gallery&lt;/td&gt;
&lt;td&gt;❌ Not installed&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;com.miui.systemAdSolution&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Ad System&lt;/td&gt;
&lt;td&gt;❌ Not installed&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;com.miui.weather2&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Mi Weather&lt;/td&gt;
&lt;td&gt;❌ Protected [-1000]&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;[!IMPORTANT]&lt;br&gt;
Use &lt;strong&gt;.\adb&lt;/strong&gt; instead of adb (Quick Fix); Just add .\ before every command:&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="-priority--ad--tracking-apps-remove-first"&gt;🔴 Priority — Ad &amp;amp; Tracking Apps (Remove First)&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;adb shell pm uninstall -k --user &lt;span class="m"&gt;0&lt;/span&gt; com.miui.msa.global
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;adb shell pm uninstall -k --user &lt;span class="m"&gt;0&lt;/span&gt; com.miui.analytics
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;adb shell pm uninstall -k --user &lt;span class="m"&gt;0&lt;/span&gt; com.mi.globalminusscreen
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;adb shell pm uninstall -k --user &lt;span class="m"&gt;0&lt;/span&gt; com.xiaomi.discover
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;adb shell pm uninstall -k --user &lt;span class="m"&gt;0&lt;/span&gt; com.miui.cleaner
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;adb shell pm uninstall -k --user &lt;span class="m"&gt;0&lt;/span&gt; com.miui.bugreport
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;adb shell pm uninstall -k --user &lt;span class="m"&gt;0&lt;/span&gt; com.xiaomi.barrage
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;adb shell pm uninstall -k --user &lt;span class="m"&gt;0&lt;/span&gt; com.miui.misightservice
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Package&lt;/th&gt;
&lt;th&gt;Why Remove&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;com.miui.msa.global&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Main ad engine — serves ads system-wide&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;com.miui.analytics&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Tracks usage, sends data to Xiaomi&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;com.mi.globalminusscreen&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Left-swipe news feed full of ads&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;com.xiaomi.discover&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&amp;ldquo;Content discovery&amp;rdquo; = ads in disguise&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;com.miui.cleaner&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Fake cleaner, shows lots of ads&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;com.xiaomi.barrage&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Floating danmaku feature, useless&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;com.miui.bugreport&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Sends bug reports to Xiaomi servers&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;com.miui.misightservice&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Sight AI tracking service&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id="-facebook-bloatware-remove"&gt;🟠 Facebook Bloatware (Remove)&lt;/h2&gt;
&lt;p&gt;These run silently in the background even if you never use Facebook:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;adb shell pm uninstall -k --user &lt;span class="m"&gt;0&lt;/span&gt; com.facebook.appmanager
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;adb shell pm uninstall -k --user &lt;span class="m"&gt;0&lt;/span&gt; com.facebook.system
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;adb shell pm uninstall -k --user &lt;span class="m"&gt;0&lt;/span&gt; com.facebook.services
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h2 id="-microsoft-bloatware-remove"&gt;🟠 Microsoft Bloatware (Remove)&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;adb shell pm uninstall -k --user &lt;span class="m"&gt;0&lt;/span&gt; com.microsoft.appmanager
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;adb shell pm uninstall -k --user &lt;span class="m"&gt;0&lt;/span&gt; com.microsoft.deviceintegrationservice
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;adb shell pm uninstall -k --user &lt;span class="m"&gt;0&lt;/span&gt; com.microsoftsdk.crossdeviceservicebroker
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h2 id="-xiaomi-optional-apps"&gt;🟡 Xiaomi Optional Apps&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Package&lt;/th&gt;
&lt;th&gt;App&lt;/th&gt;
&lt;th&gt;What It Does&lt;/th&gt;
&lt;th&gt;Remove If&amp;hellip;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;com.miui.player&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Mi Music&lt;/td&gt;
&lt;td&gt;Built-in music player&lt;/td&gt;
&lt;td&gt;You use VLC, Auxio, etc.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;com.mi.healthglobal&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Mi Health&lt;/td&gt;
&lt;td&gt;Fitness/step tracking&lt;/td&gt;
&lt;td&gt;You don&amp;rsquo;t use Mi Band&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;com.miui.cloudbackup&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Mi Cloud Backup&lt;/td&gt;
&lt;td&gt;Backs up to Xiaomi cloud&lt;/td&gt;
&lt;td&gt;You use Google Backup&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;com.miui.cloudservice&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Mi Cloud Service&lt;/td&gt;
&lt;td&gt;Core Xiaomi cloud engine&lt;/td&gt;
&lt;td&gt;You don&amp;rsquo;t use Mi Cloud&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;com.miui.micloudsync&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Mi Cloud Sync&lt;/td&gt;
&lt;td&gt;Syncs contacts to Mi Cloud&lt;/td&gt;
&lt;td&gt;You use Google Contacts&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;com.miui.misound&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Mi Sound&lt;/td&gt;
&lt;td&gt;Audio tuner/equalizer&lt;/td&gt;
&lt;td&gt;You don&amp;rsquo;t use Xiaomi sound&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;com.miui.touchassistant&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Touch Assistant&lt;/td&gt;
&lt;td&gt;Floating virtual home button&lt;/td&gt;
&lt;td&gt;You use gesture navigation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;com.xiaomi.aiservice&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Xiaomi AI Service&lt;/td&gt;
&lt;td&gt;Powers Xiaomi AI features&lt;/td&gt;
&lt;td&gt;You don&amp;rsquo;t use Xiaomi AI&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;com.xiaomi.cameramind&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Camera Mind AI&lt;/td&gt;
&lt;td&gt;AI scene detection&lt;/td&gt;
&lt;td&gt;You prefer manual camera&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;com.xiaomi.aicr&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;AI Call Recording&lt;/td&gt;
&lt;td&gt;Call transcription&lt;/td&gt;
&lt;td&gt;You don&amp;rsquo;t record calls&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;com.xiaomi.aiasst.vision&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;AI Vision&lt;/td&gt;
&lt;td&gt;Camera &amp;ldquo;scan to search&amp;rdquo;&lt;/td&gt;
&lt;td&gt;You don&amp;rsquo;t use this&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;com.miui.extraphoto&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Extra Photo Formats&lt;/td&gt;
&lt;td&gt;RAW/HEIF support&lt;/td&gt;
&lt;td&gt;You only use JPG&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;com.miui.aod&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Always On Display&lt;/td&gt;
&lt;td&gt;Clock on locked screen&lt;/td&gt;
&lt;td&gt;You don&amp;rsquo;t use AOD&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;com.mi.appfinder&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;App Finder&lt;/td&gt;
&lt;td&gt;Swipe-down app search&lt;/td&gt;
&lt;td&gt;You use Google search&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;com.miui.backup&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Mi Backup&lt;/td&gt;
&lt;td&gt;Local + cloud backup&lt;/td&gt;
&lt;td&gt;You back up via Google/ADB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;com.miui.phrase&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Phrases&lt;/td&gt;
&lt;td&gt;Text snippet shortcuts&lt;/td&gt;
&lt;td&gt;You never use this&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;com.miui.qr&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Mi QR Scanner&lt;/td&gt;
&lt;td&gt;Built-in QR scanner&lt;/td&gt;
&lt;td&gt;You use Google Lens&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;adb shell pm uninstall -k --user &lt;span class="m"&gt;0&lt;/span&gt; com.miui.player
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;adb shell pm uninstall -k --user &lt;span class="m"&gt;0&lt;/span&gt; com.mi.healthglobal
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;adb shell pm uninstall -k --user &lt;span class="m"&gt;0&lt;/span&gt; com.miui.cloudbackup
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;adb shell pm uninstall -k --user &lt;span class="m"&gt;0&lt;/span&gt; com.miui.cloudservice
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;adb shell pm uninstall -k --user &lt;span class="m"&gt;0&lt;/span&gt; com.miui.micloudsync
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;adb shell pm uninstall -k --user &lt;span class="m"&gt;0&lt;/span&gt; com.miui.misound
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;adb shell pm uninstall -k --user &lt;span class="m"&gt;0&lt;/span&gt; com.miui.touchassistant
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;adb shell pm uninstall -k --user &lt;span class="m"&gt;0&lt;/span&gt; com.xiaomi.aiservice
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;adb shell pm uninstall -k --user &lt;span class="m"&gt;0&lt;/span&gt; com.xiaomi.cameramind
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;adb shell pm uninstall -k --user &lt;span class="m"&gt;0&lt;/span&gt; com.xiaomi.aicr
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;adb shell pm uninstall -k --user &lt;span class="m"&gt;0&lt;/span&gt; com.xiaomi.aiasst.vision
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;adb shell pm uninstall -k --user &lt;span class="m"&gt;0&lt;/span&gt; com.miui.extraphoto
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;adb shell pm uninstall -k --user &lt;span class="m"&gt;0&lt;/span&gt; com.miui.aod
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;adb shell pm uninstall -k --user &lt;span class="m"&gt;0&lt;/span&gt; com.mi.appfinder
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;adb shell pm uninstall -k --user &lt;span class="m"&gt;0&lt;/span&gt; com.miui.backup
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;adb shell pm uninstall -k --user &lt;span class="m"&gt;0&lt;/span&gt; com.miui.phrase
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;adb shell pm uninstall -k --user &lt;span class="m"&gt;0&lt;/span&gt; com.miui.qr
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h2 id="-google-apps-optional"&gt;🟡 Google Apps (Optional)&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Package&lt;/th&gt;
&lt;th&gt;App&lt;/th&gt;
&lt;th&gt;Remove If&amp;hellip;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;com.google.android.apps.tachyon&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Google Meet&lt;/td&gt;
&lt;td&gt;You use Zoom/Jitsi&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;com.google.android.apps.youtube.music&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;YouTube Music&lt;/td&gt;
&lt;td&gt;You use VLC/local music&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;com.google.android.videos&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Google TV&lt;/td&gt;
&lt;td&gt;You don&amp;rsquo;t buy from Google Play&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;com.google.android.apps.bard&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Google Gemini&lt;/td&gt;
&lt;td&gt;You use Claude 😄&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;com.google.android.apps.subscriptions.red&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;YouTube Premium&lt;/td&gt;
&lt;td&gt;You don&amp;rsquo;t have YT Premium&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;com.google.android.apps.wellbeing&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Digital Wellbeing&lt;/td&gt;
&lt;td&gt;You don&amp;rsquo;t track screen time&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;com.google.android.apps.safetyhub&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Safety Hub&lt;/td&gt;
&lt;td&gt;You don&amp;rsquo;t use Google safety&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;com.google.android.gm&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Gmail&lt;/td&gt;
&lt;td&gt;You use K-9 Mail or webmail&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;com.google.android.apps.docs&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Google Docs&lt;/td&gt;
&lt;td&gt;You use LibreOffice, etc.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;com.google.android.apps.messaging&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Google Messages&lt;/td&gt;
&lt;td&gt;You use Xiaomi Messages&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;com.google.android.apps.photos&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Google Photos&lt;/td&gt;
&lt;td&gt;You use local/other backup&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;com.google.android.apps.restore&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Google Restore&lt;/td&gt;
&lt;td&gt;Phone is already set up&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;adb shell pm uninstall -k --user &lt;span class="m"&gt;0&lt;/span&gt; com.google.android.apps.tachyon
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;adb shell pm uninstall -k --user &lt;span class="m"&gt;0&lt;/span&gt; com.google.android.apps.youtube.music
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;adb shell pm uninstall -k --user &lt;span class="m"&gt;0&lt;/span&gt; com.google.android.videos
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;adb shell pm uninstall -k --user &lt;span class="m"&gt;0&lt;/span&gt; com.google.android.apps.bard
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;adb shell pm uninstall -k --user &lt;span class="m"&gt;0&lt;/span&gt; com.google.android.apps.subscriptions.red
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;adb shell pm uninstall -k --user &lt;span class="m"&gt;0&lt;/span&gt; com.google.android.apps.wellbeing
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;adb shell pm uninstall -k --user &lt;span class="m"&gt;0&lt;/span&gt; com.google.android.apps.safetyhub
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;adb shell pm uninstall -k --user &lt;span class="m"&gt;0&lt;/span&gt; com.google.android.gm
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;adb shell pm uninstall -k --user &lt;span class="m"&gt;0&lt;/span&gt; com.google.android.apps.docs
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;adb shell pm uninstall -k --user &lt;span class="m"&gt;0&lt;/span&gt; com.google.android.apps.messaging
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;adb shell pm uninstall -k --user &lt;span class="m"&gt;0&lt;/span&gt; com.google.android.apps.photos
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;adb shell pm uninstall -k --user &lt;span class="m"&gt;0&lt;/span&gt; com.google.android.apps.restore
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;blockquote&gt;
&lt;p&gt;⚠️ Skip Gmail if you actively use it. Skip Google Photos if you rely on it for backup.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id="-do-not-touch--critical-system-apps"&gt;🟢 DO NOT TOUCH — Critical System Apps&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Package&lt;/th&gt;
&lt;th&gt;Why Keep&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;com.android.systemui&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Core UI — removing = black screen&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;com.google.android.gms&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Google Play Services&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;com.android.vending&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Play Store&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;com.miui.home&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Launcher&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;com.miui.securitycenter&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Core security&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;com.miui.securitycore&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Core security&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;com.android.phone&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Phone calls&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;com.android.bluetooth&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Bluetooth&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;com.android.settings&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Settings app&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;com.xiaomi.account&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Mi Account (Find Device)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;com.qualcomm.*&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Chipset drivers&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;com.android.providers.*&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Data providers&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id="-find-any-apps-package-name"&gt;🔍 Find Any App&amp;rsquo;s Package Name&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;From Phone Settings:&lt;/strong&gt;
&lt;code&gt;Settings → Apps → [find the app] → ⋮ → Additional Info&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;From ADB:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# List all system apps&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;adb shell pm list packages -s
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Filter by keyword&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;adb shell pm list packages -s &lt;span class="p"&gt;|&lt;/span&gt; grep &lt;span class="s2"&gt;&amp;#34;miui&amp;#34;&lt;/span&gt; &lt;span class="c1"&gt;# Termux / Linux&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;adb shell pm list packages -s &lt;span class="p"&gt;|&lt;/span&gt; findstr &lt;span class="s2"&gt;&amp;#34;miui&amp;#34;&lt;/span&gt; &lt;span class="c1"&gt;# Windows CMD&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h2 id="-restore-a-mistakenly-removed-app"&gt;🔄 Restore a Mistakenly Removed App&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;adb shell cmd package install-existing com.package.name
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h2 id="-block-remaining-ads--private-dns"&gt;🛡️ Block Remaining Ads — Private DNS&lt;/h2&gt;
&lt;p&gt;Even after debloating, some ads slip through system apps. Block them system-wide with no root:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Settings → More Connection Settings → Private DNS → Private DNS provider hostname&lt;/code&gt;&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Option&lt;/th&gt;
&lt;th&gt;Hostname&lt;/th&gt;
&lt;th&gt;Notes&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;✅ &lt;strong&gt;AdGuard DNS&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;dns.adguard.com&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;No account needed, just works&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;NextDNS&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;&amp;lt;your-id&amp;gt;.dns.nextdns.io&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Needs free account at nextdns.io — your unique ID is shown on the dashboard&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;blockquote&gt;
&lt;p&gt;⚠️ Entering just &lt;code&gt;nextdns.io&lt;/code&gt; will break internet. You must use your personal subdomain like &lt;code&gt;abc123.dns.nextdns.io&lt;/code&gt; from your NextDNS dashboard.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;Recommendation:&lt;/strong&gt; Use &lt;code&gt;dns.adguard.com&lt;/code&gt; — simpler, zero setup, equally effective.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="-open-source-ad-free-alternatives-f-droid"&gt;📱 Open-Source Ad-Free Alternatives (F-Droid)&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Removed App&lt;/th&gt;
&lt;th&gt;Replacement&lt;/th&gt;
&lt;th&gt;Source&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Mi Browser&lt;/td&gt;
&lt;td&gt;Mull / Fennec F-Droid (Firefox-based)&lt;/td&gt;
&lt;td&gt;F-Droid&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mi Video&lt;/td&gt;
&lt;td&gt;VLC / mpv for Android&lt;/td&gt;
&lt;td&gt;F-Droid&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mi Music&lt;/td&gt;
&lt;td&gt;Auxio / Music Player GO&lt;/td&gt;
&lt;td&gt;F-Droid&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mi File Manager&lt;/td&gt;
&lt;td&gt;Material Files&lt;/td&gt;
&lt;td&gt;F-Droid&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mi Calendar&lt;/td&gt;
&lt;td&gt;Etar Calendar&lt;/td&gt;
&lt;td&gt;F-Droid&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GetApps&lt;/td&gt;
&lt;td&gt;F-Droid&lt;/td&gt;
&lt;td&gt;f-droid.org&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mi Weather&lt;/td&gt;
&lt;td&gt;Breezy Weather&lt;/td&gt;
&lt;td&gt;F-Droid&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mi Notes&lt;/td&gt;
&lt;td&gt;Markor (Markdown notes)&lt;/td&gt;
&lt;td&gt;F-Droid&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mi Gallery&lt;/td&gt;
&lt;td&gt;Aves&lt;/td&gt;
&lt;td&gt;F-Droid / GitHub&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mi Cleaner&lt;/td&gt;
&lt;td&gt;❌ Not needed — Android manages RAM itself&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Game Center&lt;/td&gt;
&lt;td&gt;❌ Just uninstall&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id="-after-ota-updates"&gt;💡 After OTA Updates&lt;/h2&gt;
&lt;p&gt;Apps removed via ADB are &lt;strong&gt;hidden for your user account&lt;/strong&gt;, not fully deleted. A major HyperOS OTA may restore some of them. Simply &lt;strong&gt;re-run the relevant commands&lt;/strong&gt; — takes about 2 minutes.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;Reference guide generated from a personal Claude conversation — April 2026.&lt;/em&gt;&lt;br&gt;
&lt;em&gt;For a full community-maintained package list, see &lt;a href="https://github.com/Universal-Debloater-Alliance/universal-android-debloater-next-generation" target="_blank" rel="noopener"&gt;UAD-ng on GitHub&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Converting Your Web App to an Android App Using WebView</title><link>https://suman.netlify.app/post/android-app-dev/</link><pubDate>Fri, 27 Mar 2026 00:00:00 +0000</pubDate><guid>https://suman.netlify.app/post/android-app-dev/</guid><description>&lt;h1 id="converting-web-app-to-an-android-app-using-webview"&gt;Converting Web App to an Android App Using WebView&lt;/h1&gt;
&lt;h2 id="deploy-your-react-app-vercel"&gt;DEPLOY YOUR REACT APP (Vercel)&lt;/h2&gt;
&lt;p&gt;✅ Build your project (LOCAL)
📂 Open your React project folder
G:\lzproject\lzapp-v2
🔹 Open Terminal in this folder&lt;/p&gt;
&lt;p&gt;👉 In VS Code:&lt;/p&gt;
&lt;p&gt;Terminal → New Terminal
🔹 Run this command:
npm run build
✅ Expected result:&lt;/p&gt;
&lt;p&gt;You will see a new folder:&lt;/p&gt;
&lt;p&gt;dist/&lt;/p&gt;
&lt;p&gt;👉 This is your production build&lt;/p&gt;
&lt;p&gt;🌐 Deploy to Vercel
🔹 Step 1 — Open Vercel&lt;/p&gt;
&lt;p&gt;Go to:
👉 &lt;a href="https://vercel.com" target="_blank" rel="noopener"&gt;https://vercel.com&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;🔹 Step 2 — Login&lt;/p&gt;
&lt;p&gt;Use:&lt;/p&gt;
&lt;p&gt;GitHub (recommended)
OR
Google
🔹 Step 3 — Import Project&lt;/p&gt;
&lt;p&gt;Click:&lt;/p&gt;
&lt;p&gt;Add New → Project
🔹 Step 4 — Select your repo&lt;/p&gt;
&lt;p&gt;If your project is already on GitHub:&lt;/p&gt;
&lt;p&gt;👉 Select:&lt;/p&gt;
&lt;p&gt;lzapp-v2
🔹 Step 5 — Configure&lt;/p&gt;
&lt;p&gt;Vercel auto-detects Vite 👍&lt;/p&gt;
&lt;p&gt;Check:&lt;/p&gt;
&lt;p&gt;Framework: Vite
Build Command: npm run build
Output Directory: dist&lt;/p&gt;
&lt;p&gt;👉 Click:&lt;/p&gt;
&lt;p&gt;Deploy
⏳ Wait 1–2 minutes
✅ STEP 6 — Get your URL&lt;/p&gt;
&lt;p&gt;After deploy, you’ll get:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://your-project-name.vercel.app" target="_blank" rel="noopener"&gt;https://your-project-name.vercel.app&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;✅ Any update- TEST BEFORE DEPLOY&lt;/p&gt;
&lt;p&gt;Run locally:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;npm run dev
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;👉 Open: http://localhost:5173&lt;/p&gt;
&lt;p&gt;THEN DEPLOY AGAIN&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;npm run build
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Every time you change UI:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;1. Edit React (App.jsx / CSS)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;2. npm run build
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;3. Push or redeploy Vercel
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;4. Open Android app → updated automatically, See updated UI
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="-1-install-android-studio-setup"&gt;🚀 1. Install Android Studio (Setup)&lt;/h2&gt;
&lt;h3 id="-download--install"&gt;🔹 Download &amp;amp; Install&lt;/h3&gt;
&lt;p&gt;Head over to the official Android Developer website: &lt;a href="https://developer.android.com/studio" target="_blank" rel="noopener"&gt;https://developer.android.com/studio&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Download and install the latest version of Android Studio. The installation process is straightforward and includes everything you need to get started.&lt;/p&gt;
&lt;h3 id="-during-setup"&gt;🔹 During Setup&lt;/h3&gt;
&lt;p&gt;When prompted during installation, make sure to select:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;✅ Standard installation&lt;/li&gt;
&lt;li&gt;✅ Install Android SDK&lt;/li&gt;
&lt;li&gt;✅ Install Emulator (optional, but useful for testing)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="-after-installation"&gt;🔹 After Installation&lt;/h3&gt;
&lt;p&gt;Launch Android Studio and click &amp;ldquo;New Project&amp;rdquo; to begin.&lt;/p&gt;
&lt;h2 id="-2-create-new-android-project"&gt;📱 2. Create New Android Project&lt;/h2&gt;
&lt;p&gt;In the New Project wizard, select:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Template:&lt;/strong&gt; Empty Views Activity&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Language:&lt;/strong&gt; Java (simpler for beginners)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Minimum SDK:&lt;/strong&gt; API 21 (Android 5.0) - this covers about 95% of active Android devices&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Fill in the project details:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Name:&lt;/strong&gt; LzApp&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Package:&lt;/strong&gt; com.yourname.lzapp&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Click &lt;strong&gt;Finish&lt;/strong&gt; and let Android Studio set up your project.&lt;/p&gt;
&lt;h2 id="-3-add-internet-permission"&gt;🌐 3. Add Internet Permission&lt;/h2&gt;
&lt;p&gt;Your web app will need internet access, so we need to add the necessary permission.&lt;/p&gt;
&lt;p&gt;Navigate to: &lt;code&gt;app &amp;gt; src &amp;gt; main &amp;gt; AndroidManifest.xml&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Add this line just above the &lt;code&gt;&amp;lt;application&amp;gt;&lt;/code&gt; tag:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-xml" data-lang="xml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;&amp;lt;uses-permission&lt;/span&gt; &lt;span class="na"&gt;android:name=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;android.permission.INTERNET&amp;#34;&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="-4-add-webview-in-layout"&gt;🌍 4. Add WebView in Layout&lt;/h2&gt;
&lt;p&gt;Now let&amp;rsquo;s set up the user interface. Open: &lt;code&gt;res &amp;gt; layout &amp;gt; activity_main.xml&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Replace the entire contents with:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-xml" data-lang="xml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;&amp;lt;?xml version=&amp;#34;1.0&amp;#34; encoding=&amp;#34;utf-8&amp;#34;?&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;&amp;lt;WebView&lt;/span&gt; &lt;span class="na"&gt;xmlns:android=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;http://schemas.android.com/apk/res/android&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="na"&gt;android:id=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;@+id/webView&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="na"&gt;android:layout_width=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;match_parent&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="na"&gt;android:layout_height=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;match_parent&amp;#34;&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This creates a full-screen WebView that will display your web app.&lt;/p&gt;
&lt;h2 id="-5-load-your-vercel-app-in-webview"&gt;⚙️ 5. Load Your Vercel App in WebView&lt;/h2&gt;
&lt;p&gt;Open: &lt;code&gt;MainActivity.java&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Replace the entire file with:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-java" data-lang="java"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;package&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nn"&gt;com.yourname.landzoning&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;&lt;/span&gt;&lt;span class="kn"&gt;import&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nn"&gt;android.os.Bundle&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;&lt;/span&gt;&lt;span class="kn"&gt;import&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nn"&gt;android.webkit.WebView&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;&lt;/span&gt;&lt;span class="kn"&gt;import&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nn"&gt;android.webkit.WebViewClient&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;&lt;/span&gt;&lt;span class="kn"&gt;import&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nn"&gt;androidx.appcompat.app.AppCompatActivity&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;&lt;/span&gt;&lt;span class="kd"&gt;public&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;MainActivity&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kd"&gt;extends&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;AppCompatActivity&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;WebView&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;webView&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nd"&gt;@Override&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kd"&gt;protected&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kt"&gt;void&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;onCreate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Bundle&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;savedInstanceState&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kd"&gt;super&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="na"&gt;onCreate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;savedInstanceState&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;webView&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;WebView&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;setContentView&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;webView&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;webView&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setWebViewClient&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;WebViewClient&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;webView&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="na"&gt;getSettings&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="na"&gt;setJavaScriptEnabled&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;webView&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="na"&gt;getSettings&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="na"&gt;setDomStorageEnabled&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;webView&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="na"&gt;loadUrl&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;https://your-vercel-app.vercel.app&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Important:&lt;/strong&gt; Replace &lt;code&gt;https://your-vercel-app.vercel.app&lt;/code&gt; with your actual deployed Vercel URL.&lt;/p&gt;
&lt;h2 id="-6-handle-back-button-important"&gt;🔙 6. Handle Back Button (IMPORTANT)&lt;/h2&gt;
&lt;p&gt;To provide a native app experience, we need to handle the back button properly. Add this method to your &lt;code&gt;MainActivity.java&lt;/code&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-java" data-lang="java"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nd"&gt;@Override&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;&lt;/span&gt;&lt;span class="kd"&gt;public&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kt"&gt;void&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;onBackPressed&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;webView&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="na"&gt;canGoBack&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;webView&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="na"&gt;goBack&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kd"&gt;super&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="na"&gt;onBackPressed&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This allows users to navigate back through your web app&amp;rsquo;s history before exiting the app.&lt;/p&gt;
&lt;h2 id="-7-improve-webview-production-ready-basics"&gt;⚡ 7. Improve WebView (Production Ready Basics)&lt;/h2&gt;
&lt;p&gt;Let&amp;rsquo;s enhance the WebView settings for better performance and user experience. Add these lines after the existing settings in &lt;code&gt;onCreate()&lt;/code&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-java" data-lang="java"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;webView&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="na"&gt;getSettings&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="na"&gt;setLoadWithOverviewMode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;&lt;/span&gt;&lt;span class="n"&gt;webView&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="na"&gt;getSettings&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="na"&gt;setUseWideViewPort&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;&lt;/span&gt;&lt;span class="n"&gt;webView&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="na"&gt;getSettings&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="na"&gt;setBuiltInZoomControls&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;&lt;/span&gt;&lt;span class="n"&gt;webView&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="na"&gt;getSettings&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="na"&gt;setDisplayZoomControls&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;These settings ensure your web app displays properly on different screen sizes and provides zoom controls.&lt;/p&gt;
&lt;h2 id="-8-add-splash-screen"&gt;🎬 8. Add Splash Screen&lt;/h2&gt;
&lt;p&gt;A splash screen provides a professional first impression. Let&amp;rsquo;s add one.&lt;/p&gt;
&lt;h3 id="step-1-create-splash-layout"&gt;Step 1: Create splash layout&lt;/h3&gt;
&lt;p&gt;Create a new file: &lt;code&gt;res &amp;gt; layout &amp;gt; splash.xml&lt;/code&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-xml" data-lang="xml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;&amp;lt;?xml version=&amp;#34;1.0&amp;#34; encoding=&amp;#34;utf-8&amp;#34;?&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;&amp;lt;LinearLayout&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="na"&gt;xmlns:android=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;http://schemas.android.com/apk/res/android&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="na"&gt;android:orientation=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;vertical&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="na"&gt;android:gravity=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;center&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="na"&gt;android:background=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;#ffffff&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="na"&gt;android:layout_width=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;match_parent&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="na"&gt;android:layout_height=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;match_parent&amp;#34;&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;TextView&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="na"&gt;android:text=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;Land Zoning BD&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="na"&gt;android:textSize=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;24sp&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="na"&gt;android:textStyle=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;bold&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="na"&gt;android:textColor=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;#000&amp;#34;&lt;/span&gt;&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;&amp;lt;/LinearLayout&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="step-2-create-splashactivity"&gt;Step 2: Create SplashActivity&lt;/h3&gt;
&lt;p&gt;Right-click on your package → New → Activity → Empty Activity
Name: &lt;code&gt;SplashActivity&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Replace the code with:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-java" data-lang="java"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;package&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nn"&gt;com.yourname.landzoning&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;&lt;/span&gt;&lt;span class="kn"&gt;import&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nn"&gt;android.content.Intent&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;&lt;/span&gt;&lt;span class="kn"&gt;import&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nn"&gt;android.os.Bundle&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;&lt;/span&gt;&lt;span class="kn"&gt;import&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nn"&gt;android.os.Handler&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;&lt;/span&gt;&lt;span class="kn"&gt;import&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nn"&gt;androidx.appcompat.app.AppCompatActivity&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;&lt;/span&gt;&lt;span class="kd"&gt;public&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;SplashActivity&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kd"&gt;extends&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;AppCompatActivity&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nd"&gt;@Override&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kd"&gt;protected&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kt"&gt;void&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;onCreate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Bundle&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;savedInstanceState&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kd"&gt;super&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="na"&gt;onCreate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;savedInstanceState&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;setContentView&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;R&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="na"&gt;layout&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="na"&gt;splash&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Handler&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="na"&gt;postDelayed&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;startActivity&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Intent&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;SplashActivity&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="na"&gt;this&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;MainActivity&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="na"&gt;class&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;finish&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;2000&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;// 2 seconds&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="step-3-make-splash-first-screen"&gt;Step 3: Make Splash First Screen&lt;/h3&gt;
&lt;p&gt;In &lt;code&gt;AndroidManifest.xml&lt;/code&gt;, modify the activity declarations:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-xml" data-lang="xml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;&amp;lt;activity&lt;/span&gt; &lt;span class="na"&gt;android:name=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;.SplashActivity&amp;#34;&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;intent-filter&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;action&lt;/span&gt; &lt;span class="na"&gt;android:name=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;android.intent.action.MAIN&amp;#34;&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;category&lt;/span&gt; &lt;span class="na"&gt;android:name=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;android.intent.category.LAUNCHER&amp;#34;&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;/intent-filter&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;&amp;lt;/activity&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;&amp;lt;activity&lt;/span&gt; &lt;span class="na"&gt;android:name=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;.MainActivity&amp;#34;&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="-9-build-apk-production"&gt;📦 9. Build APK (Production)&lt;/h2&gt;
&lt;h3 id="-build-debug-apk"&gt;🔹 Build Debug APK&lt;/h3&gt;
&lt;p&gt;From the top menu: &lt;strong&gt;Build → Build APK(s)&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;After the build completes, click &lt;strong&gt;Locate&lt;/strong&gt; to find your APK at:
&lt;code&gt;app/build/outputs/apk/debug/app-debug.apk&lt;/code&gt;&lt;/p&gt;
&lt;h2 id="-10-build-release-apk-important"&gt;🔐 10. Build Release APK (IMPORTANT)&lt;/h2&gt;
&lt;p&gt;For distribution, you need a signed release APK.&lt;/p&gt;
&lt;p&gt;Go to: &lt;strong&gt;Build → Generate Signed Bundle / APK&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Choose:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;APK&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Create new keystore&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Fill in:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Password&lt;/li&gt;
&lt;li&gt;Key alias&lt;/li&gt;
&lt;li&gt;Validity: 25 years&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Then:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Select release&lt;/li&gt;
&lt;li&gt;Finish&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Your signed APK will be at: &lt;code&gt;app-release.apk&lt;/code&gt;&lt;/p&gt;
&lt;h2 id="-11-install-on-phone"&gt;🚀 11. Install on Phone&lt;/h2&gt;
&lt;p&gt;You can install the APK in two ways:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;USB Method:&lt;/strong&gt; Copy the APK to your phone and install it directly.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ADB Method:&lt;/strong&gt; Connect your phone via USB and run:
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;adb install app-release.apk
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="-important-tips-for-your-gis-app"&gt;⚠️ Important Tips for Your GIS App&lt;/h2&gt;
&lt;p&gt;Since you&amp;rsquo;re working with Leaflet, Firebase, and Vercel:&lt;/p&gt;
&lt;h3 id="-security--performance"&gt;🔹 Security &amp;amp; Performance&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;✅ Ensure HTTPS (Vercel handles this automatically)&lt;/li&gt;
&lt;li&gt;❌ Avoid mixed content (no HTTP resources in HTTPS pages)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="-map-performance-optimization"&gt;🔹 Map Performance Optimization&lt;/h3&gt;
&lt;p&gt;Add these settings for better map rendering:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-java" data-lang="java"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;webView&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="na"&gt;getSettings&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="na"&gt;setAllowFileAccess&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;&lt;/span&gt;&lt;span class="n"&gt;webView&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="na"&gt;getSettings&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="na"&gt;setAllowContentAccess&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="-next-steps"&gt;🎯 Next Steps&lt;/h2&gt;
&lt;p&gt;Once you have the basic WebView wrapper working, consider these enhancements:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Offline Caching:&lt;/strong&gt; Implement PWA features for offline functionality&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Native Loading Indicators:&lt;/strong&gt; Add progress bars and loading states&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pull-to-Refresh:&lt;/strong&gt; Implement swipe-to-refresh functionality&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Push Notifications:&lt;/strong&gt; Integrate Firebase Cloud Messaging&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Custom Toolbar:&lt;/strong&gt; Add navigation controls that feel native&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Play Store Release:&lt;/strong&gt; Prepare your app for Google Play Store distribution&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="-if-build-issues-occur"&gt;⚠️ If Build Issues Occur&lt;/h2&gt;
&lt;p&gt;Sometimes after moving, you may see errors like:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Gradle path issue&lt;/li&gt;
&lt;li&gt;SDK not found&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Fix:&lt;/p&gt;
&lt;p&gt;🔹 1. Re-sync Gradle&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;File → Sync Project with Gradle Files&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;🔹 2. Clean &amp;amp; Rebuild&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Build → Clean Project&lt;/li&gt;
&lt;li&gt;Build → Rebuild Project&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;🔹 3. Check SDK Path&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;File → Project Structure → SDK Location&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Make sure it points to something like:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;C:\Users\Dell\AppData\Local\Android\Sdk&lt;/code&gt;&lt;/p&gt;
&lt;h2 id="-summary"&gt;👉 Summary&lt;/h2&gt;
&lt;p&gt;You&amp;rsquo;re essentially creating a native Android wrapper around your web application:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;React App (Vercel) → Android WebView Wrapper → APK App
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item></channel></rss>