{"id":416,"date":"2025-03-21T00:13:39","date_gmt":"2025-03-21T00:13:39","guid":{"rendered":"https:\/\/boochlin.com\/?p=416"},"modified":"2026-09-16T09:53:54","modified_gmt":"2026-09-16T09:53:54","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 \u2013 \u8a18\u61b6\u9ad4\u512a\u5316\uff1a\u7121\u7528\u7cfb\u7d71\u670d\u52d9\u5fb9\u5e95\u5254\u9664"},"content":{"rendered":"<p><img decoding=\"async\" src=\"..\/..\/assets\/images\/ChatGPT-Image-May-22-2025-05_17_32-AM.png\" alt=\"\"><\/p>\n<p>\u4e0a\u4e00\u7bc7\u628a dumpsys\u3001procrank \u8207 smaps \u7684\u5100\u8868\u677f\u67b6\u597d\u5f8c\uff0c\u6240\u6709\u4eba\u90fd\u770b\u50bb\u4e86\u773c\uff1a\u9ad8\u901a\u539f\u751f Android 10 BSP \u525b\u7de8\u8b6f\u51fa\u4f86\uff0c\u4ec0\u9ebc App \u90fd\u6c92\u88dd\uff0c\u958b\u6a5f\u5e38\u99d0\u5c31\u76f4\u63a5\u5543\u6389 1,300MB RAM\u3002<\/p>\n<p>\u5728\u7e3d\u5171\u53ea\u6709 2GB\uff08\u6263\u9664\u57fa\u983b\u8207\u786c\u9ad4\u4fdd\u7559\u5340\u5f8c\u5be6\u9ad4\u53ea\u5269 1.9GB\uff09\u7684\u7834\u677f\u5b50\u4e0a\uff0c\u5c0f\u5b78\u7b97\u5f0f\u662f\u6b98\u9177\u4e14\u6beb\u4e0d\u7559\u60c5\u7684\uff1a<\/p>\n<blockquote>\n<p>1900MB (\u53ef\u7528\u7e3d\u91cf) &#8211; 1300MB (\u539f\u751f\u7cfb\u7d71\u5e38\u99d0) = 600MB<br \/>\n600MB (\u5269\u9918\u7a7a\u9593) &#8211; 950MB (RGB + ToF \u96d9\u76f8\u6a5f\u4e32\u6d41) = -350MB &lt; 0<\/p>\n<\/blockquote>\n<p>\u9023 AI \u6a21\u578b\u7684\u6b0a\u91cd\u90fd\u9084\u6c92\u5f9e Flash \u8b80\u9032\u8a18\u61b6\u9ad4\uff0c\u7cfb\u7d71\u5c31\u5df2\u7d93\u76f4\u63a5\u5012\u8cbc 350MB\u3002\u9019\u4ee3\u8868\u4f60\u7684\u4e3b\u7a0b\u5f0f\u53ea\u8981\u4e00\u6253\u958b\u76f8\u6a5f\uff0cLMKD \u5c31\u6703\u5728\u80cc\u666f\u63d0\u8457\u5927\u5200\u628a\u4f60\u7684\u9032\u7a0b\u7576\u5834\u8655\u6c7a\u3002<\/p>\n<p>\u5f88\u591a\u4eba\u4e00\u770b\u5230\u7cfb\u7d71\u5403\u8a18\u61b6\u9ad4\uff0c\u71b1\u8840\u4e0a\u982d\u5c31\u60f3\u6253\u958b Java \u6e90\u78bc\u4e82\u780d\u3002<\/p>\n<p>\u807d\u6211\u4e00\u53e5\u52f8\uff1a\u7626\u8eab\u4e0d\u80fd\u7121\u8166\u62ff\u92f8\u5b50\u4e82\u92f8\u3002\u6211\u5011\u505a\u7684\u662f 7&#215;24 \u5c0f\u6642\u9396\u6b7b\u5728\u7246\u4e0a\u7684\u5c08\u7528\u9580\u7981\u6a5f\uff0c\u4e0d\u662f\u4f11\u9592\u624b\u6a5f\u3002\u5b83\u4e0d\u9700\u8981\u97f3\u6a02\u64ad\u653e\u5668\u3001\u4e0d\u9700\u8981\u64a5\u6253\u96fb\u8a71\u3001\u4e0d\u9700\u8981\u865b\u64ec\u9375\u76e4\u3001\u66f4\u6c92\u6709\u92f0\u96fb\u6c60\u3002<\/p>\n<p>\u6211\u5011\u5206\u5169\u968e\u6bb5\u52d5\u5200\uff1a\u5148\u8d70 Google \u539f\u5ee0 AOSP \u6a19\u6e96\u898f\u7bc4\uff0c\u518d\u4f9d\u9580\u7981\u6a5f\u7269\u7406\u7279\u6027\u6975\u9650\u62bd\u8102\u3002<\/p>\n<hr>\n<h2>\u7b2c\u4e00\u968e\u6bb5\uff1aAOSP \u5de5\u696d\u754c\u6a19\u6e96\u898f\u7bc4\uff08\u96f6\u4fb5\u5165\u7626\u8eab\uff09<\/h2>\n<p>\u5f88\u591a\u5d4c\u5165\u5f0f\u65b0\u624b\u4e0d\u77e5\u9053\uff0cGoogle \u548c\u9ad8\u901a\u5c0d\u65bc 1GB ~ 2GB \u7684\u4f4e\u8a18\u61b6\u9ad4\u8a2d\u5099\u65e9\u5c31\u7559\u597d\u4e86\u6a19\u6e96\u5f8c\u9580\u3002\u4e00\u884c Java \u6e90\u78bc\u90fd\u4e0d\u7528\u6539\uff0c\u5168\u5728 Makefile \u8207 XML \u5ba3\u544a\u88e1\uff1a<\/p>\n<h3>1. \u7e7c\u627f Google go_defaults.mk\uff08Android Go \u6a21\u5f0f\uff09<\/h3>\n<p>\u5728\u7522\u54c1\u7684 <code>device.mk<\/code> \u958b\u982d\u76f4\u63a5\u5f15\u5165\uff1a<\/p>\n<pre><code class=\"language-makefile\"># \u5f15\u5165 Android Go \u8f15\u91cf\u5316\u7cfb\u7d71\u914d\u7f6e\n$(call inherit-product, build\/make\/target\/product\/go_defaults.mk)\n<\/code><\/pre>\n<p>\u9019\u4e00\u884c macro \u6703\u5728\u7de8\u8b6f\u671f\u5168\u57df\u6ce8\u5165 <code>ro.config.low_ram=true<\/code>\u3002<\/p>\n<p>\u5e95\u5c64\u6703\u9023\u9396\u89f8\u767c\u4e00\u7cfb\u5217\u795e\u7d93\u53cd\u5c04\uff1a\u5f37\u5236\u95dc\u9589\u591a\u8996\u7a97\u5206\u5c4f\u3001\u505c\u7528\u52d5\u614b\u684c\u5e03\u8207\u8907\u96dc\u8996\u7a97\u9670\u5f71\u3001\u9650\u5236 ActivityManager \u7684\u80cc\u666f\u5feb\u53d6\u9032\u7a0b\u4e0a\u9650\u5f9e 32 \u500b\u8170\u65ac\u5230 3 \u500b\uff0cActivityStack \u6df1\u5ea6\u964d\u5230\u6700\u4f4e\u3002\u5149\u662f\u9019\u4e00\u884c\uff0c\u7cfb\u7d71\u5c31\u51b7\u975c\u4e86\u4e09\u5206\u4e4b\u4e00\u3002<\/p>\n<h3>2. \u5728 BoardConfig.mk \u5ba3\u544a TARGET_NO_TELEPHONY<\/h3>\n<p>\u9580\u7981\u6a5f\u9396\u5728\u7246\u4e0a\u63a5\u4e59\u592a\u7db2\u6216 WiFi\uff0c\u677f\u5b50\u4e0a\u9023 SIM \u5361\u69fd\u90fd\u6c92\u6709\uff0c\u5e79\u561b\u5728\u80cc\u666f\u8dd1\u5b8c\u6574\u7684\u96fb\u8a71\u5354\u5b9a\u68e7\uff1f<\/p>\n<p>\u5728 <code>BoardConfig.mk<\/code> \u5167\u5ba3\u544a\uff1a<\/p>\n<pre><code class=\"language-makefile\">TARGET_NO_TELEPHONY := true   # \u5fb9\u5e95\u62d4\u9664 RIL \u901a\u8a0a\u5b88\u8b77\u884c\u7a0b\u8207\u64a5\u865f\u6a21\u7d44\nTARGET_NO_RADIO := true       # \u95dc\u9589\u884c\u52d5\u7db2\u8def\u5c04\u983b\u7ba1\u7406\nBOARD_HAVE_BLUETOOTH := true  # \u85cd\u7259\u5fc5\u9808\u4fdd\u7559\uff08BLE \u8fd1\u5834\u914d\u7db2\u7dad\u8b77\u5c08\u7528\uff09\n<\/code><\/pre>\n<p>\u9019\u6a23\u7de8\u8b6f\u7cfb\u7d71\u5c31\u4e0d\u6703\u628a <code>rild<\/code>\u3001<code>telephony-common.jar<\/code> \u8207\u57fa\u983b\u76e3\u63a7 Daemon \u5305\u9032 system.img\uff0c\u958b\u6a5f\u7701\u4e0b 40MB \u7684\u5e38\u99d0 PSS\u3002<\/p>\n<h3>3. \u79fb\u9664 permissions\/*.xml\uff08\u8b93 SystemServer \u81ea\u7136\u8df3\u904e\uff09<\/h3>\n<p>\u9019\u662f AOSP \u6700\u512a\u96c5\u7684\u7626\u8eab\u624b\u6bb5\u3002<\/p>\n<p><code>SystemServer.java<\/code> \u5728\u958b\u6a5f\u555f\u52d5\u5e7e\u5341\u500b\u7cfb\u7d71\u670d\u52d9\u6642\uff0c\u6bcf\u4e00\u6b65\u90fd\u6703\u5148\u53bb\u554f PackageManager\uff1a<code>pm.hasSystemFeature(...)<\/code>\u3002\u5982\u679c\u7cfb\u7d71\u627e\u4e0d\u5230\u5c0d\u61c9\u7684 feature \u5ba3\u544a\uff0c\u8a72\u670d\u52d9\u9023\u5be6\u9ad4\u90fd\u4e0d\u6703 new \u51fa\u4f86\uff0c\u76f4\u63a5\u5f9e\u8a18\u61b6\u9ad4\u84b8\u767c\u3002<\/p>\n<p>\u505a\u6cd5\u975e\u5e38\u7c21\u55ae\uff1a\u5728 <code>device.mk<\/code> \u88e1\u9762\uff0c\u4e0d\u8981\u628a\u9019\u4e9b XML \u8907\u88fd\u5230 <code>\/system\/etc\/permissions\/<\/code>\uff1a<\/p>\n<ul>\n<li>\u79fb\u9664 <code>android.hardware.nfc.xml<\/code>\uff1aNfcService \u76f4\u63a5\u4e0d\u555f\u52d5\uff08\u7701 18MB\uff09\u3002<\/li>\n<li>\u79fb\u9664 <code>android.software.print.xml<\/code>\uff1aPrintManager \u9023\u5f71\u5b50\u90fd\u6c92\u6709\uff0c\u9580\u7981\u6a5f\u8ab0\u8ddf\u4f60\u5370\u6587\u4ef6\uff08\u7701 12MB\uff09\u3002<\/li>\n<li>\u79fb\u9664 <code>android.hardware.telephony.xml<\/code>\uff1aTelephonyRegistry \u5fb9\u5e95\u9589\u5634\uff08\u7701 25MB\uff09\u3002<\/li>\n<li>\u79fb\u9664 <code>android.hardware.location.gps.xml<\/code>\uff1aLocationManager \u5ffd\u7565 GPS \u8f2a\u8a62\uff08\u7701 15MB\uff09\u3002<\/li>\n<\/ul>\n<p>\u9019\u4e00\u6b65\u5b8c\u5168\u5408\u898f\u3001\u96f6\u4fb5\u5165\uff0c\u6c92\u6709\u4efb\u4f55\u526f\u4f5c\u7528\uff0c\u958b\u6a5f\u73fe\u7701 70MB\u3002<\/p>\n<hr>\n<h2>\u7b2c\u4e8c\u968e\u6bb5\uff1a\u5c08\u7528\u7d42\u7aef\u6975\u9650 Kiosk \u62bd\u8102\uff08\u518d\u69a8 220MB\uff09<\/h2>\n<p>\u8d70\u5b8c\u7b2c\u4e00\u968e\u6bb5\u6a19\u6e96\u898f\u7bc4\uff0c\u7cfb\u7d71\u5e38\u99d0\u6210\u529f\u5f9e 1,300MB \u964d\u5230 1,000MB\u3002\u4f46\u8ddd\u96e2 950MB \u96d9\u76f8\u6a5f\u4e32\u6d41\u7684\u5b89\u5168\u7dda\uff0c\u7a7a\u9593\u4f9d\u7136\u5403\u7dca\u3002<\/p>\n<p>\u63a5\u4e0b\u4f86\u91dd\u5c0d\u300c\u56fa\u5b9a\u5728\u7246\u4e0a\u3001\u63a5 12V \u8b8a\u58d3\u5668\u3001\u55ae\u4e00\u5168\u87a2\u5e55 App\u300d\u7684\u7269\u7406\u7279\u6027\uff0c\u9032\u884c\u5916\u79d1\u624b\u8853\u7d1a\u5225\u7684\u7cbe\u6e96\u62bd\u8102\uff1a<\/p>\n<h3>1. \u5e79\u6389 SystemUI \u8207 Launcher3\uff08\u76f4\u63a5\u7701\u4e0b 80MB ~ 120MB\uff09<\/h3>\n<p>\u9019\u662f\u4e00\u822c Android \u624b\u6a5f\u4e0d\u6562\u52d5\u3001\u4f46\u5c08\u7528\u786c\u9ad4\u5fc5\u9808\u4e0b\u72e0\u624b\u7684\u5730\u65b9\u3002<\/p>\n<p>\u7cfb\u7d71\u9810\u8a2d\u958b\u6a5f\u6703\u628a Launcher3\uff08\u684c\u9762\uff09\u8207 SystemUI\uff08\u72c0\u614b\u5217\u3001\u5c0e\u822a\u5217\u3001\u4e0b\u62c9\u9078\u55ae\uff09\u5e38\u99d0\u5728 RAM \u88e1\u3002\u5c0d\u4eba\u81c9\u8fa8\u8b58\u7d42\u7aef\u4f86\u8aaa\uff0c\u9019\u5169\u500b\u6771\u897f\u7d14\u7cb9\u662f\u6d6a\u8cbb\u8cc7\u6e90\u7684\u88dd\u98fe\u54c1\u3002<\/p>\n<ul>\n<li><strong>\u76f4\u63a5\u4ee5 App \u70ba\u684c\u9762<\/strong>\uff1a\u5728\u4eba\u81c9\u8fa8\u8b58\u4e3b\u7a0b\u5f0f\u7684 <code>AndroidManifest.xml<\/code> \u4e2d\u5ba3\u544a\u70ba <code>HOME<\/code>\uff1a<\/li>\n<\/ul>\n<pre><code class=\"language-xml\">&lt;activity android:name=&quot;.MainActivity&quot; android:launchMode=&quot;singleTask&quot;&gt;\n    &lt;intent-filter&gt;\n        &lt;action android:name=&quot;android.intent.action.MAIN&quot; \/&gt;\n        &lt;category android:name=&quot;android.intent.category.HOME&quot; \/&gt;\n        &lt;category android:name=&quot;android.intent.category.DEFAULT&quot; \/&gt;\n    &lt;\/intent-filter&gt;\n&lt;\/activity&gt;\n<\/code><\/pre>\n<p>\u958b\u6a5f Zygote \u76f4\u63a5\u62c9\u8d77\u4e3b\u7a0b\u5f0f\uff0c\u7de8\u8b6f\u6642\u5f9e <code>PRODUCT_PACKAGES<\/code> \u5fb9\u5e95\u62d4\u9664 <code>Launcher3QuickStep<\/code>\uff0c\u7701\u4e0b 45MB\u3002<\/p>\n<ul>\n<li><strong>\u95dc\u9589 Keyguard \u9396\u5c4f<\/strong>\uff1a\u5728 <code>frameworks\/base\/core\/res\/res\/values\/config.xml<\/code> \u4fee\u6539\uff1a<\/li>\n<\/ul>\n<pre><code class=\"language-xml\">&lt;bool name=&quot;config_enableLockScreen&quot;&gt;false&lt;\/bool&gt;\n<\/code><\/pre>\n<p>\u9396\u5c4f\u6a21\u7d44\u76f4\u63a5\u4e0d\u521d\u59cb\u5316\uff0c\u518d\u7701 15MB\uff0c\u4e14\u5fb9\u5e95\u675c\u7d55\u5076\u767c\u8df3\u56de\u9396\u5c4f\u4ecb\u9762\u7684\u9748\u7570\u73fe\u8c61\u3002<\/p>\n<h3>2. \u62d4\u9664 LatinIME \u865b\u64ec\u9375\u76e4\uff08\u7701\u4e0b 25MB ~ 35MB\uff09<\/h3>\n<p>\u9580\u7981\u6a5f\u5982\u679c\u9700\u8981\u8f38\u5165\u7ba1\u7406\u54e1\u5bc6\u78bc\u6216 PIN \u78bc\uff0c\u4e3b\u7a0b\u5f0f\u81ea\u5df1\u7528 OpenGL \u6216\u81ea\u7e6a View \u8655\u7406\u3002<\/p>\n<p>\u5f9e <code>PRODUCT_PACKAGES<\/code> \u62d4\u6389 <code>LatinIME<\/code>\uff0c\u4e26\u5728 <code>config.xml<\/code> \u95dc\u9589\u9810\u8a2d\u8f38\u5165\u6cd5\u6aa2\u67e5\uff1a<\/p>\n<pre><code class=\"language-xml\">&lt;bool name=&quot;config_showDefaultIME&quot;&gt;false&lt;\/bool&gt;\n<\/code><\/pre>\n<p>\u4e0d\u7528\u8f09\u5165\u5b57\u5178\u5eab\u3001\u4e0d\u7528\u7dad\u6301\u8f38\u5165\u6cd5\u670d\u52d9\u9032\u7a0b\uff0c\u958b\u6a5f\u53c8\u6e05\u723d\u4e86 30MB\u3002<\/p>\n<h3>3. \u62d4\u9664\u96fb\u6c60\u76e3\u63a7\uff08\u7701\u4e0b 15MB \u8207 CPU \u8f2a\u8a62\uff09<\/h3>\n<p>\u9580\u7981\u6a5f\u63a5\u7684\u662f 12V \u5de5\u696d\u96fb\u6e90\u6216 PoE \u4f9b\u96fb\uff0c\u677f\u5b50\u4e0a\u6839\u672c\u6c92\u6709\u92f0\u96fb\u6c60\u3002<\/p>\n<p>\u4f46\u539f\u751f Android \u9810\u8a2d\u6703\u4e00\u76f4\u76e3\u63a7\u96fb\u6c60\u5065\u5eb7\u5ea6\uff0c<code>PowerUI<\/code> \u6703\u5b9a\u6642\u8df3\u901a\u77e5\u3001\u5f48\u8b66\u544a\u3001\u7dad\u8b77 battery status log\u3002<\/p>\n<p>\u5728 Kernel Command Line\uff08BoardConfig.mk \u6216 device tree \u7684 bootargs\uff09\u4e2d\u52a0\u5165 <code>androidboot.charger=0<\/code>\uff0c\u6216\u76f4\u63a5\u5728 Kernel defconfig \u4e2d\u79fb\u9664\u96fb\u6c60\u76e3\u63a7\u76f8\u95dc\u9a45\u52d5\uff08\u6ce8\u610f\uff1a<code>ro.boot.*<\/code> \u5c6c\u6027\u662f\u7531 Kernel Command Line \u89e3\u6790\u800c\u4f86\u7684\u552f\u8b80\u5c6c\u6027\uff0c\u76f4\u63a5\u5beb\u5728 <code>build.prop<\/code> \u4e2d\u662f\u7121\u6548\u7684\uff09\u3002<\/p>\n<p>\u4e26\u5728 frameworks \u4e2d\u95dc\u9589\u4f4e\u96fb\u91cf\u5f48\u7a97\uff0c\u7701\u4e0b\u80cc\u666f\u57f7\u884c\u7dd2\u7121\u8b02\u7684\u8f2a\u8a62\u8207\u65e5\u8a8c\u5beb\u5165\u3002<\/p>\n<h3>4. \u7981\u7528 Zygote \u9810\u8f09 WebView\uff08\u7701\u4e0b 30MB ~ 50MB\uff09<\/h3>\n<p>\u6211\u5011\u7684\u4eba\u81c9\u8fa8\u8b58\u30013D \u9ede\u96f2\u7e6a\u88fd\u5168\u8d70 C++ Native \u8207 OpenGL ES \u6e32\u67d3\uff0c\u6574\u53f0\u6a5f\u5668\u9023\u534a\u500b\u7db2\u9801\u90fd\u4e0d\u6703\u958b\u3002<\/p>\n<p>\u539f\u751f Zygote \u70ba\u4e86\u52a0\u901f\u672a\u4f86\u7684\u7db2\u9801\u8f09\u5165\uff0c\u958b\u6a5f\u6642\u6703\u5728 <code>ZygoteInit.java<\/code> \u88e1\u9762\u547c\u53eb <code>WebViewFactory.prepareWebViewInZygote()<\/code>\uff0c\u628a\u80a5\u78a9\u7684 Chromium \u5167\u6838\u8f09\u9032\u8a18\u61b6\u9ad4\u3002<\/p>\n<p>\u76f4\u63a5\u5728 Framework \u5e95\u5c64\u4fee\u6539\uff0c\u8df3\u904e\u9019\u6bb5\u9810\u8f09\u3002\u6bcf\u4e00\u500b\u5f9e Zygote fork \u51fa\u4f86\u7684\u9032\u7a0b\u77ac\u9593\u8f15\u91cf\u5316\uff0c\u5be6\u9ad4 RAM \u76f4\u63a5\u7701\u4e0b 40MB\u3002<\/p>\n<h3>5. \u88c1\u526a\u7121\u7528\u97f3\u8a0a Codec \u8207\u7279\u6548\uff08\u7701\u4e0b 20MB\uff09<\/h3>\n<p>\u6e05\u7a7a <code>\/vendor\/etc\/media_codecs.xml<\/code> \u88e1\u90a3\u4e9b\u82b1\u4fcf\u7684 Dolby\u3001DTS\u30014K \u786c\u89e3\u5916\u639b\u3002<\/p>\n<p>\u9580\u7981\u6a5f\u53ea\u9700\u8981\u64ad\u653e\u300c\u8fa8\u8b58\u6210\u529f\u300d\u7684\u77ed\u4fc3 PCM \u55f6\u8072\u6216\u8a9e\u97f3\u64ad\u5831\uff08TTS\uff09\uff0c\u505c\u7528 <code>audioserver<\/code> \u88e1\u8907\u96dc\u7684\u74b0\u7e5e\u97f3\u6548\u8207\u591a\u8072\u9053\u8655\u7406\u5668\uff0c\u53ea\u4fdd\u7559\u57fa\u672c\u97f3\u983b\u901a\u9053\u3002<\/p>\n<h3>6. \u9396\u6b7b\u55ae\u7528\u6236\u8207\u87a2\u5e55\u65b9\u5411\uff08\u7701\u4e0b 15MB\uff09<\/h3>\n<p>\u9580\u7981\u6a5f\u662f\u58c1\u639b\u7684\uff0c\u9019\u8f29\u5b50\u90fd\u4e0d\u6703\u65cb\u8f49\u87a2\u5e55\u3002<\/p>\n<p>\u5728 <code>build.prop<\/code> \u5beb\u5165\uff1a<\/p>\n<pre><code class=\"language-properties\">fw.max_users=1\npersist.sys.app.rotation=force_land\n<\/code><\/pre>\n<p>\u9650\u5236\u7cfb\u7d71\u6c38\u9060\u70ba\u55ae\u4e00\u7528\u6236\uff0c\u4e26\u5f37\u5236\u9396\u5b9a\u65b9\u5411\uff08\u6a6b\u5c4f\u6216\u8c4e\u5c4f\uff09\uff0c\u76f4\u63a5\u95dc\u9589 SensorService \u5c0d\u9640\u87ba\u5100\u8207\u91cd\u529b\u611f\u6e2c\u5668\u7684\u5b9a\u6642\u8f2a\u8a62\u3002<\/p>\n<hr>\n<h2>\u7406\u667a\u7684\u5e95\u7dda\uff1a\u54ea\u4e9b\u547d\u6839\u5b50\u7d55\u5c0d\u4e0d\u80fd\u52d5\uff1f<\/h2>\n<p>\u7626\u8eab\u4e00\u5b9a\u8981\u6709\u5e95\u7dda\uff0c\u526a\u932f\u7dda\u6703\u76f4\u63a5\u7ffb\u8eca\u3002\u4ee5\u4e0b\u5e7e\u6a23\u6771\u897f\u5c31\u7b97\u518d\u4f54\u7a7a\u9593\uff0c\u4e5f\u7d55\u5c0d\u4e0d\u51c6\u62d4\uff1a<\/p>\n<ol>\n<li><strong>BLE \u85cd\u7259\u5354\u5b9a\u68e7\uff08GATT Server\uff09<\/strong>\uff1a\u9019\u662f\u73fe\u5834\u65bd\u5de5\u4eba\u54e1\u514d\u62c6\u6a5f\u3001\u514d\u62c9\u7dda\uff0c\u76f4\u63a5\u7528\u624b\u6a5f\u914d\u7db2\u8207\u9664\u932f\u7684\u751f\u547d\u7dda\u3002<\/li>\n<li><strong>\u7db2\u8def\u901a\u8a0a\u5b88\u8b77\uff08netmgrd \/ netd\uff09<\/strong>\uff1a\u7279\u5fb5\u5eab\u96e2\u7dda\u540c\u6b65\u3001MQTT \u8207 WebSocket \u5373\u6642\u901a\u8a0a\u5fc5\u9808\u4f9d\u8cf4\u5b83\u3002<\/li>\n<li><strong>\u9ad8\u901a\u6eab\u63a7\u5b88\u8b77\uff08thermal-engine\uff09<\/strong>\uff1a\u9580\u7981\u6a5f\u5927\u591a\u88dd\u5728\u6236\u5916\u6216\u901a\u98a8\u4e0d\u826f\u7684\u5bc6\u9589\u91d1\u5c6c\u6bbc\u5167\u3002\u590f\u5929\u9ad8\u6eab\u4e0b\u5982\u679c\u6c92\u6709\u6eab\u63a7\u964d\u983b\u4fdd\u8b77\uff0c\u6676\u7247\u6703\u76f4\u63a5\u904e\u71b1\u71d2\u6b7b\u3002<\/li>\n<li><strong>surfaceflinger \/ inputflinger<\/strong>\uff1a\u76f8\u6a5f\u9810\u89bd\u7ba1\u7dda\u8207\u89f8\u63a7\u4e8b\u4ef6\u7684\u6838\u5fc3\u57fa\u77f3\u3002<\/li>\n<\/ol>\n<hr>\n<h2>\u6230\u679c\u9a57\u6536\uff1a\u5c0f\u5b78\u7b97\u8853\u6253\u81c9\u6642\u9593<\/h2>\n<p>\u9019\u662f\u4e00\u5957\u7d93\u904e\u5be6\u6a5f\u9a57\u8b49\u7684\u8a18\u61b6\u9ad4\u7626\u8eab\u5e33\u55ae\uff1a<\/p>\n<ul>\n<li><strong>\u539f\u751f\u9ad8\u901a Android 10 BSP<\/strong>\uff1a\u958b\u6a5f\u5e38\u99d0 1,300 MB<\/li>\n<li><strong>\u7b2c\u4e00\u968e\u6bb5\uff08Android Go + \u62d4\u901a\u8a71 + \u7cfb\u7d71\u7279\u6027\u88c1\u6e1b\uff09<\/strong>\uff1a\u964d\u81f3 1,000 MB\uff08\u596a\u56de 300 MB\uff09<\/li>\n<li><strong>\u7b2c\u4e8c\u968e\u6bb5\uff08Kiosk \u6975\u9650\u88c1\u6e1b\uff1aLauncher3 \/ IME \/ \u96fb\u6c60 \/ WebView\uff09<\/strong>\uff1a\u518d\u964d\u81f3 780 MB\uff08\u596a\u56de 220 MB\uff09<\/li>\n<li><strong>\u6700\u7d42\u7cfb\u7d71\u5e38\u99d0\u6de8\u6d88\u8017<\/strong>\uff1a<strong>780 MB<\/strong>\uff08\u6574\u6574\u7701\u4e0b 520 MB \u5be6\u9ad4\u7a7a\u9593\uff01\uff09<\/li>\n<\/ul>\n<p>\u73fe\u5728\u6211\u5011\u628a\u6578\u5b57\u91cd\u65b0\u4ee3\u56de\u4e00\u958b\u59cb\u7684\u751f\u6b7b\u7b49\u5f0f\uff1a<\/p>\n<blockquote>\n<p>1900MB (\u53ef\u7528\u7e3d\u91cf) &#8211; 780MB (\u7626\u8eab\u5f8c\u7cfb\u7d71) = 1120MB<br \/>\n1120MB (\u5269\u9918\u7a7a\u9593) &#8211; 950MB (RGB + ToF \u96d9\u76f8\u6a5f\u4e32\u6d41) = +170MB &gt; 0<\/p>\n<\/blockquote>\n<p>\u5e33\u9762\u4e0a\u7d42\u65bc\u51fa\u73fe\u4e86\u5bf6\u8cb4\u7684\u6b63\u6578\uff01\u9019\u591a\u51fa\u4f86\u7684 170MB\uff0c\u52a0\u4e0a ZRAM \u58d3\u7e2e\u63db\u51fa\u7684\u7a7a\u9593\uff0c\u6b63\u597d\u8b93 300MB \u7684\u4eba\u81c9\u8fa8\u8b58\u5f15\u64ce\u8207\u7279\u5fb5\u5eab\u80fd\u5920\u5927\u53e3\u547c\u5438\u3002<\/p>\n<hr>\n<h2>\u7d50\u8a9e\u8207\u9632\u5751\u5fc3\u6cd5<\/h2>\n<p>\u505a\u5d4c\u5165\u5f0f Android \u7cfb\u7d71\u512a\u5316\uff0c\u6700\u5fcc\u8af1\u7684\u5c31\u662f\u76f2\u76ee\u6539\u4ee3\u78bc\u3002<\/p>\n<ol>\n<li><strong>\u5148\u8d70\u9ad4\u5236\u5167\u6a19\u6e96<\/strong>\uff1a\u5584\u7528 <code>go_defaults.mk<\/code>\u3001<code>TARGET_NO_TELEPHONY<\/code> \u8207 permissions XML\uff0c90% \u7684\u8d05\u8089\u5728\u7de8\u8b6f\u671f\u5c31\u80fd\u512a\u96c5\u5243\u9664\u3002<\/li>\n<li><strong>\u518d\u4f9d\u5834\u666f\u7cbe\u6e96\u4e0b\u5200<\/strong>\uff1a\u641e\u6e05\u695a\u4f60\u7684\u786c\u9ad4\u672c\u8cea\u662f\u9580\u7981\u6a5f\uff0c\u7121\u684c\u9762\u3001\u7121\u9375\u76e4\u3001\u7121\u96fb\u6c60\u3001\u7121\u7db2\u9801\uff0c\u628a\u4e0d\u8a72\u5b58\u5728\u7684\u5305\u88b1\u5168\u4e1f\u6389\u3002<\/li>\n<\/ol>\n<p><strong>\u628a\u7cfb\u7d71\u58d3\u5230\u53ea\u5269\u9aa8\u982d\uff0cAI \u624d\u80fd\u5728\u4e0a\u9762\u9577\u51fa\u808c\u8089\u3002<\/strong><\/p>\n<p>\u4e0b\u4e00\u7bc7\uff0c\u6211\u5011\u628a\u624b\u8853\u5200\u5207\u5411 Linux \u6838\u5fc3\uff1aZRAM\u3001SWAP \u8207 KSM\uff0c\u770b\u770b\u5728\u4e0d\u80fd\u63db\u786c\u9ad4\u7684\u6b7b\u5c40\u4e0b\uff0c\u5982\u4f55\u7528\u5167\u6838\u914d\u7f6e\u628a\u8a18\u61b6\u9ad4\u58d3\u69a8\u5230\u6700\u5f8c\u4e00\u6ef4\u3002<\/p>\n<hr>\n<h2>\u53c3\u8003\u8cc7\u6599 (References)<\/h2>\n<ol>\n<li>\n<p><strong>Android Go Edition Device Configuration<\/strong>: Google \u5b98\u65b9\u4f4e\u8a18\u61b6\u9ad4\u8a2d\u5099\u914d\u7f6e\u898f\u7bc4.<br \/>\n<a href=\"https:\/\/source.android.com\/docs\/core\/perf\/low-ram\">https:\/\/source.android.com\/docs\/core\/perf\/low-ram<\/a><\/p>\n<\/li>\n<li>\n<p><strong>AOSP System Features &amp; Permissions<\/strong>: Managing system features via permission XML declarations.<br \/>\n<a href=\"https:\/\/source.android.com\/docs\/core\/permissions\/perms-features\">https:\/\/source.android.com\/docs\/core\/permissions\/perms-features<\/a><\/p>\n<\/li>\n<li>\n<p><strong>Android Enterprise Dedicated Device (Kiosk Mode)<\/strong>: Single-app device deployment guidelines.<br \/>\n<a href=\"https:\/\/developer.android.com\/work\/dpm\/dedicated-devices\">https:\/\/developer.android.com\/work\/dpm\/dedicated-devices<\/a><\/p>\n<\/li>\n<\/ol>\n","protected":false},"excerpt":{"rendered":"<p>\u4e0a\u4e00\u7bc7\u628a dumpsys\u3001procrank \u8207 smaps \u7684\u5100\u8868\u677f\u67b6\u597d\u5f8c\uff0c\u6240\u6709\u4eba\u90fd\u770b\u50bb\u4e86\u773c\uff1a\u9ad8\u901a\u539f\u751f And [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":1257,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[166],"tags":[177,140,257,139],"_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":11,"href":"https:\/\/boochlin.com\/index.php?rest_route=\/wp\/v2\/posts\/416\/revisions"}],"predecessor-version":[{"id":1388,"href":"https:\/\/boochlin.com\/index.php?rest_route=\/wp\/v2\/posts\/416\/revisions\/1388"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/boochlin.com\/index.php?rest_route=\/wp\/v2\/media\/1257"}],"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}]}}