{"id":416,"date":"2025-03-21T00:13:39","date_gmt":"2025-03-21T00:13:39","guid":{"rendered":"https:\/\/boochlin.com\/?p=416"},"modified":"2026-08-15T09:44:56","modified_gmt":"2026-08-15T09:44:56","slug":"android-%e7%88%9b%e8%a3%9d%e7%bd%ae%e6%83%b3%e8%b7%91%e4%ba%ba%e8%87%89%e8%be%a8%e8%ad%982-%e8%a8%98%e6%86%b6%e9%ab%94%e4%b8%8d%e8%b6%b3-remove-unused-service-and-app","status":"publish","type":"post","link":"https:\/\/boochlin.com\/?p=416","title":{"rendered":"Android \u721b\u88dd\u7f6e\u60f3\u8dd1\u4eba\u81c9\u8fa8\u8b582 &#8211; \u8a18\u61b6\u9ad4\u512a\u5316-\u7121\u7528\u7cfb\u7d71\u670d\u52d9out"},"content":{"rendered":"\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/boochlin.com\/wp-content\/uploads\/2025\/05\/ChatGPT-Image-May-22-2025-05_17_32-AM.png\"><img fetchpriority=\"high\" decoding=\"async\" width=\"1024\" height=\"683\" src=\"https:\/\/boochlin.com\/wp-content\/uploads\/2025\/05\/ChatGPT-Image-May-22-2025-05_17_32-AM-1024x683.png\" alt=\"\" class=\"wp-image-553\" srcset=\"https:\/\/boochlin.com\/wp-content\/uploads\/2025\/05\/ChatGPT-Image-May-22-2025-05_17_32-AM-1024x683.png 1024w, https:\/\/boochlin.com\/wp-content\/uploads\/2025\/05\/ChatGPT-Image-May-22-2025-05_17_32-AM-300x200.png 300w, https:\/\/boochlin.com\/wp-content\/uploads\/2025\/05\/ChatGPT-Image-May-22-2025-05_17_32-AM-768x512.png 768w, https:\/\/boochlin.com\/wp-content\/uploads\/2025\/05\/ChatGPT-Image-May-22-2025-05_17_32-AM.png 1536w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p>\u9ad8\u901a QM215 \u7684\u539f\u751f Android 10 BSP \u525b\u7de8\u8b6f\u51fa\u4f86\uff0c\u958b\u6a5f\u4ec0\u9ebc App \u90fd\u6c92\u958b\u5c31\u5403\u6389 1.3GB RAM\u3002<\/p>\n\n\n\n<p>\u5728 2GB \u7684\u7834\u677f\u5b50\u4e0a\uff0c\u5269\u4e0b\u7684 700MB \u8981\u585e 950MB \u7684\u96d9\u93e1\u982d\u4e32\u6d41\u8207 300MB \u7684 AI \u6a21\u578b\uff0c\u7269\u7406\u4e0a\u76f4\u63a5\u7206\u70b8\u3002<\/p>\n\n\n\n<p>\u6211\u5011\u505a\u7684\u662f 7\u00d724 \u5c0f\u6642\u639b\u5728\u7246\u4e0a\u7684\u5c08\u7528\u9580\u7981\u6a5f\uff0c\u4e0d\u662f\u624b\u6a5f\u3002\u5b83\u4e0d\u9700\u8981\u97f3\u6a02\u3001\u901a\u8a71\u3001\u8f38\u5165\u6cd5\uff0c\u751a\u81f3\u9023\u96fb\u6c60\u90fd\u6c92\u6709\u3002<\/p>\n\n\n\n<p>\u7626\u8eab\u4e0d\u80fd\u7121\u8166\u62ff\u92f8\u5b50\u4e82\u6539 Java \u6e90\u78bc\u3002\u6211\u5011\u5206\u5169\u968e\u6bb5\u52d5\u5200\uff1a\u5148\u8d70 AOSP \u539f\u5ee0\u6a19\u6e96\u898f\u7bc4\uff0c\u518d\u4f9d\u9580\u7981\u6a5f\u7269\u7406\u7279\u6027\u6975\u9650\u62bd\u8102\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u7b2c\u4e00\u968e\u6bb5\uff1aAOSP \u5de5\u696d\u754c\u6a19\u6e96\u898f\u7bc4\uff08\u96f6\u4fb5\u5165\u7626\u8eab\uff09<\/h2>\n\n\n\n<p>Google \u8207\u6676\u7247\u5ee0\u5c0d\u4f4e\u8a18\u61b6\u9ad4\u8a2d\u5099\u65e9\u6709\u6a19\u6e96\u898f\u7bc4\uff0c\u4e00\u884c Java \u4ee3\u78bc\u90fd\u4e0d\u7528\u6539\uff1a<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1. \u7e7c\u627f Google go_defaults.mk\uff08Android Go \u6a21\u5f0f\uff09<\/h3>\n\n\n\n<p>\u5728\u7522\u54c1 <code>device.mk<\/code> \u958b\u982d\u5f15\u5165\uff1a<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n# \u5f15\u5165 Android Go \u8f15\u91cf\u5316\u914d\u7f6e\n$(call inherit-product, build\/make\/target\/product\/go_defaults.mk)\n<\/pre><\/div>\n\n\n<p>\u5e95\u5c64\u81ea\u52d5\u751f\u6548 <code>ro.config.low_ram=true<\/code>\uff0c\u95dc\u9589\u591a\u8996\u7a97\u3001\u52d5\u614b\u684c\u5e03\u8207\u8996\u7a97\u9670\u5f71\uff0c\u4e26\u5c07\u80cc\u666f\u5feb\u53d6\u9032\u7a0b\u4e0a\u9650\u5f9e 32 \u58d3\u5230 3 \u500b\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">2. \u5728 BoardConfig.mk \u5ba3\u544a TARGET_NO_TELEPHONY := true<\/h3>\n\n\n\n<p>\u9580\u7981\u6a5f\u6c92\u6709 SIM \u5361\u8207 4G \u6a21\u7d44\uff0c\u76f4\u63a5\u7531\u7de8\u8b6f\u7cfb\u7d71\u5254\u9664\u57fa\u983b\uff1a<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\nTARGET_NO_TELEPHONY := true   # \u62d4\u9664 RIL \u8207\u901a\u8a71 Daemon\nTARGET_NO_RADIO := true       # \u95dc\u9589\u5c04\u983b\u901a\u8a0a\nBOARD_HAVE_BLUETOOTH := true  # \u4fdd\u7559\u85cd\u7259 (BLE)\n<\/pre><\/div>\n\n\n<h3 class=\"wp-block-heading\">3. \u79fb\u9664 permissions\/*.xml\uff08\u8b93 SystemServer \u81ea\u7136\u8df3\u904e\uff09<\/h3>\n\n\n\n<p>SystemServer \u555f\u52d5\u670d\u52d9\u524d\u6703\u6aa2\u67e5 <code>pm.hasSystemFeature()<\/code>\u3002\u53ea\u8981\u5728 <code>device.mk<\/code> \u4e2d\u4e0d\u628a\u5c0d\u61c9 XML \u8907\u88fd\u5230 <code>\/system\/etc\/permissions\/<\/code>\uff0c\u670d\u52d9\u5c31\u4e0d\u6703\u5be6\u9ad4\u5316\uff1a<\/p>\n\n\n\n<ul>\n<li>\u79fb\u9664 <code>android.hardware.nfc.xml<\/code>\uff1aNfcService \u4e0d\u555f\u52d5\u3002<\/li>\n\n\n\n<li>\u79fb\u9664 <code>android.software.print.xml<\/code>\uff1aPrintManager \u4e0d\u555f\u52d5\u3002<\/li>\n\n\n\n<li>\u79fb\u9664 <code>android.hardware.telephony.xml<\/code>\uff1aTelephonyRegistry \u4e0d\u555f\u52d5\u3002<\/li>\n\n\n\n<li>\u79fb\u9664 <code>android.hardware.location.gps.xml<\/code>\uff1aLocationManager \u5ffd\u7565 GPS\u3002<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u7b2c\u4e8c\u968e\u6bb5\uff1a\u9580\u7981\u6a5f\u5c08\u5c6c\u7684\u6975\u9650 Kiosk \u62bd\u8102\uff08\u518d\u69a8 220MB\uff09<\/h2>\n\n\n\n<p>\u8d70\u5b8c\u6a19\u6e96\u898f\u7bc4\u5f8c\u7cfb\u7d71\u964d\u81f3 1.0GB\u3002\u63a5\u8457\u91dd\u5c0d\u300c\u56fa\u5b9a\u5728\u7246\u4e0a\u3001\u63d2\u96fb\u904b\u4f5c\u3001\u55ae\u4e00\u5168\u87a2\u5e55 App\u300d\u7684\u7279\u6027\u5254\u9664\u5269\u9918\u8d05\u8089\uff1a<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1. \u5e79\u6389 SystemUI \u8207 Launcher3\uff08\u7701 80MB ~ 120MB\uff09<\/h3>\n\n\n\n<ul>\n<li>\u4eba\u81c9\u8fa8\u8b58 App \u7684 <code>AndroidManifest.xml<\/code> \u5ba3\u544a\u70ba <code>HOME<\/code>\uff0c\u958b\u6a5f\u76f4\u9054\u5168\u87a2\u5e55\uff0c\u7701\u53bb Launcher3\uff08\u7701 40MB\uff09\uff1a <code>&lt;category android:name=\"android.intent.category.HOME\" \/&gt; &lt;category android:name=\"android.intent.category.DEFAULT\" \/&gt;<\/code><\/li>\n\n\n\n<li><code>config.xml<\/code> \u95dc\u9589 Keyguard \u9396\u5c4f\uff08\u7701 15MB\uff09\uff1a <code>&lt;bool name=\"config_enableLockScreen\"&gt;false&lt;\/bool&gt;<\/code><\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">2. \u62d4\u9664 LatinIME \u8f38\u5165\u6cd5\uff08\u7701 25MB ~ 35MB\uff09<\/h3>\n\n\n\n<p>\u9580\u7981\u6a5f\u4e0d\u9700\u8981\u865b\u64ec\u9375\u76e4\uff0cPIN \u78bc\u7531 App \u5167\u81ea\u7e6a\u3002\u5f9e <code>PRODUCT_PACKAGES<\/code> \u5254\u9664 <code>LatinIME<\/code>\uff0c\u4e26\u5728 <code>config.xml<\/code> \u95dc\u9589\uff1a<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n&amp;lt;bool name=&quot;config_showDefaultIME&quot;&gt;false&amp;lt;\/bool&gt;\n<\/pre><\/div>\n\n\n<h3 class=\"wp-block-heading\">3. \u62d4\u9664\u96fb\u6c60\u76e3\u63a7\uff08\u7701 15MB + \u7701 CPU \u8f2a\u8a62\uff09<\/h3>\n\n\n\n<p>\u9580\u7981\u6a5f\u63a5 12V \u8b8a\u58d3\u5668\u6216 PoE\uff0c\u6c92\u6709\u92f0\u96fb\u6c60\u3002\u95dc\u9589 <code>PowerUI<\/code> \u4f4e\u96fb\u91cf\u8b66\u544a\uff0c\u5c6c\u6027\u5beb\u6b7b <code>ro.boot.charger=0<\/code>\uff0c\u907f\u514d\u7cfb\u7d71\u8f2a\u8a62\u96fb\u91cf\u8207\u7dad\u8b77\u96fb\u6c60\u65e5\u8a8c\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">4. \u7981\u7528 Zygote \u9810\u8f09 WebView\uff08\u7701 30MB ~ 50MB\uff09<\/h3>\n\n\n\n<p>\u4eba\u81c9\u8fa8\u8b58\u70ba\u7d14 Native\/OpenGL \u6e32\u67d3\u3002\u4fee\u6539 <code>ZygoteInit.java<\/code> \u8df3\u904e <code>WebViewFactory.prepareWebViewInZygote()<\/code>\uff0c\u4e0d\u8b93\u9032\u7a0b\u5206\u88c2\u6642\u7e7c\u627f Chromium \u5167\u6838\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">5. \u88c1\u526a\u97f3\u8a0a\u7279\u6548\u8207\u7121\u7528 Codec\uff08\u7701 20MB\uff09<\/h3>\n\n\n\n<p>\u6e05\u7a7a <code>\/vendor\/etc\/media_codecs.xml<\/code> \u88e1\u7684 Dolby\/DTS\/4K \u89e3\u78bc\u5916\u639b\uff0c\u505c\u7528 <code>audioserver<\/code> \u97f3\u6548\u8655\u7406\u5668\uff0c\u53ea\u7559 PCM \u55f6\u8072\u8207 TTS\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">6. \u9396\u6b7b\u87a2\u5e55\u65cb\u8f49\u8207\u55ae\u7528\u6236\uff08\u7701 15MB\uff09<\/h3>\n\n\n\n<p>\u8a2d\u5099\u9396\u6b7b\u5728\u7246\u4e0a\uff0c<code>build.prop<\/code> \u8a2d\u5b9a <code>fw.max_users=1<\/code>\uff0c\u4e26\u9396\u5b9a\u65b9\u5411 <code>persist.sys.app.rotation=force_land<\/code>\uff08\u6216 <code>portrait<\/code>\uff09\uff0c\u95dc\u9589\u9640\u87ba\u5100\u8f2a\u8a62\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u7406\u667a\u7684\u5e95\u7dda\uff1a\u5fc5\u9808\u8a93\u6b7b\u634d\u885b\u7684\u547d\u6839\u5b50<\/h2>\n\n\n\n<ul>\n<li>BLE \u85cd\u7259\u5354\u8b70\u68e7\uff08GATT Server\uff09\uff1a\u4fdd\u7559\u4f9b\u5de5\u7a0b\u5e2b\u73fe\u5834\u514d\u63d2\u7dda\u914d\u7db2\u8207\u91d1\u9470\u6d3e\u767c\u3002<\/li>\n\n\n\n<li>Wi-Fi \u8207 Ethernet\uff08netmgrd\uff09\uff1a\u7279\u5fb5\u5eab\u96e2\u7dda\u540c\u6b65\u8207 WebSocket \u63a8\u9001\u5fc5\u5099\u3002<\/li>\n\n\n\n<li>thermal-engine\uff1a\u9ad8\u901a\u6eab\u63a7\u5b88\u8b77\uff0c\u9632\u6b62\u6676\u7247\u5728\u5bc6\u9589\u6a5f\u6bbc\u5167\u904e\u71b1\u964d\u983b\u6216\u71d2\u6bc0\u3002<\/li>\n\n\n\n<li>surfaceflinger \/ inputflinger\uff1a\u76f8\u6a5f\u9810\u89bd\u8207\u87a2\u5e55\u6e32\u67d3\u6838\u5fc3\u3002<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u6230\u679c\u9a57\u6536\uff1a\u8a18\u61b6\u9ad4\u5e33\u55ae<\/h2>\n\n\n\n<ul>\n<li>\u539f\u751f\u9ad8\u901a Android 10 BSP\uff1a\u958b\u6a5f\u5e38\u99d0 1,300 MB<\/li>\n\n\n\n<li>\u7b2c\u4e00\u968e\u6bb5\uff08Go \u6a21\u5f0f + \u62d4\u901a\u8a71 + \u7279\u6027\u88c1\u6e1b\uff09\uff1a\u964d\u81f3 1,000 MB\uff08\u7701 300 MB\uff09<\/li>\n\n\n\n<li>\u7b2c\u4e8c\u968e\u6bb5\uff08Kiosk \u6975\u9650\u88c1\u6e1b\uff1aLauncher\/IME\/\u96fb\u6c60\/Webview\uff09\uff1a\u518d\u964d\u81f3 ~780 MB\uff08\u7701 220 MB\uff09<\/li>\n\n\n\n<li>\u6700\u7d42\u512a\u5316\u5f8c\u7cfb\u7d71\u5e38\u99d0\uff1a780 MB\uff08\u6de8\u596a\u56de 520MB \u5be6\u9ad4 RAM\uff09<\/li>\n<\/ul>\n\n\n\n<p>\u5728 2GB RAM \u7684\u4f4e\u914d\u6a5f\u4e0a\uff0c\u6211\u5011\u70ba\u96d9\u93e1\u982d\u4e32\u6d41\uff08950MB\uff09\u8207 AI \u6a21\u578b\uff08300MB\uff09\u7559\u51fa\u4e86\u8d85\u904e 1.2GB \u7684\u7d14\u6de8\u5be6\u9ad4\u7a7a\u9593\uff0c\u5fb9\u5e95\u544a\u5225 OOM\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u7d50\u8a9e<\/h2>\n\n\n\n<ol>\n<li>\u5148\u8d70\u6a19\u6e96\u898f\u7bc4\uff1a\u5584\u7528 <code>go_defaults.mk<\/code>\u3001<code>TARGET_NO_TELEPHONY<\/code> \u8207 Feature Flags \u5b8c\u6210\u9ad4\u5236\u5167\u7626\u8eab\u3002<\/li>\n\n\n\n<li>\u518d\u4f9d\u5834\u666f\u88c1\u6e1b\uff1a\u91dd\u5c0d\u9580\u7981\u6a5f\u300c\u7121\u684c\u9762\u3001\u7121\u8f38\u5165\u6cd5\u3001\u7121\u96fb\u6c60\u3001\u7d14 Native\u300d\u7279\u6027\u5254\u9664\u5269\u9918\u8d05\u8089\u3002<\/li>\n<\/ol>\n\n\n\n<p>\u9019\u624d\u662f\u771f\u6b63\u7684\u7cfb\u7d71\u7d1a\u5de5\u7a0b\u6cbb\u7406\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u53c3\u8003\u8cc7\u6599 (References)<\/h2>\n\n\n\n<ol>\n<li><strong>Android Go Edition Device Configuration<\/strong>: Google \u5b98\u65b9 Android Go \u4f4e\u8a18\u61b6\u9ad4\u898f\u7bc4.<br><a href=\"https:\/\/source.android.com\/docs\/core\/perf\/low-ram\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/source.android.com\/docs\/core\/perf\/low-ram<\/a><\/li>\n\n\n\n<li><strong>AOSP System Features &amp; Permissions<\/strong>: Managing system features via permission XMLs.<br><a href=\"https:\/\/source.android.com\/docs\/core\/permissions\/perms-features\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/source.android.com\/docs\/core\/permissions\/perms-features<\/a><\/li>\n\n\n\n<li><strong>Android Enterprise Dedicated Device (Kiosk Mode)<\/strong>: Single-app device deployment guidelines.<br><a href=\"https:\/\/developer.android.com\/work\/dpm\/dedicated-devices\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/developer.android.com\/work\/dpm\/dedicated-devices<\/a><\/li>\n<\/ol>\n","protected":false},"excerpt":{"rendered":"<p>\u9ad8\u901a QM215 \u7684\u539f\u751f Android 10 BSP \u525b\u7de8\u8b6f\u51fa\u4f86\uff0c\u958b\u6a5f\u4ec0\u9ebc App \u90fd\u6c92\u958b\u5c31\u5403\u6389 1.3GB [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":553,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[80],"tags":[],"_links":{"self":[{"href":"https:\/\/boochlin.com\/index.php?rest_route=\/wp\/v2\/posts\/416"}],"collection":[{"href":"https:\/\/boochlin.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/boochlin.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/boochlin.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/boochlin.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=416"}],"version-history":[{"count":9,"href":"https:\/\/boochlin.com\/index.php?rest_route=\/wp\/v2\/posts\/416\/revisions"}],"predecessor-version":[{"id":988,"href":"https:\/\/boochlin.com\/index.php?rest_route=\/wp\/v2\/posts\/416\/revisions\/988"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/boochlin.com\/index.php?rest_route=\/wp\/v2\/media\/553"}],"wp:attachment":[{"href":"https:\/\/boochlin.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=416"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/boochlin.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=416"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/boochlin.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=416"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}