{"id":557,"date":"2025-11-28T10:29:50","date_gmt":"2025-11-28T02:29:50","guid":{"rendered":"https:\/\/trantor.ink\/?p=557"},"modified":"2025-11-28T10:29:50","modified_gmt":"2025-11-28T02:29:50","slug":"android-%e7%94%9f%e6%80%81%e6%9e%84%e5%bb%ba%e4%bd%93%e7%b3%bb%e6%b7%b1%e5%ba%a6%e6%bc%94%e8%bf%9b%e6%8a%a5%e5%91%8a%ef%bc%9agradle%e3%80%81kotlin%e3%80%81jvm-%e4%b8%8e-android-studio-%e7%9a%84","status":"publish","type":"post","link":"https:\/\/trantor.ink\/?p=557","title":{"rendered":"Android \u751f\u6001\u6784\u5efa\u4f53\u7cfb\u6df1\u5ea6\u6f14\u8fdb\u62a5\u544a\uff1aGradle\u3001Kotlin\u3001JVM \u4e0e Android Studio \u7684\u7248\u672c\u7ea0\u7f20\u4e0e\u534f\u540c\u673a\u5236"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_81 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/trantor.ink\/?p=557\/#%E7%AC%AC%E4%B8%80%E7%AB%A0%EF%BC%9A%E5%BC%95%E8%A8%80%E2%80%94%E2%80%94%E6%9E%84%E5%BB%BA%E7%B3%BB%E7%BB%9F%E7%9A%84%E7%86%B5%E5%A2%9E%E4%B8%8E%E7%A7%A9%E5%BA%8F%E9%87%8D%E6%9E%84\" >\u7b2c\u4e00\u7ae0\uff1a\u5f15\u8a00\u2014\u2014\u6784\u5efa\u7cfb\u7edf\u7684\u71b5\u589e\u4e0e\u79e9\u5e8f\u91cd\u6784<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/trantor.ink\/?p=557\/#%E7%AC%AC%E4%BA%8C%E7%AB%A0%EF%BC%9A%E5%9F%BA%E7%9F%B3%E5%B1%82%E2%80%94%E2%80%94Java_%E8%99%9A%E6%8B%9F%E6%9C%BA%EF%BC%88JVM%EF%BC%89%E7%9A%84%E5%8F%8C%E9%87%8D%E8%A7%92%E8%89%B2%E4%B8%8E%E7%89%88%E6%9C%AC%E5%A4%A7%E8%BF%81%E5%BE%99\" >\u7b2c\u4e8c\u7ae0\uff1a\u57fa\u77f3\u5c42\u2014\u2014Java \u865a\u62df\u673a\uff08JVM\uff09\u7684\u53cc\u91cd\u89d2\u8272\u4e0e\u7248\u672c\u5927\u8fc1\u5f99<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/trantor.ink\/?p=557\/#21_%E6%9E%84%E5%BB%BA%E8%BF%90%E8%A1%8C%E6%97%B6%EF%BC%88Build_Runtime%EF%BC%89%EF%BC%9AGradle_Daemon_%E7%9A%84%E5%AE%BF%E4%B8%BB%E7%8E%AF%E5%A2%83\" >2.1 \u6784\u5efa\u8fd0\u884c\u65f6\uff08Build Runtime\uff09\uff1aGradle Daemon \u7684\u5bbf\u4e3b\u73af\u5883<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/trantor.ink\/?p=557\/#211_%E4%BB%8E_JDK_8_%E5%88%B0_JDK_17_%E7%9A%84%E5%BC%BA%E5%88%B6%E8%BF%81%E5%BE%99%E5%8F%B2\" >2.1.1 \u4ece JDK 8 \u5230 JDK 17 \u7684\u5f3a\u5236\u8fc1\u5f99\u53f2<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/trantor.ink\/?p=557\/#212_%E5%85%BC%E5%AE%B9%E6%80%A7%E7%9F%A9%E9%98%B5%EF%BC%9AGradle_%E7%89%88%E6%9C%AC%E4%B8%8E%E5%AE%BF%E4%B8%BB_JDK\" >2.1.2 \u517c\u5bb9\u6027\u77e9\u9635\uff1aGradle \u7248\u672c\u4e0e\u5bbf\u4e3b JDK<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/trantor.ink\/?p=557\/#22_Android_Studio_%E5%86%85%E7%BD%AE%E8%BF%90%E8%A1%8C%E6%97%B6%EF%BC%9AJetBrains_Runtime_JBR\" >2.2 Android Studio \u5185\u7f6e\u8fd0\u884c\u65f6\uff1aJetBrains Runtime (JBR)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/trantor.ink\/?p=557\/#23_Java_%E5%B7%A5%E5%85%B7%E9%93%BE%EF%BC%88Toolchains%EF%BC%89%EF%BC%9A%E7%BC%96%E8%AF%91%E4%B8%8E%E8%BF%90%E8%A1%8C%E7%9A%84%E8%A7%A3%E8%80%A6%E9%9D%A9%E5%91%BD\" >2.3 Java \u5de5\u5177\u94fe\uff08Toolchains\uff09\uff1a\u7f16\u8bd1\u4e0e\u8fd0\u884c\u7684\u89e3\u8026\u9769\u547d<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/trantor.ink\/?p=557\/#%E7%AC%AC%E4%B8%89%E7%AB%A0%EF%BC%9A%E5%8A%A8%E5%8A%9B%E5%BC%95%E6%93%8E%E2%80%94%E2%80%94Gradle_%E6%9E%84%E5%BB%BA%E7%B3%BB%E7%BB%9F%E7%9A%84%E7%89%88%E6%9C%AC%E8%BF%AD%E4%BB%A3%E9%80%BB%E8%BE%91\" >\u7b2c\u4e09\u7ae0\uff1a\u52a8\u529b\u5f15\u64ce\u2014\u2014Gradle \u6784\u5efa\u7cfb\u7edf\u7684\u7248\u672c\u8fed\u4ee3\u903b\u8f91<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/trantor.ink\/?p=557\/#31_Gradle_Wrapper%EF%BC%9A%E7%89%88%E6%9C%AC%E9%94%81%E5%AE%9A%E7%9A%84%E9%94%9A%E7%82%B9\" >3.1 Gradle Wrapper\uff1a\u7248\u672c\u9501\u5b9a\u7684\u951a\u70b9<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/trantor.ink\/?p=557\/#32_AGP_%E4%B8%8E_Gradle_%E7%9A%84%E5%8D%8F%E5%90%8C%E8%BF%9B%E5%8C%96%EF%BC%88Co-evolution%EF%BC%89\" >3.2 AGP \u4e0e Gradle \u7684\u534f\u540c\u8fdb\u5316\uff08Co-evolution\uff09<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/trantor.ink\/?p=557\/#321_%E4%B8%A5%E6%A0%BC%E7%9A%84%E7%89%88%E6%9C%AC%E6%98%A0%E5%B0%84%E6%9C%BA%E5%88%B6\" >3.2.1 \u4e25\u683c\u7684\u7248\u672c\u6620\u5c04\u673a\u5236<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/trantor.ink\/?p=557\/#33_%E5%A3%B0%E6%98%8E%E5%BC%8F%E6%9E%84%E5%BB%BA%E4%B8%8E_Kotlin_DSL_%E7%9A%84%E5%B4%9B%E8%B5%B7\" >3.3 \u58f0\u660e\u5f0f\u6784\u5efa\u4e0e Kotlin DSL \u7684\u5d1b\u8d77<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/trantor.ink\/?p=557\/#%E7%AC%AC%E5%9B%9B%E7%AB%A0%EF%BC%9A%E9%80%82%E9%85%8D%E5%99%A8%E2%80%94%E2%80%94Android_Gradle_Plugin_AGP_%E7%9A%84%E6%9E%B6%E6%9E%84%E6%BC%94%E5%8F%98\" >\u7b2c\u56db\u7ae0\uff1a\u9002\u914d\u5668\u2014\u2014Android Gradle Plugin (AGP) \u7684\u67b6\u6784\u6f14\u53d8<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-14\" href=\"https:\/\/trantor.ink\/?p=557\/#41_AGP_%E4%B8%8E_Android_Studio_%E7%9A%84%E2%80%9C%E5%85%B1%E7%94%9F%E2%80%9D%E5%85%B3%E7%B3%BB\" >4.1 AGP \u4e0e Android Studio \u7684\u201c\u5171\u751f\u201d\u5173\u7cfb<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-15\" href=\"https:\/\/trantor.ink\/?p=557\/#411_Android_Studio_%E7%89%88%E6%9C%AC%E6%BC%94%E8%BF%9B%E5%85%A8%E6%99%AF%E5%9B%BE%EF%BC%882020-2025%EF%BC%89\" >4.1.1 Android Studio \u7248\u672c\u6f14\u8fdb\u5168\u666f\u56fe\uff082020-2025\uff09<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-16\" href=\"https:\/\/trantor.ink\/?p=557\/#42_%E6%A0%B8%E5%BF%83%E6%9E%B6%E6%9E%84%E5%8F%98%E9%9D%A9%EF%BC%9A%E4%BB%8E_Transform_API_%E5%88%B0_Artifacts_API\" >4.2 \u6838\u5fc3\u67b6\u6784\u53d8\u9769\uff1a\u4ece Transform API \u5230 Artifacts API<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-17\" href=\"https:\/\/trantor.ink\/?p=557\/#43_%E4%BB%A3%E7%A0%81%E7%BC%A9%E5%87%8F%E5%99%A8_R8_%E7%9A%84%E7%89%88%E6%9C%AC%E7%BB%91%E5%AE%9A\" >4.3 \u4ee3\u7801\u7f29\u51cf\u5668 R8 \u7684\u7248\u672c\u7ed1\u5b9a<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-18\" href=\"https:\/\/trantor.ink\/?p=557\/#%E7%AC%AC%E4%BA%94%E7%AB%A0%EF%BC%9A%E8%AF%AD%E8%A8%80%E6%A0%B8%E5%BF%83%E2%80%94%E2%80%94Kotlin_%E5%8F%8A%E5%85%B6%E7%BC%96%E8%AF%91%E5%99%A8%E6%8F%92%E4%BB%B6_KGP_%E7%9A%84%E7%89%88%E6%9C%AC%E5%93%B2%E5%AD%A6\" >\u7b2c\u4e94\u7ae0\uff1a\u8bed\u8a00\u6838\u5fc3\u2014\u2014Kotlin \u53ca\u5176\u7f16\u8bd1\u5668\u63d2\u4ef6 (KGP) \u7684\u7248\u672c\u54f2\u5b66<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-19\" href=\"https:\/\/trantor.ink\/?p=557\/#51_Kotlin_Gradle_Plugin_KGP_%E7%9A%84%E6%A1%A5%E6%A2%81%E4%BD%9C%E7%94%A8\" >5.1 Kotlin Gradle Plugin (KGP) \u7684\u6865\u6881\u4f5c\u7528<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-20\" href=\"https:\/\/trantor.ink\/?p=557\/#511_KGP_%E4%B8%8E_Gradle_%E7%9A%84%E5%85%BC%E5%AE%B9%E6%80%A7%E9%99%90%E5%88%B6\" >5.1.1 KGP \u4e0e Gradle \u7684\u517c\u5bb9\u6027\u9650\u5236<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-21\" href=\"https:\/\/trantor.ink\/?p=557\/#52_%E7%BC%96%E8%AF%91%E5%99%A8%E7%89%88%E6%9C%AC_Compiler%E3%80%81%E8%AF%AD%E8%A8%80%E7%89%88%E6%9C%AC_Language_%E4%B8%8E_API_%E7%89%88%E6%9C%AC\" >5.2 \u7f16\u8bd1\u5668\u7248\u672c (Compiler)\u3001\u8bed\u8a00\u7248\u672c (Language) \u4e0e API \u7248\u672c<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-22\" href=\"https:\/\/trantor.ink\/?p=557\/#53_%E8%AF%AF%E5%8C%BA%E8%A7%A3%E6%9E%90%EF%BC%9AJVM_Target_vs_Toolchain_Version\" >5.3 \u8bef\u533a\u89e3\u6790\uff1aJVM Target vs. Toolchain Version<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-23\" href=\"https:\/\/trantor.ink\/?p=557\/#%E7%AC%AC%E5%85%AD%E7%AB%A0%EF%BC%9A%E7%89%88%E6%9C%AC%E7%9F%A9%E9%98%B5%E7%9A%84%E8%9D%B4%E8%9D%B6%E6%95%88%E5%BA%94%E2%80%94%E2%80%94%E4%BE%9D%E8%B5%96%E5%86%B2%E7%AA%81%E4%B8%8E%E5%AE%9E%E6%88%98%E8%A7%A3%E5%86%B3%E7%AD%96%E7%95%A5\" >\u7b2c\u516d\u7ae0\uff1a\u7248\u672c\u77e9\u9635\u7684\u8774\u8776\u6548\u5e94\u2014\u2014\u4f9d\u8d56\u51b2\u7a81\u4e0e\u5b9e\u6218\u89e3\u51b3\u7b56\u7565<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-24\" href=\"https:\/\/trantor.ink\/?p=557\/#61_%E5%9C%BA%E6%99%AF%E6%8E%A8%E6%BC%94%EF%BC%9A%E4%BB%8E_Chipmunk_AGP_72_%E5%8D%87%E7%BA%A7%E5%88%B0_Meerkat_AGP_89\" >6.1 \u573a\u666f\u63a8\u6f14\uff1a\u4ece Chipmunk (AGP 7.2) \u5347\u7ea7\u5230 Meerkat (AGP 8.9)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-25\" href=\"https:\/\/trantor.ink\/?p=557\/#62_%E7%BB%88%E6%9E%81%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88%EF%BC%9AVersion_Catalogs_%E4%B8%8E_BOM\" >6.2 \u7ec8\u6781\u89e3\u51b3\u65b9\u6848\uff1aVersion Catalogs \u4e0e BOM<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-26\" href=\"https:\/\/trantor.ink\/?p=557\/#63_%E8%AF%8A%E6%96%AD%E5%B7%A5%E5%85%B7%EF%BC%9ABuild_Scan_%E4%B8%8E_Upgrade_Assistant\" >6.3 \u8bca\u65ad\u5de5\u5177\uff1aBuild Scan \u4e0e Upgrade Assistant<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-27\" href=\"https:\/\/trantor.ink\/?p=557\/#%E7%AC%AC%E4%B8%83%E7%AB%A0%EF%BC%9A%E7%BB%93%E8%AE%BA%E4%B8%8E%E5%B1%95%E6%9C%9B\" >\u7b2c\u4e03\u7ae0\uff1a\u7ed3\u8bba\u4e0e\u5c55\u671b<\/a><\/li><\/ul><\/nav><\/div>\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E7%AC%AC%E4%B8%80%E7%AB%A0%EF%BC%9A%E5%BC%95%E8%A8%80%E2%80%94%E2%80%94%E6%9E%84%E5%BB%BA%E7%B3%BB%E7%BB%9F%E7%9A%84%E7%86%B5%E5%A2%9E%E4%B8%8E%E7%A7%A9%E5%BA%8F%E9%87%8D%E6%9E%84\"><\/span>\u7b2c\u4e00\u7ae0\uff1a\u5f15\u8a00\u2014\u2014\u6784\u5efa\u7cfb\u7edf\u7684\u71b5\u589e\u4e0e\u79e9\u5e8f\u91cd\u6784<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u5728\u79fb\u52a8\u5e94\u7528\u5f00\u53d1\u7684\u6d69\u701a\u5b87\u5b99\u4e2d\uff0cAndroid \u751f\u6001\u7cfb\u7edf\u4ee5\u5176\u5f00\u653e\u6027\u548c\u788e\u7247\u5316\u8457\u79f0\u3002\u8fd9\u79cd\u7279\u6027\u867d\u7136\u4fc3\u8fdb\u4e86\u8bbe\u5907\u7684\u5e7f\u6cdb\u666e\u53ca\uff0c\u4f46\u4e5f\u7ed9\u5f00\u53d1\u8005\u7684\u6784\u5efa\u73af\u5883\u5e26\u6765\u4e86\u5de8\u5927\u7684\u71b5\u589e\u6311\u6218\u3002Android \u5e94\u7528\u7a0b\u5e8f\u7684\u6784\u5efa\u8fc7\u7a0b\u5e76\u975e\u7b80\u5355\u7684\u6e90\u4ee3\u7801\u7f16\u8bd1\uff0c\u800c\u662f\u4e00\u573a\u6d89\u53ca\u591a\u7ef4\u65f6\u7a7a\u7684\u7cbe\u5bc6\u7f16\u6392\uff1a\u5b83\u9700\u8981\u5728\u7279\u5b9a\u7684 Java \u865a\u62df\u673a\uff08JVM\uff09\u4e0a\u8fd0\u884c\u6784\u5efa\u5de5\u5177\uff08Gradle\uff09\uff0c\u901a\u8fc7\u7279\u5b9a\u7684\u63d2\u4ef6\uff08Android Gradle Plugin, AGP\uff09\u8c03\u7528\u7279\u5b9a\u7684\u7f16\u8bd1\u5668\uff08Kotlin\/Java\uff09\uff0c\u6700\u7ec8\u751f\u6210\u53ef\u5728\u4e0d\u540c API \u7b49\u7ea7\u7684 Android \u8bbe\u5907\u4e0a\u8fd0\u884c\u7684\u5b57\u8282\u7801\uff08DEX\uff09\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Android Studio \u4f5c\u4e3a\u8fd9\u4e00\u590d\u6742\u8fc7\u7a0b\u7684\u6307\u6325\u4e2d\u5fc3\uff0c\u5176\u7248\u672c\u6f14\u8fdb\u5e76\u975e\u5b64\u7acb\u53d1\u751f\uff0c\u800c\u662f\u4e0e\u5e95\u5c42\u5de5\u5177\u94fe\u2014\u2014Gradle\u3001Kotlin \u548c JVM\u2014\u2014\u5f62\u6210\u4e86\u4e25\u5bc6\u7684\u201c\u9501\u6b65\uff08Lock-step\uff09\u201d\u4f9d\u8d56\u5173\u7cfb\u3002\u4ece\u65e9\u671f\u7684\u677e\u6563\u8026\u5408\u5230\u5982\u4eca\u4e25\u683c\u7684\u7248\u672c\u5bf9\u9f50\uff0c\u8fd9\u4e00\u6f14\u53d8\u53cd\u6620\u4e86 Google \u548c JetBrains \u8bd5\u56fe\u901a\u8fc7\u6807\u51c6\u5316\u6765\u5bf9\u6297\u73af\u5883\u788e\u7247\u5316\u7684\u5de5\u7a0b\u54f2\u5b66\u3002\u672c\u62a5\u544a\u5c06\u6df1\u5165\u5256\u6790\u8fd9\u56db\u5927\u6838\u5fc3\u7ec4\u4ef6\u4e4b\u95f4\u7684\u6df1\u5c42\u6280\u672f\u5173\u8054\uff0c\u63ed\u793a\u7248\u672c\u53f7\u80cc\u540e\u7684\u67b6\u6784\u903b\u8f91\uff0c\u5e76\u4e3a\u5927\u578b\u5de5\u7a0b\u56e2\u961f\u63d0\u4f9b\u5e94\u5bf9\u201c\u4f9d\u8d56\u5730\u72f1\u201d\u7684\u7cfb\u7edf\u6027\u7b56\u7565\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E7%AC%AC%E4%BA%8C%E7%AB%A0%EF%BC%9A%E5%9F%BA%E7%9F%B3%E5%B1%82%E2%80%94%E2%80%94Java_%E8%99%9A%E6%8B%9F%E6%9C%BA%EF%BC%88JVM%EF%BC%89%E7%9A%84%E5%8F%8C%E9%87%8D%E8%A7%92%E8%89%B2%E4%B8%8E%E7%89%88%E6%9C%AC%E5%A4%A7%E8%BF%81%E5%BE%99\"><\/span>\u7b2c\u4e8c\u7ae0\uff1a\u57fa\u77f3\u5c42\u2014\u2014Java \u865a\u62df\u673a\uff08JVM\uff09\u7684\u53cc\u91cd\u89d2\u8272\u4e0e\u7248\u672c\u5927\u8fc1\u5f99<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u5728 Android \u6784\u5efa\u4f53\u7cfb\u4e2d\uff0cJava \u865a\u62df\u673a\uff08JVM\uff09\u626e\u6f14\u7740\u7269\u7406\u5b66\u4e2d\u201c\u65f6\u7a7a\u57fa\u8d28\u201d\u822c\u7684\u89d2\u8272\u3002\u5b83\u65e2\u662f\u6784\u5efa\u5de5\u5177\u8fd0\u884c\u7684\u8f7d\u4f53\uff0c\u4e5f\u662f\u4ee3\u7801\u7f16\u8bd1\u7684\u76ee\u6807\u73af\u5883\u3002\u7406\u89e3 JVM \u5728\u6b64\u751f\u6001\u4e2d\u7684\u4f5c\u7528\uff0c\u5fc5\u987b\u9996\u5148\u4ece\u6982\u5ff5\u4e0a\u901a\u8fc7\u201c\u6784\u5efa\u8fd0\u884c\u65f6\u201d\u4e0e\u201c\u76ee\u6807\u8fd0\u884c\u65f6\u201d\u7684\u4e8c\u5143\u5bf9\u7acb\u6765\u89e3\u6790\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"21_%E6%9E%84%E5%BB%BA%E8%BF%90%E8%A1%8C%E6%97%B6%EF%BC%88Build_Runtime%EF%BC%89%EF%BC%9AGradle_Daemon_%E7%9A%84%E5%AE%BF%E4%B8%BB%E7%8E%AF%E5%A2%83\"><\/span>2.1 \u6784\u5efa\u8fd0\u884c\u65f6\uff08Build Runtime\uff09\uff1aGradle Daemon \u7684\u5bbf\u4e3b\u73af\u5883<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Gradle \u672c\u8eab\u662f\u4e00\u4e2a\u8fd0\u884c\u5728 JVM \u4e0a\u7684 Java \u5e94\u7528\u7a0b\u5e8f\u3002\u6267\u884c\u6784\u5efa\u4efb\u52a1\u7684\u6838\u5fc3\u8fdb\u7a0b\u2014\u2014Gradle Daemon\uff0c\u5fc5\u987b\u4f9d\u9644\u4e8e\u4e00\u4e2a\u5bbf\u4e3b JDK \u624d\u80fd\u5b58\u6d3b\u3002\u8fd9\u4e2a\u5bbf\u4e3b JDK \u7684\u7248\u672c\u76f4\u63a5\u51b3\u5b9a\u4e86 Gradle \u53ca\u5176\u63d2\u4ef6\uff08\u5305\u62ec AGP \u548c KGP\uff09\u80fd\u591f\u4f7f\u7528\u7684 Java \u8bed\u8a00\u7279\u6027\u548c API \u96c6\u5408\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"211_%E4%BB%8E_JDK_8_%E5%88%B0_JDK_17_%E7%9A%84%E5%BC%BA%E5%88%B6%E8%BF%81%E5%BE%99%E5%8F%B2\"><\/span>2.1.1 \u4ece JDK 8 \u5230 JDK 17 \u7684\u5f3a\u5236\u8fc1\u5f99\u53f2<span class=\"ez-toc-section-end\"><\/span><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u56de\u987e\u8fc7\u53bb\u4e94\u5e74\uff0cAndroid \u6784\u5efa\u7cfb\u7edf\u7ecf\u5386\u4e86\u4e00\u573a\u4ece JDK 8 \u5411 JDK 17+ \u7684\u5f3a\u5236\u6027\u5927\u8fc1\u5f99\u3002\u8fd9\u4e0d\u4ec5\u4ec5\u662f\u6570\u5b57\u7684\u8df3\u52a8\uff0c\u800c\u662f\u6574\u4e2a Java \u751f\u6001\u7cfb\u7edf\u73b0\u4ee3\u5316\u7684\u7f29\u5f71\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u524d AGP 7.0 \u65f6\u4ee3\uff08JDK 8 \u7684\u9ec4\u660f\uff09<\/strong>\uff1a\u5728 Android Studio 4.x \u53ca\u66f4\u65e9\u7248\u672c\u4e2d\uff0c\u5f00\u53d1\u8005\u666e\u904d\u4f7f\u7528 JDK 8 \u4f5c\u4e3a\u6784\u5efa\u73af\u5883\u3002\u8fd9\u4e00\u65f6\u671f\uff0c\u6784\u5efa\u5de5\u5177\u5bf9\u5185\u5b58\u7684\u7ba1\u7406\u76f8\u5bf9\u7c97\u653e\uff0c\u5783\u573e\u56de\u6536\uff08GC\uff09\u4e3b\u8981\u4f9d\u8d56 Parallel GC \u6216 CMS\uff0c\u5728\u5927\u89c4\u6a21\u591a\u6a21\u5757\u9879\u76ee\u4e2d\u5e38\u51fa\u73b0 <code>OOM<\/code>\uff08\u5185\u5b58\u6ea2\u51fa\uff09\u6216\u957f\u65f6\u95f4\u7684 GC \u505c\u987f\u3002<\/li>\n\n\n\n<li><strong>AGP 7.0 \u7684\u5206\u6c34\u5cad\uff08JDK 11\uff09<\/strong>\uff1a2021 \u5e74\uff0c\u968f\u7740 Android Studio Arctic Fox \u7684\u53d1\u5e03\uff0cGoogle \u8fc8\u51fa\u4e86\u6fc0\u8fdb\u7684\u4e00\u6b65\uff0c\u5f3a\u5236\u8981\u6c42 AGP 7.0 \u5fc5\u987b\u8fd0\u884c\u5728 JDK 11 \u4e0a <sup>1<\/sup>\u3002\u8fd9\u4e00\u51b3\u7b56\u80cc\u540e\u7684\u63a8\u529b\u6765\u81ea\u4e8e Gradle \u81ea\u8eab\u67b6\u6784\u7684\u5347\u7ea7\u4ee5\u53ca\u5bf9 Java \u6a21\u5757\u5316\u7cfb\u7edf\uff08Jigsaw\uff09\u7684\u5168\u9762\u63a5\u7eb3\u3002JDK 11 \u5f15\u5165\u7684 G1 GC \u6539\u8fdb\u548c\u5b57\u7b26\u4e32\u53bb\u91cd\u7279\u6027\uff0c\u663e\u8457\u964d\u4f4e\u4e86\u5927\u578b\u6784\u5efa\u7684\u5185\u5b58\u5360\u7528\u3002<\/li>\n\n\n\n<li><strong>AGP 8.0 \u7684\u73b0\u4ee3\u5316\u5b9a\u578b\uff08JDK 17\uff09<\/strong>\uff1a2023 \u5e74\uff0cAndroid Studio Flamingo \u548c AGP 8.0 \u8fdb\u4e00\u6b65\u5c06\u95e8\u69db\u63d0\u5347\u81f3 JDK 17 <sup>2<\/sup>\u3002\u8fd9\u4e00\u5347\u7ea7\u5177\u6709\u6df1\u8fdc\u7684\u6218\u7565\u610f\u4e49\uff1aJDK 17 \u662f\u7ee7 JDK 11 \u4e4b\u540e\u7684\u957f\u671f\u652f\u6301\u7248\u672c\uff08LTS\uff09\uff0c\u652f\u6301\u5bc6\u5c01\u7c7b\uff08Sealed Classes\uff09\u3001\u8bb0\u5f55\u7c7b\u578b\uff08Records\uff09\u7b49\u73b0\u4ee3\u8bed\u8a00\u7279\u6027\u3002AGP 8.0 \u7684\u5185\u90e8\u4ee3\u7801\u5e93\u5229\u7528\u8fd9\u4e9b\u7279\u6027\u8fdb\u884c\u4e86\u91cd\u6784\uff0c\u5927\u5e45\u63d0\u5347\u4e86\u6784\u5efa\u914d\u7f6e\u9636\u6bb5\uff08Configuration Phase\uff09\u7684\u6027\u80fd\u3002<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"212_%E5%85%BC%E5%AE%B9%E6%80%A7%E7%9F%A9%E9%98%B5%EF%BC%9AGradle_%E7%89%88%E6%9C%AC%E4%B8%8E%E5%AE%BF%E4%B8%BB_JDK\"><\/span>2.1.2 \u517c\u5bb9\u6027\u77e9\u9635\uff1aGradle \u7248\u672c\u4e0e\u5bbf\u4e3b JDK<span class=\"ez-toc-section-end\"><\/span><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Gradle \u53d1\u884c\u7248\u5bf9\u5bbf\u4e3b JVM \u6709\u7740\u4e25\u683c\u7684\u4e0a\u4e0b\u9650\u8981\u6c42\u3002\u8fc7\u65e7\u7684 Gradle \u65e0\u6cd5\u8bc6\u522b\u65b0\u7248 JDK \u7684\u7c7b\u6587\u4ef6\u683c\u5f0f\uff08Class File Version\uff09\uff0c\u800c\u8fc7\u65b0\u7684 Gradle \u5219\u4f9d\u8d56\u65b0\u7248 JDK \u7684 API\u3002<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><td><strong>Gradle \u7248\u672c\u533a\u95f4<\/strong><\/td><td><strong>\u6700\u4f4e\u652f\u6301 JVM<\/strong><\/td><td><strong>\u6700\u9ad8\u652f\u6301 JVM<\/strong><\/td><td><strong>\u5173\u952e\u6280\u672f\u8282\u70b9<\/strong><\/td><\/tr><\/thead><tbody><tr><td><strong>8.5 &#8211; 9.x<\/strong><\/td><td>Java 8<\/td><td><strong>Java 21<\/strong><\/td><td>\u652f\u6301\u865a\u62df\u7ebf\u7a0b\uff08Loom\uff09\uff0c\u5b8c\u5168\u9002\u914d JDK 21 <sup>4<\/sup><\/td><\/tr><tr><td><strong>8.3 &#8211; 8.4<\/strong><\/td><td>Java 8<\/td><td><strong>Java 20<\/strong><\/td><td><\/td><\/tr><tr><td><strong>7.3 &#8211; 7.6<\/strong><\/td><td>Java 8<\/td><td><strong>Java 17-19<\/strong><\/td><td><strong>AGP 8.0+ \u7684\u6700\u4f4e\u8fd0\u884c\u95e8\u69db<\/strong> <sup>5<\/sup><\/td><\/tr><tr><td><strong>7.0 &#8211; 7.2<\/strong><\/td><td>Java 8<\/td><td><strong>Java 16<\/strong><\/td><td><strong>AGP 7.0+ \u7684\u6700\u4f4e\u8fd0\u884c\u95e8\u69db<\/strong><\/td><\/tr><tr><td><strong>6.0 &#8211; 6.9<\/strong><\/td><td>Java 8<\/td><td>Java 15<\/td><td>\u65e7\u65f6\u4ee3\u7684\u5206\u754c\u7ebf<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><em>\u6570\u636e\u7efc\u5408\u5206\u6790\uff1a\u867d\u7136 Gradle \u672c\u8eab\u5927\u591a\u652f\u6301\u5411\u4e0b\u517c\u5bb9\u81f3 Java 8 \u8fd0\u884c\uff0c\u4f46 AGP \u63d2\u4ef6\u7684\u9650\u5236\uff08Requires Java 17\uff09\u8986\u76d6\u4e86 Gradle \u7684\u5bbd\u5bb9\u5ea6\u3002\u56e0\u6b64\uff0c\u73b0\u4ee3 Android \u5f00\u53d1\u7684\u5b9e\u9645\u5e95\u7ebf\u5df2\u88ab\u9501\u5b9a\u5728 JDK 17+\u3002<\/em><\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"22_Android_Studio_%E5%86%85%E7%BD%AE%E8%BF%90%E8%A1%8C%E6%97%B6%EF%BC%9AJetBrains_Runtime_JBR\"><\/span>2.2 Android Studio \u5185\u7f6e\u8fd0\u884c\u65f6\uff1aJetBrains Runtime (JBR)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e3a\u4e86\u6d88\u9664\u201c\u5f00\u53d1\u8005\u672c\u5730\u73af\u5883\u914d\u7f6e\u4e0d\u4e00\u81f4\u201d\u8fd9\u4e00\u987d\u75be\uff0cAndroid Studio \u91c7\u53d6\u4e86\u201c\u81ea\u5e26\u5e72\u7cae\u201d\u7684\u7b56\u7565\u3002IDE \u5b89\u88c5\u5305\u4e2d\u6346\u7ed1\u4e86\u4e00\u4e2a\u5b9a\u5236\u7248\u7684 OpenJDK\uff0c\u79f0\u4e3a JetBrains Runtime (JBR)\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>JBR \u7684\u6280\u672f\u4f18\u52bf<\/strong>\uff1aJBR \u4e0d\u4ec5\u4ec5\u662f OpenJDK \u7684\u91cd\u65b0\u6253\u5305\uff0c\u5b83\u5305\u542b\u4e86 JetBrains \u56e2\u961f\u9488\u5bf9 IDE \u4f7f\u7528\u573a\u666f\u7684\u5927\u91cf Patch\u3002\u8fd9\u4e9b\u4f18\u5316\u5305\u62ec macOS \u4e0a\u7684\u5b57\u4f53\u6e32\u67d3\u6539\u8fdb\u3001Linux \u4e0a\u7684\u7a97\u53e3\u7ba1\u7406\u5668\u4fee\u590d\u3001\u4ee5\u53ca\u9488\u5bf9 IDE \u7d22\u5f15\u5efa\u7acb\u8fc7\u7a0b\u7684 IO \u4f18\u5316 <sup>6<\/sup>\u3002<\/li>\n\n\n\n<li><strong>\u7248\u672c\u6f14\u8fdb\u4e0e IDE \u7684\u5f3a\u7ed1\u5b9a<\/strong>\uff1a\n<ul class=\"wp-block-list\">\n<li><strong>Arctic Fox \/ Bumblebee \/ Chipmunk<\/strong>\uff1a\u8fd9\u4e9b\u7248\u672c\u6346\u7ed1\u4e86 <strong>JDK 11<\/strong>\uff0c\u5bf9\u5e94 AGP 7.x \u65f6\u4ee3\u7684\u9700\u6c42 <sup>6<\/sup>\u3002<\/li>\n\n\n\n<li><strong>Electric Eel \/ Flamingo \/ Giraffe<\/strong>\uff1a\u5347\u7ea7\u81f3 <strong>JDK 17<\/strong>\uff0c\u4ee5\u6ee1\u8db3 AGP 8.x \u7684\u542f\u52a8\u8981\u6c42 <sup>2<\/sup>\u3002<\/li>\n\n\n\n<li><strong>Iguana \/ Jellyfish \/ Koala<\/strong>\uff1a\u7ef4\u6301\u5728 <strong>JDK 17<\/strong>\uff0c\u90e8\u5206\u9884\u89c8\u7248\u5f00\u59cb\u6d4b\u8bd5 JDK 21 <sup>8<\/sup>\u3002<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u6df1\u5ea6\u6d1e\u5bdf<\/strong>\uff1a\u73af\u5883\u6f02\u79fb\uff08Environment Drift\uff09\u662f\u5bfc\u81f4\u6784\u5efa\u5931\u8d25\u7684\u9690\u5f62\u6740\u624b\u3002\u5f00\u53d1\u8005\u5e38\u9047\u5230\u201cIDE \u5185\u70b9\u51fb Run \u6210\u529f\uff0c\u4f46\u7ec8\u7aef\u6267\u884c <code>.\/gradlew<\/code> \u5931\u8d25\u201d\u7684\u8be1\u5f02\u73b0\u8c61\u3002\u5176\u6839\u6e90\u901a\u5e38\u5728\u4e8e\uff1aIDE \u9ed8\u8ba4\u4f7f\u7528\u5185\u7f6e\u7684 JBR \u542f\u52a8 Gradle Daemon\uff0c\u800c\u7ec8\u7aef\u9ed8\u8ba4\u4f7f\u7528\u64cd\u4f5c\u7cfb\u7edf\u7684 <code>JAVA_HOME<\/code> \u73af\u5883\u53d8\u91cf\u3002\u5f53\u4e24\u8005\u7248\u672c\u4e0d\u4e00\u81f4\uff08\u4f8b\u5982 IDE \u7528 JDK 17\uff0c\u7ec8\u7aef\u7528 JDK 8\uff09\u65f6\uff0cGradle Daemon \u65e0\u6cd5\u590d\u7528\uff0c\u751a\u81f3\u56e0\u7248\u672c\u4e0d\u517c\u5bb9\u800c\u62a5\u9519 <sup>9<\/sup>\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"23_Java_%E5%B7%A5%E5%85%B7%E9%93%BE%EF%BC%88Toolchains%EF%BC%89%EF%BC%9A%E7%BC%96%E8%AF%91%E4%B8%8E%E8%BF%90%E8%A1%8C%E7%9A%84%E8%A7%A3%E8%80%A6%E9%9D%A9%E5%91%BD\"><\/span>2.3 Java \u5de5\u5177\u94fe\uff08Toolchains\uff09\uff1a\u7f16\u8bd1\u4e0e\u8fd0\u884c\u7684\u89e3\u8026\u9769\u547d<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u5728 Gradle 6.7 \u4e4b\u524d\uff0c\u6784\u5efa\u8fd0\u884c\u65f6\u7684 JDK \u548c\u4ee3\u7801\u7f16\u8bd1\u4f7f\u7528\u7684 JDK \u901a\u5e38\u6df7\u4e3a\u4e00\u8c08\u3002\u8fd9\u5bfc\u81f4\u4e86\u8bb8\u591a\u517c\u5bb9\u6027\u4e8b\u6545\uff0c\u4f8b\u5982\u5f00\u53d1\u8005\u4e0d\u5c0f\u5fc3\u4f7f\u7528\u4e86 JDK 11 \u7684 API\uff08\u5982 <code>String.isBlank()<\/code>\uff09\uff0c\u5374\u5c06\u76ee\u6807\u7248\u672c\u8bbe\u4e3a Java 8\uff0c\u5bfc\u81f4\u4f4e\u7248\u672c\u8bbe\u5907\u5d29\u6e83\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Gradle \u5f15\u5165\u7684 <strong>Java Toolchains<\/strong> \u673a\u5236\u5f7b\u5e95\u89e3\u51b3\u4e86\u8fd9\u4e00\u95ee\u9898\u3002\u5b83\u5141\u8bb8\u5f00\u53d1\u8005\u663e\u5f0f\u58f0\u660e\uff1a\u201c\u65e0\u8bba\u7528\u4ec0\u4e48 JDK \u8fd0\u884c Gradle\uff0c\u8bf7\u52a1\u5fc5\u4e0b\u8f7d\u5e76\u4f7f\u7528 JDK 17 \u6765\u7f16\u8bd1\u6211\u7684\u4ee3\u7801\u201d <sup>11<\/sup>\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Kotlin<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u73b0\u4ee3 Android \u9879\u76ee\u7684\u6807\u51c6\u914d\u7f6e\njava {\n    toolchain {\n        languageVersion.set(JavaLanguageVersion.of(17))\n    }\n}\n<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u673a\u5236\u89e3\u6790<\/strong>\uff1a\u5f53\u914d\u7f6e\u4e86 Toolchain \u540e\uff0cGradle \u4f1a\u5229\u7528\u5176\u81ea\u52a8\u914d\u7f6e\uff08Auto-provisioning\uff09\u80fd\u529b\uff0c\u68c0\u67e5\u672c\u5730\u7f13\u5b58\u662f\u5426\u5b58\u5728\u6307\u5b9a\u7248\u672c\u7684 JDK\u3002\u5982\u679c\u4e0d\u5b58\u5728\uff0c\u5b83\u4f1a\u4ece Adoptium \u6216\u5176\u4ed6\u4f9b\u5e94\u5546\u5904\u81ea\u52a8\u4e0b\u8f7d\u5e76\u5b89\u88c5\u3002\u8fd9\u79cd\u673a\u5236\u5c06\u9879\u76ee\u7684\u6784\u5efa\u73af\u5883\u201c\u5bb9\u5668\u5316\u201d\uff0c\u786e\u4fdd\u4e86\u65e0\u8bba\u662f\u65b0\u5165\u804c\u7684\u5458\u5de5\u8fd8\u662f CI \u670d\u52a1\u5668\uff0c\u90fd\u80fd\u83b7\u5f97\u6bd4\u7279\u7ea7\u4e00\u81f4\uff08Bit-wise consistent\uff09\u7684\u7f16\u8bd1\u4ea7\u7269 <sup>13<\/sup>\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E7%AC%AC%E4%B8%89%E7%AB%A0%EF%BC%9A%E5%8A%A8%E5%8A%9B%E5%BC%95%E6%93%8E%E2%80%94%E2%80%94Gradle_%E6%9E%84%E5%BB%BA%E7%B3%BB%E7%BB%9F%E7%9A%84%E7%89%88%E6%9C%AC%E8%BF%AD%E4%BB%A3%E9%80%BB%E8%BE%91\"><\/span>\u7b2c\u4e09\u7ae0\uff1a\u52a8\u529b\u5f15\u64ce\u2014\u2014Gradle \u6784\u5efa\u7cfb\u7edf\u7684\u7248\u672c\u8fed\u4ee3\u903b\u8f91<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Gradle \u662f Android \u5f00\u53d1\u7684\u64cd\u4f5c\u7cfb\u7edf\u3002\u5b83\u8d1f\u8d23\u7ba1\u7406\u4f9d\u8d56\u3001\u6267\u884c\u4efb\u52a1\u56fe\uff08Task Graph\uff09\u548c\u7f16\u6392\u6574\u4e2a\u6784\u5efa\u751f\u547d\u5468\u671f\u3002\u4e86\u89e3 Gradle \u7248\u672c\u4e0e AGP \u7684\u5173\u7cfb\uff0c\u662f\u89e3\u51b3\u6784\u5efa\u9519\u8bef\u7684\u5173\u952e\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"31_Gradle_Wrapper%EF%BC%9A%E7%89%88%E6%9C%AC%E9%94%81%E5%AE%9A%E7%9A%84%E9%94%9A%E7%82%B9\"><\/span>3.1 Gradle Wrapper\uff1a\u7248\u672c\u9501\u5b9a\u7684\u951a\u70b9<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><code>gradle-wrapper.properties<\/code> \u6587\u4ef6\u4e2d\u7684 <code>distributionUrl<\/code> \u662f\u6574\u4e2a\u9879\u76ee\u7684\u5b9a\u6d77\u795e\u9488\u3002\u5b83\u4e0d\u4ec5\u6307\u5b9a\u4e86 Gradle \u7684\u7248\u672c\uff0c\u8fd8\u9690\u542b\u4e86\u8be5\u9879\u76ee\u6240\u5904\u7684\u5386\u53f2\u6280\u672f\u6808\u5750\u6807 <sup>14<\/sup>\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>-bin \u4e0e -all \u7684\u6289\u62e9<\/strong>\uff1a\n<ul class=\"wp-block-list\">\n<li><code>gradle-x.y-bin.zip<\/code>\uff1a\u4ec5\u5305\u542b\u8fd0\u884c\u65f6\u4e8c\u8fdb\u5236\u6587\u4ef6\uff0c\u4f53\u79ef\u5c0f\uff0c\u9002\u5408 CI \u73af\u5883\u3002<\/li>\n\n\n\n<li><code>gradle-x.y-all.zip<\/code>\uff1a\u5305\u542b\u6e90\u4ee3\u7801\u548c\u6587\u6863\u3002\u5bf9\u4e8e Android Studio \u7528\u6237\u81f3\u5173\u91cd\u8981\uff0c\u56e0\u4e3a\u5b83\u5141\u8bb8 IDE \u4e0b\u8f7d\u6e90\u7801\u4ee5\u63d0\u4f9b DSL \u7684\u667a\u80fd\u63d0\u793a\u548c\u8df3\u8f6c\u529f\u80fd\u3002\u5982\u679c\u5728 IDE \u4e2d\u4f7f\u7528 <code>-bin<\/code> \u7248\u672c\uff0c<code>build.gradle.kts<\/code> \u7684\u7f16\u5199\u4f53\u9a8c\u5c06\u5927\u6253\u6298\u6263 <sup>15<\/sup>\u3002<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"32_AGP_%E4%B8%8E_Gradle_%E7%9A%84%E5%8D%8F%E5%90%8C%E8%BF%9B%E5%8C%96%EF%BC%88Co-evolution%EF%BC%89\"><\/span>3.2 AGP \u4e0e Gradle \u7684\u534f\u540c\u8fdb\u5316\uff08Co-evolution\uff09<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Android Gradle Plugin (AGP) \u5e76\u4e0d\u662f\u4e00\u4e2a\u666e\u901a\u7684\u63d2\u4ef6\uff0c\u5b83\u6df1\u5ea6\u4fb5\u5165\u4e86 Gradle \u7684\u5185\u90e8 API\u3002\u4e3a\u4e86\u8ffd\u6c42\u6027\u80fd\u6781\u81f4\uff0cGoogle \u7684 AGP \u56e2\u961f\u7ecf\u5e38\u5229\u7528 Gradle \u7684\u5b75\u5316\u4e2d\uff08Incubating\uff09\u7279\u6027\u3002\u8fd9\u610f\u5473\u7740 Gradle \u7684\u6bcf\u6b21\u4e3b\u7248\u672c\u66f4\u65b0\uff08Major Version Update\uff09\u5f80\u5f80\u4f34\u968f\u7740 API \u7684\u5e9f\u5f03\u548c\u79fb\u9664\uff0c\u4ece\u800c\u8feb\u4f7f AGP \u5fc5\u987b\u7d27\u8ddf\u6b65\u4f10\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"321_%E4%B8%A5%E6%A0%BC%E7%9A%84%E7%89%88%E6%9C%AC%E6%98%A0%E5%B0%84%E6%9C%BA%E5%88%B6\"><\/span>3.2.1 \u4e25\u683c\u7684\u7248\u672c\u6620\u5c04\u673a\u5236<span class=\"ez-toc-section-end\"><\/span><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Google \u7ef4\u62a4\u4e86\u4e00\u4efd\u4e25\u683c\u7684 AGP-Gradle \u7248\u672c\u5bf9\u7167\u8868\u3002\u8fd9\u79cd\u5bf9\u5e94\u5173\u7cfb\u5728\u8fd1\u5e74\u6765\u53d8\u5f97\u6108\u53d1\u521a\u6027\u3002<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><td><strong>AGP \u7248\u672c<\/strong><\/td><td><strong>\u6700\u4f4e Gradle \u7248\u672c<\/strong><\/td><td><strong>\u63a8\u8350 Gradle \u7248\u672c<\/strong><\/td><td><strong>\u67b6\u6784\u53d8\u9769\u80cc\u666f<\/strong><\/td><\/tr><\/thead><tbody><tr><td><strong>8.13<\/strong><\/td><td>8.13<\/td><td>8.13<\/td><td>\u9002\u914d Gradle 8.13 \u7684\u65b0\u7f13\u5b58\u673a\u5236 <sup>8<\/sup><\/td><\/tr><tr><td><strong>8.10 &#8211; 8.12<\/strong><\/td><td>8.11.1<\/td><td>8.11.1+<\/td><td>\u7a33\u5b9a\u6027\u4fee\u590d\u5468\u671f<\/td><\/tr><tr><td><strong>8.7<\/strong><\/td><td>8.9<\/td><td>8.9<\/td><td>\u9002\u914d\u914d\u7f6e\u7f13\u5b58\uff08Configuration Cache\uff09\u589e\u5f3a<\/td><\/tr><tr><td><strong>8.3 &#8211; 8.6<\/strong><\/td><td>8.4<\/td><td>8.6<\/td><td>\u9ed8\u8ba4\u5f00\u542f R8 \u5b8c\u6574\u6a21\u5f0f<\/td><\/tr><tr><td><strong>8.0 &#8211; 8.2<\/strong><\/td><td><strong>8.0<\/strong><\/td><td>8.2<\/td><td><strong>\u79fb\u9664 Transform API\uff0c\u79fb\u9664\u65e7\u7248 Variant API<\/strong> <sup>2<\/sup><\/td><\/tr><tr><td><strong>7.4<\/strong><\/td><td>7.5<\/td><td>7.6<\/td><td><\/td><\/tr><tr><td><strong>7.0<\/strong><\/td><td><strong>7.0<\/strong><\/td><td>7.0.2<\/td><td><strong>\u7248\u672c\u53f7\u5bf9\u9f50 Gradle\uff0c\u5f3a\u5236 JDK 11<\/strong> <sup>8<\/sup><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u6df1\u5ea6\u5206\u6790<\/strong>\uff1a\u89c2\u5bdf\u4e0a\u8868\u53ef\u4ee5\u53d1\u73b0\uff0cAGP \u7684\u7248\u672c\u53f7\u5728 7.0 \u4e4b\u540e\u53d1\u751f\u4e86\u8df3\u8dc3\uff08\u4ece 4.2 \u76f4\u63a5\u8df3\u5230 7.0\uff09\u3002\u8fd9\u4e00\u201c\u5927\u8dc3\u8fdb\u201d\u7b56\u7565\u5e76\u975e\u8425\u9500\u624b\u6bb5\uff0c\u800c\u662f\u4e3a\u4e86\u5728\u8bed\u4e49\u4e0a\u4e0e Gradle \u7684\u4e3b\u7248\u672c\u53f7\u4fdd\u6301\u540c\u6b65\uff08AGP 7.x \u5bf9\u5e94 Gradle 7.x\uff0cAGP 8.x \u5bf9\u5e94 Gradle 8.x\uff09\u3002\u8fd9\u6781\u5927\u5730\u964d\u4f4e\u4e86\u5f00\u53d1\u8005\u8bb0\u5fc6\u7248\u672c\u5bf9\u5e94\u5173\u7cfb\u7684\u8ba4\u77e5\u8d1f\u8377\uff0c\u662f Android \u5de5\u7a0b\u5316\u6210\u719f\u7684\u6807\u5fd7 <sup>8<\/sup>\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"33_%E5%A3%B0%E6%98%8E%E5%BC%8F%E6%9E%84%E5%BB%BA%E4%B8%8E_Kotlin_DSL_%E7%9A%84%E5%B4%9B%E8%B5%B7\"><\/span>3.3 \u58f0\u660e\u5f0f\u6784\u5efa\u4e0e Kotlin DSL \u7684\u5d1b\u8d77<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u4ece Android Studio Giraffe \u5f00\u59cb\uff0cKotlin DSL (<code>build.gradle.kts<\/code>) \u6210\u4e3a\u9ed8\u8ba4\u7684\u6784\u5efa\u811a\u672c\u8bed\u8a00 <sup>16<\/sup>\u3002\u8fd9\u4e00\u8f6c\u53d8\u5bf9 Gradle \u7248\u672c\u63d0\u51fa\u4e86\u66f4\u9ad8\u8981\u6c42\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u7c7b\u578b\u5b89\u5168\u4e0e\u6027\u80fd\u6743\u8861<\/strong>\uff1aKotlin DSL \u63d0\u4f9b\u4e86\u7f16\u8bd1\u65f6\u68c0\u67e5\u548c\u5353\u8d8a\u7684 IDE \u652f\u6301\uff0c\u4f46\u5176\u7f16\u8bd1\u901f\u5ea6\u6162\u4e8e Groovy DSL\u3002Gradle \u5728 8.x \u7248\u672c\u4e2d\u5f15\u5165\u4e86\u89e3\u91ca\u5668\u4f18\u5316\u548c\u811a\u672c\u7f16\u8bd1\u7f13\u5b58\uff0c\u663e\u8457\u7f29\u77ed\u4e86 Kotlin DSL \u7684\u914d\u7f6e\u65f6\u95f4\u3002\u56e0\u6b64\uff0c\u4f7f\u7528 Kotlin DSL \u7684\u9879\u76ee\u5f3a\u70c8\u5efa\u8bae\u5347\u7ea7\u5230 Gradle 8.2+ \u4ee5\u83b7\u5f97\u6700\u4f73\u6027\u80fd\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\"><span class=\"ez-toc-section\" id=\"%E7%AC%AC%E5%9B%9B%E7%AB%A0%EF%BC%9A%E9%80%82%E9%85%8D%E5%99%A8%E2%80%94%E2%80%94Android_Gradle_Plugin_AGP_%E7%9A%84%E6%9E%B6%E6%9E%84%E6%BC%94%E5%8F%98\"><\/span>\u7b2c\u56db\u7ae0\uff1a\u9002\u914d\u5668\u2014\u2014Android Gradle Plugin (AGP) \u7684\u67b6\u6784\u6f14\u53d8<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">AGP \u662f\u8fde\u63a5 Gradle \u901a\u7528\u6784\u5efa\u80fd\u529b\u4e0e Android \u7279\u5b9a\u6253\u5305\u9700\u6c42\uff08Manifest \u5408\u5e76\u3001AAPT2 \u8d44\u6e90\u5904\u7406\u3001DEX \u751f\u6210\u3001APK \u7b7e\u540d\uff09\u7684\u6865\u6881\u3002AGP \u7684\u7248\u672c\u4e0d\u4ec5\u51b3\u5b9a\u4e86\u6784\u5efa\u529f\u80fd\uff0c\u8fd8\u76f4\u63a5\u9501\u5b9a\u4e86\u4e00\u7cfb\u5217\u5e95\u5c42\u5de5\u5177\u7684\u7248\u672c\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"41_AGP_%E4%B8%8E_Android_Studio_%E7%9A%84%E2%80%9C%E5%85%B1%E7%94%9F%E2%80%9D%E5%85%B3%E7%B3%BB\"><\/span>4.1 AGP \u4e0e Android Studio \u7684\u201c\u5171\u751f\u201d\u5173\u7cfb<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u7406\u8bba\u4e0a\uff0cAGP \u53ef\u4ee5\u5728\u547d\u4ee4\u884c\u4e2d\u72ec\u7acb\u4e8e IDE \u8fd0\u884c\u3002\u4f46\u5728\u5b9e\u9645\u5f00\u53d1\u4e2d\uff0cAndroid Studio \u7684\u8bf8\u591a\u9ad8\u7ea7\u529f\u80fd\u2014\u2014\u5982\u5e03\u5c40\u5b9e\u65f6\u9884\u89c8\uff08Live Edit\uff09\u3001\u4ee3\u7801\u6027\u80fd\u5206\u6790\u5668\uff08Profiler\uff09\u3001\u4ee5\u53ca\u65b0\u7684\u6784\u5efa\u5206\u6790\u5668\uff08Build Analyzer\uff09\u2014\u2014\u90fd\u4f9d\u8d56\u4e8e\u7279\u5b9a\u7248\u672c AGP \u66b4\u9732\u7684\u6a21\u578b\uff08Project Model\uff09\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e3a\u4e86\u5e73\u8861\u521b\u65b0\u4e0e\u7a33\u5b9a\uff0cGoogle \u5b9e\u65bd\u4e86\u201c\u4e09\u5e74\u517c\u5bb9\u6027\u7a97\u53e3\u201d\u7b56\u7565\uff1a\u6bcf\u4e2a Android Studio \u7248\u672c\u652f\u6301\u6b64\u524d 3 \u5e74\u5185\u53d1\u5e03\u7684 AGP \u7248\u672c <sup>8<\/sup>\u3002\u7136\u800c\uff0c\u8fd9\u53ea\u662f\u201c\u80fd\u8dd1\u201d\u7684\u5e95\u7ebf\u3002\u4e3a\u4e86\u83b7\u5f97\u201c\u80fd\u7528\u4e14\u597d\u7528\u201d\u7684\u4f53\u9a8c\uff0c\u7248\u672c\u7684\u4e00\u81f4\u6027\u81f3\u5173\u91cd\u8981\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"411_Android_Studio_%E7%89%88%E6%9C%AC%E6%BC%94%E8%BF%9B%E5%85%A8%E6%99%AF%E5%9B%BE%EF%BC%882020-2025%EF%BC%89\"><\/span>4.1.1 Android Studio \u7248\u672c\u6f14\u8fdb\u5168\u666f\u56fe\uff082020-2025\uff09<span class=\"ez-toc-section-end\"><\/span><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u4ee5\u4e0b\u6570\u636e\u7efc\u5408\u4e86\u5b98\u65b9\u53d1\u5e03\u8bf4\u660e\u4e0e\u6784\u5efa\u5de5\u5177\u94fe\u7684\u6f14\u53d8\u5386\u53f2 <sup>7<\/sup>\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><td><strong>Android Studio \u4ee3\u53f7<\/strong><\/td><td><strong>\u53d1\u5e03\u5e74\u4efd<\/strong><\/td><td><strong>\u6838\u5fc3\u7248\u672c\u53f7<\/strong><\/td><td><strong>\u63a8\u8350 AGP<\/strong><\/td><td><strong>\u5173\u952e\u7279\u6027\u4e0e JDK \u8981\u6c42<\/strong><\/td><\/tr><\/thead><tbody><tr><td><strong>Otter<\/strong><\/td><td>2025 (\u9884\u89c8)<\/td><td>2025.2.1<\/td><td><strong>8.13<\/strong><\/td><td>\u652f\u6301 Android 16 (API 36) \u9884\u89c8 <sup>8<\/sup><\/td><\/tr><tr><td><strong>Narwhal<\/strong><\/td><td>2025<\/td><td>2025.1.1<\/td><td><strong>8.11+<\/strong><\/td><td>\u589e\u5f3a\u7684 K2 \u6a21\u5f0f\u652f\u6301<\/td><\/tr><tr><td><strong>Meerkat<\/strong><\/td><td>2024<\/td><td>2024.3.1<\/td><td><strong>8.9 &#8211; 8.10<\/strong><\/td><td>Gemini AI \u6df1\u5ea6\u96c6\u6210<\/td><\/tr><tr><td><strong>Ladybug<\/strong><\/td><td>2024<\/td><td>2024.2.1<\/td><td><strong>8.7 &#8211; 8.8<\/strong><\/td><td><\/td><\/tr><tr><td><strong>Koala<\/strong><\/td><td>2024<\/td><td>2024.1.1<\/td><td><strong>8.5 &#8211; 8.6<\/strong><\/td><td><\/td><\/tr><tr><td><strong>Jellyfish<\/strong><\/td><td>2023<\/td><td>2023.3.1<\/td><td><strong>8.4<\/strong><\/td><td><\/td><\/tr><tr><td><strong>Iguana<\/strong><\/td><td>2023<\/td><td>2023.2.1<\/td><td><strong>8.3<\/strong><\/td><td>\u7248\u672c\u63a7\u5236\u96c6\u6210\u589e\u5f3a<\/td><\/tr><tr><td><strong>Hedgehog<\/strong><\/td><td>2023<\/td><td>2023.1.1<\/td><td><strong>8.2<\/strong><\/td><td>\u8bbe\u5907\u955c\u50cf\u529f\u80fd\u4f18\u5316<\/td><\/tr><tr><td><strong>Giraffe<\/strong><\/td><td>2022<\/td><td>2022.3.1<\/td><td><strong>8.1<\/strong><\/td><td>UI \u53d8\u9769\uff0cKotlin DSL \u6210\u4e3a\u9ed8\u8ba4<\/td><\/tr><tr><td><strong>Flamingo<\/strong><\/td><td>2022<\/td><td>2022.2.1<\/td><td><strong>8.0<\/strong><\/td><td><strong>\u5f3a\u5236 JDK 17\uff0c\u79fb\u9664 Transform API<\/strong> <sup>2<\/sup><\/td><\/tr><tr><td><strong>Electric Eel<\/strong><\/td><td>2022<\/td><td>2022.1.1<\/td><td><strong>7.4<\/strong><\/td><td><\/td><\/tr><tr><td><strong>Dolphin<\/strong><\/td><td>2021<\/td><td>2021.3.1<\/td><td><strong>7.3<\/strong><\/td><td><strong>\u5f3a\u5236 JDK 11 (AGP 7.x)<\/strong><\/td><\/tr><tr><td><strong>Chipmunk<\/strong><\/td><td>2021<\/td><td>2021.2.1<\/td><td><strong>7.2<\/strong><\/td><td><\/td><\/tr><tr><td><strong>Bumblebee<\/strong><\/td><td>2021<\/td><td>2021.1.1<\/td><td><strong>7.1<\/strong><\/td><td><\/td><\/tr><tr><td><strong>Arctic Fox<\/strong><\/td><td>2020<\/td><td>2020.3.1<\/td><td><strong>7.0<\/strong><\/td><td>\u7248\u672c\u53f7\u91cd\u7f6e\uff0c\u8bed\u4e49\u5316\u7248\u672c\u5f00\u59cb<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"42_%E6%A0%B8%E5%BF%83%E6%9E%B6%E6%9E%84%E5%8F%98%E9%9D%A9%EF%BC%9A%E4%BB%8E_Transform_API_%E5%88%B0_Artifacts_API\"><\/span>4.2 \u6838\u5fc3\u67b6\u6784\u53d8\u9769\uff1a\u4ece Transform API \u5230 Artifacts API<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u5728 AGP 8.0 \u7684\u5347\u7ea7\u4e2d\uff0c\u53d1\u751f\u4e86\u4e00\u573a\u65e0\u58f0\u7684\u5730\u9707\uff1a\u4f7f\u7528\u4e86\u591a\u5e74\u7684 <strong>Transform API<\/strong> \u88ab\u5f7b\u5e95\u79fb\u9664 <sup>2<\/sup>\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u80cc\u666f<\/strong>\uff1aTransform API \u66fe\u662f\u5b57\u8282\u7801\u63d2\u6869\uff08Bytecode Instrumentation\uff09\u7684\u6807\u51c6\u65b9\u5f0f\uff0c\u88ab\u5e7f\u6cdb\u7528\u4e8e\u57cb\u70b9 SDK\u3001\u6027\u80fd\u76d1\u63a7\u5de5\u5177\uff08\u5982 Firebase Performance\uff09\u548c\u8def\u7531\u6846\u67b6\u3002\u7136\u800c\uff0c\u5b83\u5b58\u5728\u4e25\u91cd\u7684\u6027\u80fd\u74f6\u9888\uff0c\u65e0\u6cd5\u652f\u6301\u589e\u91cf\u6784\u5efa\u548c\u6784\u5efa\u7f13\u5b58\u3002<\/li>\n\n\n\n<li><strong>\u5f71\u54cd<\/strong>\uff1aAGP 8.0 \u5f15\u5165\u4e86 <strong>Instrumentation API<\/strong> \u4f5c\u4e3a\u66ff\u4ee3\uff0c\u5b83\u57fa\u4e8e ASM \u5e93\uff0c\u5141\u8bb8\u5bf9\u7c7b\u6587\u4ef6\u8fdb\u884c\u66f4\u7ec6\u7c92\u5ea6\u7684\u5e76\u884c\u5904\u7406\u3002\u8fd9\u4e00\u53d8\u66f4\u5bfc\u81f4\u5927\u91cf\u8001\u65e7\u7684\u7b2c\u4e09\u65b9 Gradle \u63d2\u4ef6\u5931\u6548\u3002\u5982\u679c\u9879\u76ee\u4e2d\u5b58\u5728\u672a\u7ef4\u62a4\u7684\u63d2\u4ef6\uff0c\u5347\u7ea7 AGP 8.0 \u5c06\u662f\u4e00\u4e2a\u6781\u5176\u75db\u82e6\u7684\u8fc7\u7a0b\u3002<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"43_%E4%BB%A3%E7%A0%81%E7%BC%A9%E5%87%8F%E5%99%A8_R8_%E7%9A%84%E7%89%88%E6%9C%AC%E7%BB%91%E5%AE%9A\"><\/span>4.3 \u4ee3\u7801\u7f29\u51cf\u5668 R8 \u7684\u7248\u672c\u7ed1\u5b9a<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">R8 \u662f Android \u7684\u4ee3\u7801\u7f29\u51cf\uff08Shrinking\uff09\u548c\u6df7\u6dc6\uff08Obfuscation\uff09\u5de5\u5177\u3002\u8bb8\u591a\u5f00\u53d1\u8005\u4e0d\u77e5\u9053\u7684\u662f\uff0cR8 \u7684\u7248\u672c\u662f\u76f4\u63a5\u6346\u7ed1\u5728 AGP \u4e2d\u7684\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Kotlin Metadata \u95ee\u9898<\/strong>\uff1aR8 \u9700\u8981\u80fd\u591f\u89e3\u6790 Kotlin \u7f16\u8bd1\u5668\u751f\u6210\u7684 <code>@Metadata<\/code> \u6ce8\u89e3\u3002\u5982\u679c\u4f7f\u7528\u7684 Kotlin \u7248\u672c\u592a\u65b0\uff0c\u800c AGP\uff08\u5373 R8\uff09\u7248\u672c\u592a\u65e7\uff0cR8 \u53ef\u80fd\u65e0\u6cd5\u6b63\u786e\u8bc6\u522b\u65b0\u7684 Kotlin \u8bed\u6cd5\u7ed3\u6784\uff08\u5982\u5185\u8054\u7c7b\u3001\u534f\u7a0b\u72b6\u6001\u673a\uff09\uff0c\u5bfc\u81f4\u6df7\u6dc6\u540e\u7684\u4ee3\u7801\u8fd0\u884c\u65f6\u5d29\u6e83 <sup>17<\/sup>\u3002\n<ul class=\"wp-block-list\">\n<li><em>\u793a\u4f8b<\/em>\uff1aKotlin 1.8 \u7f16\u8bd1\u7684\u4ee3\u7801\u9700\u8981 AGP 7.4 (R8 4.0.48) \u6216\u66f4\u9ad8\u7248\u672c\u624d\u80fd\u6b63\u786e\u6df7\u6dc6\u3002<\/li>\n\n\n\n<li><em>\u5bf9\u7b56<\/em>\uff1a\u5728\u5347\u7ea7 Kotlin \u7248\u672c\u65f6\uff0c\u52a1\u5fc5\u68c0\u67e5 AGP \u7248\u672c\u662f\u5426\u6ee1\u8db3\u6700\u4f4e\u8981\u6c42\u3002<\/li>\n<\/ul>\n<\/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\"><span class=\"ez-toc-section\" id=\"%E7%AC%AC%E4%BA%94%E7%AB%A0%EF%BC%9A%E8%AF%AD%E8%A8%80%E6%A0%B8%E5%BF%83%E2%80%94%E2%80%94Kotlin_%E5%8F%8A%E5%85%B6%E7%BC%96%E8%AF%91%E5%99%A8%E6%8F%92%E4%BB%B6_KGP_%E7%9A%84%E7%89%88%E6%9C%AC%E5%93%B2%E5%AD%A6\"><\/span>\u7b2c\u4e94\u7ae0\uff1a\u8bed\u8a00\u6838\u5fc3\u2014\u2014Kotlin \u53ca\u5176\u7f16\u8bd1\u5668\u63d2\u4ef6 (KGP) \u7684\u7248\u672c\u54f2\u5b66<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Kotlin \u5728 Android \u5f00\u53d1\u4e2d\u5177\u6709\u7279\u6b8a\u7684\u53cc\u91cd\u8eab\u4efd\uff1a\u5b83\u65e2\u662f\u4e1a\u52a1\u4ee3\u7801\u7684\u7f16\u5199\u8bed\u8a00\uff0c\u4e5f\u662f\u6784\u5efa\u811a\u672c\uff08Kotlin DSL\uff09\u7684\u7f16\u5199\u8bed\u8a00\u3002\u8fd9\u4f7f\u5f97 Kotlin \u7684\u7248\u672c\u517c\u5bb9\u6027\u95ee\u9898\u5448\u73b0\u51fa\u4e09\u7ef4\u7684\u590d\u6742\u6027\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"51_Kotlin_Gradle_Plugin_KGP_%E7%9A%84%E6%A1%A5%E6%A2%81%E4%BD%9C%E7%94%A8\"><\/span>5.1 Kotlin Gradle Plugin (KGP) \u7684\u6865\u6881\u4f5c\u7528<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">KGP \u662f Kotlin \u7f16\u8bd1\u5668\u4e0e Gradle \u6784\u5efa\u7cfb\u7edf\u4ea4\u4e92\u7684\u63a5\u53e3\u3002\u5b83\u8d1f\u8d23\u914d\u7f6e\u7f16\u8bd1\u4efb\u52a1\u3001\u5904\u7406\u589e\u91cf\u7f16\u8bd1\u903b\u8f91\u4ee5\u53ca\u89e3\u6790\u591a\u5e73\u53f0\uff08KMP\uff09\u7684\u6e90\u96c6\u7ed3\u6784\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"511_KGP_%E4%B8%8E_Gradle_%E7%9A%84%E5%85%BC%E5%AE%B9%E6%80%A7%E9%99%90%E5%88%B6\"><\/span>5.1.1 KGP \u4e0e Gradle \u7684\u517c\u5bb9\u6027\u9650\u5236<span class=\"ez-toc-section-end\"><\/span><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">KGP \u6df1\u5ea6\u4f9d\u8d56 Gradle \u7684\u5185\u90e8 API\u3002\u5f53 Gradle \u5347\u7ea7\u5e76\u79fb\u9664\u65e7 API \u65f6\uff0c\u65e7\u7248 KGP \u5c31\u4f1a\u5931\u6548\u3002\u53cd\u4e4b\uff0c\u65b0\u7248 KGP \u4e5f\u4f1a\u5229\u7528\u65b0\u7248 Gradle \u7684\u7279\u6027\u3002<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><td><strong>KGP \u7248\u672c<\/strong><\/td><td><strong>\u517c\u5bb9\u7684 Gradle \u8303\u56f4<\/strong><\/td><td><strong>\u517c\u5bb9\u7684 AGP \u8303\u56f4<\/strong><\/td><td><strong>\u5173\u952e\u8bf4\u660e<\/strong><\/td><\/tr><\/thead><tbody><tr><td><strong>2.2.x<\/strong><\/td><td>7.6.3 &#8211; 8.14<\/td><td>7.3.1 &#8211; 8.11.1<\/td><td>\u5b8c\u5584\u7684 K2 \u652f\u6301 <sup>18<\/sup><\/td><\/tr><tr><td><strong>2.1.x<\/strong><\/td><td>7.6.3 &#8211; 8.12.1<\/td><td>7.3.1 &#8211; 8.7.2<\/td><td><\/td><\/tr><tr><td><strong>2.0.x<\/strong><\/td><td>6.8.3 &#8211; 8.6+<\/td><td>7.1.3 &#8211; 8.5<\/td><td><strong>K2 \u7f16\u8bd1\u5668\u6b63\u5f0f\u7a33\u5b9a<\/strong> <sup>19<\/sup><\/td><\/tr><tr><td><strong>1.9.2x<\/strong><\/td><td>6.8.3 &#8211; 8.1.1<\/td><td>4.2.2 &#8211; 8.1<\/td><td>KMP \u67b6\u6784\u7a33\u5b9a\u5316<\/td><\/tr><tr><td><strong>1.8.x<\/strong><\/td><td>6.8.3 &#8211; 7.6.0<\/td><td>4.1.3 &#8211; 7.4<\/td><td><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u8b66\u793a<\/strong>\uff1a\u5982\u679c\u4f60\u7684 Gradle \u5347\u7ea7\u5230\u4e86 8.10\uff0c\u4f46 KGP \u4ecd\u505c\u7559\u5728 1.8.x\uff0c\u6784\u5efa\u5c06\u76f4\u63a5\u5931\u8d25\uff0c\u62a5\u9519\u901a\u5e38\u6d89\u53ca <code>ClassNotFoundException<\/code> \u6216 <code>MethodNotFoundException<\/code>\uff0c\u56e0\u4e3a KGP 1.8 \u8bd5\u56fe\u8c03\u7528 Gradle 8.x \u4e2d\u5df2\u79fb\u9664\u7684\u65b9\u6cd5 <sup>18<\/sup>\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"52_%E7%BC%96%E8%AF%91%E5%99%A8%E7%89%88%E6%9C%AC_Compiler%E3%80%81%E8%AF%AD%E8%A8%80%E7%89%88%E6%9C%AC_Language_%E4%B8%8E_API_%E7%89%88%E6%9C%AC\"><\/span>5.2 \u7f16\u8bd1\u5668\u7248\u672c (Compiler)\u3001\u8bed\u8a00\u7248\u672c (Language) \u4e0e API \u7248\u672c<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Kotlin \u5141\u8bb8\u201c\u7248\u672c\u5206\u79bb\u201d\uff0c\u5373\u4f7f\u7528\u65b0\u7248\u7f16\u8bd1\u5668\u7f16\u8bd1\u65e7\u7248\u8bed\u6cd5\u7684\u4ee3\u7801\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>kotlin-stdlib \u7248\u672c<\/strong>\uff1a\u8fd0\u884c\u65f6\u7684\u6807\u51c6\u5e93\u7248\u672c\u3002<\/li>\n\n\n\n<li><strong>Kotlin Plugin \u7248\u672c<\/strong>\uff1a\u7f16\u8bd1\u65f6\u7684\u7f16\u8bd1\u5668\u7248\u672c\u3002<\/li>\n\n\n\n<li><strong>\u9ec4\u91d1\u6cd5\u5219<\/strong>\uff1a\u8fd0\u884c\u65f6\u7684 <code>kotlin-stdlib<\/code> \u7248\u672c<strong>\u7edd\u4e0d\u80fd\u4f4e\u4e8e<\/strong>\u7f16\u8bd1\u65f6\u4f7f\u7528\u7684\u7248\u672c\u3002\u5426\u5219\uff0c\u4ee3\u7801\u53ef\u80fd\u4f1a\u8c03\u7528\u6807\u51c6\u5e93\u4e2d\u5c1a\u672a\u5b58\u5728\u7684\u65b9\u6cd5\uff0c\u5bfc\u81f4 <code>NoSuchMethodError<\/code>\u3002<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"53_%E8%AF%AF%E5%8C%BA%E8%A7%A3%E6%9E%90%EF%BC%9AJVM_Target_vs_Toolchain_Version\"><\/span>5.3 \u8bef\u533a\u89e3\u6790\uff1aJVM Target vs. Toolchain Version<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd9\u662f Android \u5f00\u53d1\u4e2d\u8bef\u89e3\u6700\u6df1\u7684\u6982\u5ff5\u4e4b\u4e00 <sup>18<\/sup>\u3002<\/p>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li><strong>Gradle JDK (Daemon JDK)<\/strong>\uff1a\u8fd0\u884c Gradle \u7684 JDK\u3002\u5fc5\u987b >= 17 (\u5bf9\u4e8e AGP 8.0+)\u3002<\/li>\n\n\n\n<li><strong>Toolchain JDK<\/strong>\uff1a\u7f16\u8bd1\u6e90\u7801\u4f7f\u7528\u7684 JDK\u3002\u4f8b\u5982\u8bbe\u4e3a JDK 17\u3002<\/li>\n\n\n\n<li><strong>Source\/Target Compatibility<\/strong>\uff1aJava \u7f16\u8bd1\u5668\u7684 <code>-source<\/code> \u548c <code>-target<\/code> \u53c2\u6570\u3002\u51b3\u5b9a\u4e86 Java \u6e90\u7801\u80fd\u7528\u4ec0\u4e48\u8bed\u6cd5\u3002<\/li>\n\n\n\n<li><strong>Kotlin JVM Target<\/strong>\uff1aKotlin \u7f16\u8bd1\u5668\u751f\u6210\u7684\u5b57\u8282\u7801\u7248\u672c\u3002<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">\u5173\u952e\u51b2\u7a81\u70b9\uff1a<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5982\u679c\u4f60\u7684 Kotlin jvmTarget \u8bbe\u4e3a 17\uff0c\u90a3\u4e48\u5b83\u751f\u6210\u7684\u5b57\u8282\u7801\u7248\u672c\u662f 61.0\u3002\u8fd9\u8981\u6c42\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Android \u9879\u76ee\u7684 <code>minSdk<\/code> \u5fc5\u987b\u8db3\u591f\u9ad8\uff0c\u6216\u8005\u5f00\u542f\u4e86 <strong>Core Library Desugaring<\/strong>\uff08\u6838\u5fc3\u5e93\u8131\u7cd6\uff09\u3002<\/li>\n\n\n\n<li>\u4efb\u4f55\u5f15\u7528\u8be5\u6a21\u5757\u7684\u6d88\u8d39\u8005\uff08App \u6216\u5176\u4ed6\u6a21\u5757\uff09\uff0c\u5176\u7f16\u8bd1\u73af\u5883\u4e5f\u5fc5\u987b\u652f\u6301\u5904\u7406\u7248\u672c 61.0 \u7684\u7c7b\u6587\u4ef6\u3002<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Kotlin<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">android {\n    compileOptions {\n        \/\/ \u8fd9\u4ec5\u4ec5\u5f71\u54cd Java \u6e90\u7801\uff0c\u4e0d\u76f4\u63a5\u5f71\u54cd Kotlin\n        sourceCompatibility = JavaVersion.VERSION_17\n        targetCompatibility = JavaVersion.VERSION_17\n    }\n}\n\nkotlin {\n    compilerOptions {\n        \/\/ \u8fd9\u624d\u662f\u51b3\u5b9a Kotlin \u5b57\u8282\u7801\u7248\u672c\u7684\u5173\u952e\n        jvmTarget.set(JvmTarget.JVM_17)\n    }\n}\n<\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E7%AC%AC%E5%85%AD%E7%AB%A0%EF%BC%9A%E7%89%88%E6%9C%AC%E7%9F%A9%E9%98%B5%E7%9A%84%E8%9D%B4%E8%9D%B6%E6%95%88%E5%BA%94%E2%80%94%E2%80%94%E4%BE%9D%E8%B5%96%E5%86%B2%E7%AA%81%E4%B8%8E%E5%AE%9E%E6%88%98%E8%A7%A3%E5%86%B3%E7%AD%96%E7%95%A5\"><\/span>\u7b2c\u516d\u7ae0\uff1a\u7248\u672c\u77e9\u9635\u7684\u8774\u8776\u6548\u5e94\u2014\u2014\u4f9d\u8d56\u51b2\u7a81\u4e0e\u5b9e\u6218\u89e3\u51b3\u7b56\u7565<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u5728\u5b9e\u9645\u7684\u5de5\u7a0b\u6f14\u8fdb\u4e2d\uff0c\u4fee\u6539\u4efb\u4f55\u4e00\u4e2a\u7248\u672c\u53f7\u90fd\u53ef\u80fd\u5f15\u53d1\u8fde\u9501\u53cd\u5e94\uff0c\u5373\u6240\u8c13\u7684\u201c\u6784\u5efa\u5d29\u6e83\u591a\u7c73\u8bfa\u9aa8\u724c\u201d\u3002\u672c\u7ae0\u901a\u8fc7\u5178\u578b\u7684\u5347\u7ea7\u573a\u666f\uff0c\u5206\u6790\u7248\u672c\u51b2\u7a81\u7684\u673a\u7406\u4e0e\u89e3\u51b3\u4e4b\u9053\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"61_%E5%9C%BA%E6%99%AF%E6%8E%A8%E6%BC%94%EF%BC%9A%E4%BB%8E_Chipmunk_AGP_72_%E5%8D%87%E7%BA%A7%E5%88%B0_Meerkat_AGP_89\"><\/span>6.1 \u573a\u666f\u63a8\u6f14\uff1a\u4ece Chipmunk (AGP 7.2) \u5347\u7ea7\u5230 Meerkat (AGP 8.9)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u5047\u8bbe\u4e00\u4e2a\u9057\u7559\u9879\u76ee\u914d\u7f6e\u5982\u4e0b\uff1aStudio Chipmunk, AGP 7.2, Gradle 7.3.3, Kotlin 1.6.21, JDK 11\u3002\u76ee\u6807\u662f\u5347\u7ea7\u5230\u6700\u65b0\u6280\u672f\u6808\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u6b65\u9aa4 1\uff1a\u4fee\u6539 AGP \u7248\u672c\u81f3 8.9.0<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><em>\u8fde\u9501\u53cd\u5e94 A<\/em>\uff1aSync \u5931\u8d25\u3002AGP 8.9 \u63d0\u793a\u9700\u8981 Gradle 8.9+\u3002<\/li>\n\n\n\n<li><em>\u89e3\u51b3<\/em>\uff1a\u4fee\u6539 <code>gradle-wrapper.properties<\/code> \u4e3a <code>gradle-8.9-bin.zip<\/code>\u3002<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u6b65\u9aa4 2\uff1a\u518d\u6b21 Sync<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><em>\u8fde\u9501\u53cd\u5e94 B<\/em>\uff1a\u6784\u5efa\u7acb\u5373\u5931\u8d25\uff0c\u63d0\u793a &#8220;Android Gradle plugin requires Java 17 to run&#8221;\u3002<\/li>\n\n\n\n<li><em>\u539f\u56e0<\/em>\uff1aGradle 8.9 \u53ef\u4ee5\u5728 JDK 11 \u4e0a\u542f\u52a8\uff0c\u4f46 AGP 8.x \u7684\u4ee3\u7801\u5305\u542b JDK 17 \u7684\u5b57\u8282\u7801\u3002<\/li>\n\n\n\n<li><em>\u89e3\u51b3<\/em>\uff1a\u5728 IDE \u8bbe\u7f6e\u4e2d\u5c06 Gradle JDK \u6539\u4e3a JDK 17\uff0c\u5e76\u5728 CI \u811a\u672c\u4e2d\u5c06 <code>JAVA_HOME<\/code> \u6307\u5411 JDK 17\u3002<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u6b65\u9aa4 3\uff1a\u518d\u6b21 Sync<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><em>\u8fde\u9501\u53cd\u5e94 C<\/em>\uff1a\u62a5\u9519 &#8220;Could not find method&#8230; in KGP&#8221;\u3002<\/li>\n\n\n\n<li><em>\u539f\u56e0<\/em>\uff1aKotlin 1.6.21 \u4e0e Gradle 8.9 \u4e0d\u517c\u5bb9\uff08API \u5dee\u5f02\uff09\u3002<\/li>\n\n\n\n<li><em>\u89e3\u51b3<\/em>\uff1a\u67e5\u8be2\u517c\u5bb9\u6027\u8868\uff0c\u5c06 KGP \u5347\u7ea7\u81f3 1.9.2x \u6216 2.0.x\u3002<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u6b65\u9aa4 4\uff1a\u7f16\u8bd1\u4ee3\u7801<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><em>\u8fde\u9501\u53cd\u5e94 D<\/em>\uff1aR8 \u62a5\u9519\u6216 <code>namespace<\/code> \u7f3a\u5931\u9519\u8bef\u3002<\/li>\n\n\n\n<li><em>\u539f\u56e0<\/em>\uff1aAGP 8.0 \u79fb\u9664\u4e86\u4ece Manifest \u8bfb\u53d6 package \u5c5e\u6027\u4f5c\u4e3a namespace \u7684\u529f\u80fd\u3002<\/li>\n\n\n\n<li><em>\u89e3\u51b3<\/em>\uff1a\u4f7f\u7528 <strong>AGP Upgrade Assistant<\/strong> \u81ea\u52a8\u8fc1\u79fb\uff0c\u6216\u8005\u624b\u52a8\u5728 <code>build.gradle<\/code> \u4e2d\u6dfb\u52a0 <code>namespace 'com.example.app'<\/code>\u3002<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"62_%E7%BB%88%E6%9E%81%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88%EF%BC%9AVersion_Catalogs_%E4%B8%8E_BOM\"><\/span>6.2 \u7ec8\u6781\u89e3\u51b3\u65b9\u6848\uff1aVersion Catalogs \u4e0e BOM<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e3a\u4e86\u907f\u514d\u7248\u672c\u53f7\u6563\u843d\u5728\u5404\u4e2a <code>build.gradle<\/code> \u6587\u4ef6\u4e2d\u96be\u4ee5\u7ba1\u7406\uff0cGradle 7.4+ \u5f15\u5165\u5e76\u63a8\u8350\u4f7f\u7528 TOML \u683c\u5f0f\u7684 <strong>Version Catalog<\/strong> (<code>libs.versions.toml<\/code>)\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ini, TOML<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">[versions]\nagp = \"8.10.0\"\nkotlin = \"2.0.20\"\ngradle = \"8.10\"\ncoroutines = \"1.8.0\"\n\n[libraries]\nandroidx-core = { module = \"androidx.core:core-ktx\", version = \"1.12.0\" }\n\n[plugins]\nandroid-application = { id = \"com.android.application\", version.ref = \"agp\" }\nkotlin-android = { id = \"org.jetbrains.kotlin.android\", version.ref = \"kotlin\" }\n<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd9\u79cd\u96c6\u4e2d\u5f0f\u7ba1\u7406\u4f7f\u5f97\u7248\u672c\u5347\u7ea7\u53d8\u5f97\u53ef\u89c6\u5316\u4e14\u539f\u5b50\u5316\u3002\u7ed3\u5408 <strong>BOM (Bill of Materials)<\/strong>\uff08\u5982 Jetpack Compose BOM\uff09\uff0c\u53ef\u4ee5\u8fdb\u4e00\u6b65\u786e\u4fdd\u4e00\u7ec4\u5e93\u7684\u7248\u672c\u517c\u5bb9\u6027\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"63_%E8%AF%8A%E6%96%AD%E5%B7%A5%E5%85%B7%EF%BC%9ABuild_Scan_%E4%B8%8E_Upgrade_Assistant\"><\/span>6.3 \u8bca\u65ad\u5de5\u5177\uff1aBuild Scan \u4e0e Upgrade Assistant<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Build Scan<\/strong>\uff1a\u901a\u8fc7\u8fd0\u884c <code>.\/gradlew build --scan<\/code>\uff0c\u5f00\u53d1\u8005\u53ef\u4ee5\u83b7\u5f97\u4e00\u4efd\u8be6\u5c3d\u7684\u7f51\u9875\u62a5\u544a\uff0c\u5176\u4e2d\u5305\u542b\u4e86\u8be6\u7ec6\u7684\u4f9d\u8d56\u6811\u3001\u63d2\u4ef6\u7248\u672c\u548c\u6027\u80fd\u5206\u6790\u3002\u8fd9\u662f\u6392\u67e5\u7248\u672c\u51b2\u7a81\uff08\u5982 <code>NoSuchMethodError<\/code>\uff09\u7684\u6700\u5f3a\u5de5\u5177 <sup>23<\/sup>\u3002<\/li>\n\n\n\n<li><strong>AGP Upgrade Assistant<\/strong>\uff1aAndroid Studio \u5185\u7f6e\u7684\u5347\u7ea7\u52a9\u624b\u4e0d\u4ec5\u4ec5\u662f\u4fee\u6539\u7248\u672c\u53f7\uff0c\u5b83\u8fd8\u80fd\u81ea\u52a8\u6267\u884c\u5b57\u8282\u7801\u5c42\u9762\u7684\u8fc1\u79fb\uff08\u5982 R \u7c7b\u975e\u4f20\u9012\u6027\u6539\u9020\u3001Manifest \u6e05\u7406\uff09\u3002<strong>\u5f3a\u70c8\u5efa\u8bae<\/strong>\u603b\u662f\u4f18\u5148\u4f7f\u7528\u52a9\u624b\u8fdb\u884c\u5347\u7ea7\uff0c\u800c\u4e0d\u662f\u624b\u52a8\u4fee\u6539\u6587\u4ef6 <sup>24<\/sup>\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\"><span class=\"ez-toc-section\" id=\"%E7%AC%AC%E4%B8%83%E7%AB%A0%EF%BC%9A%E7%BB%93%E8%AE%BA%E4%B8%8E%E5%B1%95%E6%9C%9B\"><\/span>\u7b2c\u4e03\u7ae0\uff1a\u7ed3\u8bba\u4e0e\u5c55\u671b<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Android \u6784\u5efa\u751f\u6001\u7684\u6f14\u8fdb\u53f2\uff0c\u5c31\u662f\u4e00\u90e8\u4ece\u65e0\u5e8f\u8d70\u5411\u6709\u5e8f\u3001\u4ece\u677e\u6563\u8026\u5408\u8d70\u5411\u7cbe\u5bc6\u534f\u540c\u7684\u5386\u53f2\u3002<\/p>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li><strong>JVM<\/strong> \u5df2\u7ecf\u4ece\u5355\u7eaf\u7684\u8fd0\u884c\u73af\u5883\u53d8\u6210\u4e86\u6784\u5efa\u6548\u80fd\u7684\u5173\u952e\u53d8\u91cf\uff0c<strong>JDK 17<\/strong> \u5df2\u6210\u4e3a\u5f53\u4e0b\u7684\u7edd\u5bf9\u6807\u51c6\uff0c\u800c JDK 21 \u6b63\u84c4\u52bf\u5f85\u53d1\u3002<\/li>\n\n\n\n<li><strong>Gradle<\/strong> \u548c <strong>AGP<\/strong> \u7ed3\u6210\u4e86\u547d\u8fd0\u5171\u540c\u4f53\uff0c\u901a\u8fc7\u4e25\u683c\u7684\u7248\u672c\u9501\u6b65\u673a\u5236\uff0c\u6d88\u9664\u4e86\u4e2d\u95f4\u72b6\u6001\u7684\u6a21\u7cca\u6027\uff0c\u4ee3\u4ef7\u662f\u964d\u4f4e\u4e86\u5411\u540e\u517c\u5bb9\u7684\u7075\u6d3b\u6027\u3002<\/li>\n\n\n\n<li><strong>Kotlin<\/strong> \u5219\u4f5c\u4e3a\u8d2f\u7a7f\u5168\u6808\uff08\u6e90\u7801+\u811a\u672c\uff09\u7684\u8840\u6db2\uff0c\u5176\u7f16\u8bd1\u5668\u7248\u672c\uff08K1 vs K2\uff09\u7684\u66f4\u8fed\u5c06\u662f\u672a\u6765\u4e24\u5e74\u7684\u6838\u5fc3\u8bae\u9898\u3002<\/li>\n\n\n\n<li><strong>Android Studio<\/strong> \u4ece\u7b80\u5355\u7684\u7f16\u8f91\u5668\u8fdb\u5316\u4e3a\u6df1\u5ea6\u96c6\u6210\u7684\u7f16\u6392\u8005\uff0c\u901a\u8fc7\u5185\u7f6e JBR \u548c\u5347\u7ea7\u52a9\u624b\uff0c\u8bd5\u56fe\u63a9\u76d6\u5e95\u5c42\u7684\u590d\u6742\u6027\u3002<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">\u5bf9\u4e8e\u5f00\u53d1\u8005\u800c\u8a00\uff0c\u638c\u63e1\u8fd9\u4e9b\u7248\u672c\u80cc\u540e\u7684\u4f9d\u8d56\u903b\u8f91\uff0c\u4e0d\u518d\u662f\u4e00\u9879\u9009\u4fee\u8bfe\uff0c\u800c\u662f\u786e\u4fdd\u5de5\u7a0b\u7a33\u5b9a\u6027\u548c\u53ef\u7ef4\u62a4\u6027\u7684\u5fc5\u4fee\u8bfe\u3002\u9762\u5bf9\u672a\u6765\uff0c\u968f\u7740 <strong>Amper<\/strong> \u7b49\u58f0\u660e\u5f0f\u6784\u5efa\u5de5\u5177\u7684\u63a2\u7d22\u548c <strong>Kotlin Multiplatform<\/strong> \u7684\u666e\u53ca\uff0c\u6784\u5efa\u7cfb\u7edf\u5c06\u53d8\u5f97\u66f4\u52a0\u62bd\u8c61\uff0c\u4f46\u5bf9\u5e95\u5c42\u539f\u7406\u7684\u7406\u89e3\u4f9d\u7136\u662f\u89e3\u51b3\u590d\u6742\u95ee\u9898\u7684\u552f\u4e00\u94a5\u5319\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\">\u6570\u636e\u6765\u6e90\u5f15\u7528\u7d22\u5f15\uff1a<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">8 AGP\u672a\u6765\u7248\u672c\u89c4\u5212\u4e0eGradle\u6620\u5c04; 19 Kotlin\u4e0eGradle\u517c\u5bb9\u6027\u8be6\u8868; 4 Gradle JDK\u8fd0\u884c\u65f6\u8981\u6c42; 7 Android Studio\u5386\u53f2\u7248\u672c\u4ee3\u53f7; 9 IDE\u4e0e\u7ec8\u7aefJDK\u4e0d\u4e00\u81f4\u95ee\u9898; 17 Kotlin\u4e0eR8\/D8\u7248\u672c\u4f9d\u8d56; 14 Gradle Wrapper\u673a\u5236; 7 Studio\u4ee3\u53f7\u5386\u53f2; 16 Kotlin DSL\u4e0eVersion Catalog\u6700\u4f73\u5b9e\u8df5; 24 AGP Upgrade Assistant\u5de5\u4f5c\u6d41; 1 AGP 7.0 JDK11\u5f3a\u5236\u8981\u6c42; 8 AGP\u4e0eGradle\u7248\u672c\u5bf9\u9f50\u7b56\u7565; 5 Gradle Java\u517c\u5bb9\u6027\u77e9\u9635; 21 JVM Target\u8bef\u533a\u89e3\u6790; 23 Gradle 8.0\u91cd\u5927\u53d8\u9769; 2 AGP 8.0 JDK17\u5f3a\u5236\u8981\u6c42\u4e0eAPI\u79fb\u9664; 11 Toolchains\u673a\u5236\u8be6\u89e3; 5 Gradle JVM\u517c\u5bb9\u6027\u5168\u8868; 18 KGP\u8be6\u7ec6\u517c\u5bb9\u6027\u77e9\u9635.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u7b2c\u4e00\u7ae0\uff1a\u5f15\u8a00\u2014\u2014\u6784\u5efa\u7cfb\u7edf\u7684\u71b5\u589e\u4e0e\u79e9\u5e8f\u91cd\u6784 \u5728\u79fb\u52a8\u5e94\u7528\u5f00\u53d1\u7684\u6d69\u701a\u5b87\u5b99\u4e2d\uff0cAndroid \u751f\u6001\u7cfb\u7edf\u4ee5\u5176\u5f00\u653e\u6027\u548c\u788e\u7247\u5316\u8457\u79f0\u3002\u8fd9\u79cd\u7279\u6027\u867d\u7136\u4fc3\u8fdb\u4e86\u8bbe\u5907\u7684\u5e7f\u6cdb\u666e\u53ca\uff0c\u4f46\u4e5f\u7ed9\u5f00\u53d1\u8005\u7684\u6784\u5efa\u73af\u5883\u5e26\u6765\u4e86\u5de8\u5927\u7684\u71b5\u589e\u6311\u6218\u3002Android \u5e94\u7528\u7a0b\u5e8f\u7684\u6784\u5efa\u8fc7\u7a0b\u5e76\u975e\u7b80\u5355\u7684\u6e90\u4ee3\u7801\u7f16\u8bd1\uff0c\u800c\u662f\u4e00\u573a\u6d89\u53ca\u591a\u7ef4\u65f6\u7a7a\u7684\u7cbe\u5bc6\u7f16\u6392\uff1a\u5b83\u9700\u8981\u5728\u7279\u5b9a\u7684 Java \u865a\u62df\u673a\uff08JVM\uff09\u4e0a\u8fd0\u884c\u6784\u5efa\u5de5\u5177\uff08Gradle\uff09\uff0c\u901a\u8fc7\u7279\u5b9a\u7684\u63d2\u4ef6\uff08Android Gradle Plugin, AGP\uff09\u8c03\u7528\u7279\u5b9a\u7684\u7f16\u8bd1\u5668\uff08Kotlin\/Java\uff09\uff0c\u6700\u7ec8\u751f\u6210\u53ef\u5728\u4e0d\u540c API \u7b49\u7ea7\u7684 Android \u8bbe\u5907\u4e0a\u8fd0\u884c\u7684\u5b57\u8282\u7801\uff08DEX\uff09\u3002 Android Studio \u4f5c\u4e3a\u8fd9\u4e00\u590d\u6742\u8fc7\u7a0b\u7684\u6307\u6325\u4e2d\u5fc3\uff0c\u5176\u7248\u672c\u6f14\u8fdb\u5e76\u975e\u5b64\u7acb\u53d1\u751f\uff0c\u800c\u662f\u4e0e\u5e95\u5c42\u5de5\u5177\u94fe\u2014\u2014Gradle\u3001Kotlin \u548c JVM\u2014\u2014\u5f62\u6210\u4e86\u4e25\u5bc6\u7684\u201c\u9501\u6b65\uff08Lock-step\uff09\u201d\u4f9d\u8d56\u5173\u7cfb\u3002\u4ece\u65e9\u671f\u7684\u677e\u6563\u8026\u5408\u5230\u5982\u4eca\u4e25\u683c\u7684\u7248\u672c\u5bf9\u9f50\uff0c\u8fd9\u4e00\u6f14\u53d8\u53cd\u6620\u4e86 Google \u548c JetBrains \u8bd5\u56fe\u901a\u8fc7\u6807\u51c6\u5316\u6765\u5bf9\u6297\u73af\u5883\u788e\u7247\u5316\u7684\u5de5\u7a0b\u54f2\u5b66\u3002\u672c\u62a5\u544a\u5c06\u6df1\u5165\u5256\u6790\u8fd9\u56db\u5927\u6838\u5fc3\u7ec4\u4ef6\u4e4b\u95f4\u7684\u6df1\u5c42\u6280\u672f\u5173\u8054\uff0c\u63ed\u793a\u7248\u672c\u53f7\u80cc\u540e\u7684\u67b6\u6784\u903b\u8f91\uff0c\u5e76\u4e3a\u5927\u578b\u5de5\u7a0b\u56e2\u961f\u63d0\u4f9b\u5e94\u5bf9\u201c\u4f9d\u8d56\u5730\u72f1\u201d\u7684\u7cfb\u7edf\u6027\u7b56\u7565\u3002 \u7b2c\u4e8c\u7ae0\uff1a\u57fa\u77f3\u5c42\u2014\u2014Java \u865a\u62df\u673a\uff08JVM\uff09\u7684\u53cc\u91cd\u89d2\u8272\u4e0e\u7248\u672c\u5927\u8fc1\u5f99 \u5728 Android \u6784\u5efa\u4f53\u7cfb\u4e2d\uff0cJava \u865a\u62df\u673a\uff08JVM\uff09\u626e\u6f14\u7740\u7269\u7406\u5b66\u4e2d\u201c\u65f6\u7a7a\u57fa\u8d28\u201d\u822c\u7684\u89d2\u8272\u3002\u5b83\u65e2\u662f\u6784\u5efa\u5de5\u5177\u8fd0\u884c\u7684\u8f7d\u4f53\uff0c\u4e5f\u662f\u4ee3\u7801\u7f16\u8bd1\u7684\u76ee\u6807\u73af\u5883\u3002\u7406\u89e3 JVM \u5728\u6b64\u751f\u6001\u4e2d\u7684\u4f5c\u7528\uff0c\u5fc5\u987b\u9996\u5148\u4ece\u6982\u5ff5\u4e0a\u901a\u8fc7\u201c\u6784\u5efa\u8fd0\u884c\u65f6\u201d\u4e0e\u201c\u76ee\u6807\u8fd0\u884c\u65f6\u201d\u7684\u4e8c\u5143\u5bf9\u7acb\u6765\u89e3\u6790\u3002 2.1 \u6784\u5efa\u8fd0\u884c\u65f6\uff08Build Runtime\uff09\uff1aGradle Daemon \u7684\u5bbf\u4e3b\u73af\u5883 Gradle \u672c\u8eab\u662f\u4e00\u4e2a\u8fd0\u884c\u5728 JVM \u4e0a\u7684 Java \u5e94\u7528\u7a0b\u5e8f\u3002\u6267\u884c\u6784\u5efa\u4efb\u52a1\u7684\u6838\u5fc3\u8fdb\u7a0b\u2014\u2014Gradle Daemon\uff0c\u5fc5\u987b\u4f9d\u9644\u4e8e\u4e00\u4e2a\u5bbf\u4e3b JDK \u624d\u80fd\u5b58\u6d3b\u3002\u8fd9\u4e2a\u5bbf\u4e3b JDK \u7684\u7248\u672c\u76f4\u63a5\u51b3\u5b9a\u4e86 Gradle \u53ca\u5176\u63d2\u4ef6\uff08\u5305\u62ec AGP \u548c KGP\uff09\u80fd\u591f\u4f7f\u7528\u7684 Java \u8bed\u8a00\u7279\u6027\u548c API \u96c6\u5408\u3002 2.1.1 \u4ece JDK 8 \u5230 JDK 17 \u7684\u5f3a\u5236\u8fc1\u5f99\u53f2 \u56de\u987e\u8fc7\u53bb\u4e94\u5e74\uff0cAndroid \u6784\u5efa\u7cfb\u7edf\u7ecf\u5386\u4e86\u4e00\u573a\u4ece JDK 8 \u5411 JDK 17+ \u7684\u5f3a\u5236\u6027\u5927\u8fc1\u5f99\u3002\u8fd9\u4e0d\u4ec5\u4ec5\u662f\u6570\u5b57\u7684\u8df3\u52a8\uff0c\u800c\u662f\u6574\u4e2a Java \u751f\u6001\u7cfb\u7edf\u73b0\u4ee3\u5316\u7684\u7f29\u5f71\u3002 2.1.2 \u517c\u5bb9\u6027\u77e9\u9635\uff1aGradle \u7248\u672c\u4e0e\u5bbf\u4e3b JDK Gradle \u53d1\u884c\u7248\u5bf9\u5bbf\u4e3b JVM \u6709\u7740\u4e25\u683c\u7684\u4e0a\u4e0b\u9650\u8981\u6c42\u3002\u8fc7\u65e7\u7684 Gradle \u65e0\u6cd5\u8bc6\u522b\u65b0\u7248 JDK \u7684\u7c7b\u6587\u4ef6\u683c\u5f0f\uff08Class File Version\uff09\uff0c\u800c\u8fc7\u65b0\u7684 Gradle \u5219\u4f9d\u8d56\u65b0\u7248 JDK \u7684 API\u3002 Gradle \u7248\u672c\u533a\u95f4 \u6700\u4f4e\u652f\u6301 JVM \u6700\u9ad8\u652f\u6301 JVM \u5173\u952e\u6280\u672f\u8282\u70b9 8.5 &#8211; 9.x Java 8 Java 21 \u652f\u6301\u865a\u62df\u7ebf\u7a0b\uff08Loom\uff09\uff0c\u5b8c\u5168\u9002\u914d JDK 21 4 8.3 &#8211; 8.4 Java 8 Java 20 7.3 &#8211; 7.6 Java 8 Java 17-19 AGP 8.0+ \u7684\u6700\u4f4e\u8fd0\u884c\u95e8\u69db 5 7.0 &#8211; 7.2 Java 8 Java 16 AGP 7.0+ \u7684\u6700\u4f4e\u8fd0\u884c\u95e8\u69db 6.0 &#8211; 6.9 Java 8 Java 15 \u65e7\u65f6\u4ee3\u7684\u5206\u754c\u7ebf \u6570\u636e\u7efc\u5408\u5206\u6790\uff1a\u867d\u7136 Gradle \u672c\u8eab\u5927\u591a\u652f\u6301\u5411\u4e0b\u517c\u5bb9\u81f3 Java 8 \u8fd0\u884c\uff0c\u4f46 AGP \u63d2\u4ef6\u7684\u9650\u5236\uff08Requires Java 17\uff09\u8986\u76d6\u4e86 Gradle \u7684\u5bbd\u5bb9\u5ea6\u3002\u56e0\u6b64\uff0c\u73b0\u4ee3 Android \u5f00\u53d1\u7684\u5b9e\u9645\u5e95\u7ebf\u5df2\u88ab\u9501\u5b9a\u5728 JDK 17+\u3002 2.2 Android Studio \u5185\u7f6e\u8fd0\u884c\u65f6\uff1aJetBrains Runtime (JBR) \u4e3a\u4e86\u6d88\u9664\u201c\u5f00\u53d1\u8005\u672c\u5730\u73af\u5883\u914d\u7f6e\u4e0d\u4e00\u81f4\u201d\u8fd9\u4e00\u987d\u75be\uff0cAndroid Studio \u91c7\u53d6\u4e86\u201c\u81ea\u5e26\u5e72\u7cae\u201d\u7684\u7b56\u7565\u3002IDE \u5b89\u88c5\u5305\u4e2d\u6346\u7ed1\u4e86\u4e00\u4e2a\u5b9a\u5236\u7248\u7684 OpenJDK\uff0c\u79f0\u4e3a JetBrains Runtime (JBR)\u3002 \u6df1\u5ea6\u6d1e\u5bdf\uff1a\u73af\u5883\u6f02\u79fb\uff08Environment Drift\uff09\u662f\u5bfc\u81f4\u6784\u5efa\u5931\u8d25\u7684\u9690\u5f62\u6740\u624b\u3002\u5f00\u53d1\u8005\u5e38\u9047\u5230\u201cIDE \u5185\u70b9\u51fb Run \u6210\u529f\uff0c\u4f46\u7ec8\u7aef\u6267\u884c .\/gradlew \u5931\u8d25\u201d\u7684\u8be1\u5f02\u73b0\u8c61\u3002\u5176\u6839\u6e90\u901a\u5e38\u5728\u4e8e\uff1aIDE \u9ed8\u8ba4\u4f7f\u7528\u5185\u7f6e\u7684 JBR \u542f\u52a8 Gradle Daemon\uff0c\u800c\u7ec8\u7aef\u9ed8\u8ba4\u4f7f\u7528\u64cd\u4f5c\u7cfb\u7edf\u7684 JAVA_HOME \u73af\u5883\u53d8\u91cf\u3002\u5f53\u4e24\u8005\u7248\u672c\u4e0d\u4e00\u81f4\uff08\u4f8b\u5982 IDE \u7528 JDK 17\uff0c\u7ec8\u7aef\u7528 JDK 8\uff09\u65f6\uff0cGradle Daemon \u65e0\u6cd5\u590d\u7528\uff0c\u751a\u81f3\u56e0\u7248\u672c\u4e0d\u517c\u5bb9\u800c\u62a5\u9519 9\u3002 2.3 Java \u5de5\u5177\u94fe\uff08Toolchains\uff09\uff1a\u7f16\u8bd1\u4e0e\u8fd0\u884c\u7684\u89e3\u8026\u9769\u547d \u5728 Gradle 6.7 \u4e4b\u524d\uff0c\u6784\u5efa\u8fd0\u884c\u65f6\u7684 JDK \u548c\u4ee3\u7801\u7f16\u8bd1\u4f7f\u7528\u7684 JDK \u901a\u5e38\u6df7\u4e3a\u4e00\u8c08\u3002\u8fd9\u5bfc\u81f4\u4e86\u8bb8\u591a\u517c\u5bb9\u6027\u4e8b\u6545\uff0c\u4f8b\u5982\u5f00\u53d1\u8005\u4e0d\u5c0f\u5fc3\u4f7f\u7528\u4e86 JDK 11 \u7684 API\uff08\u5982 String&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7],"tags":[58,69,61],"class_list":["post-557","post","type-post","status-publish","format-standard","hentry","category-appdev","tag-android","tag-gradle","tag-kotlin"],"_links":{"self":[{"href":"https:\/\/trantor.ink\/index.php?rest_route=\/wp\/v2\/posts\/557","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/trantor.ink\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/trantor.ink\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/trantor.ink\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/trantor.ink\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=557"}],"version-history":[{"count":1,"href":"https:\/\/trantor.ink\/index.php?rest_route=\/wp\/v2\/posts\/557\/revisions"}],"predecessor-version":[{"id":558,"href":"https:\/\/trantor.ink\/index.php?rest_route=\/wp\/v2\/posts\/557\/revisions\/558"}],"wp:attachment":[{"href":"https:\/\/trantor.ink\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=557"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/trantor.ink\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=557"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/trantor.ink\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=557"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}