{"id":632,"date":"2025-02-14T01:34:14","date_gmt":"2025-02-14T01:34:14","guid":{"rendered":"https:\/\/boochlin.com\/?p=632"},"modified":"2025-11-12T12:19:16","modified_gmt":"2025-11-12T12:19:16","slug":"idorg-kotlin-xxxx-version-2-1-0-apply-false-%e9%80%99%e4%b8%8d%e8%a6%81%e4%bd%a0%e9%82%84%e7%89%b9%e5%9c%b0%e5%af%ab%e4%b8%8a%e5%8e%bb%e5%95%8a%ef%bc%9f","status":"publish","type":"post","link":"https:\/\/boochlin.com\/?p=632","title":{"rendered":"id(&#8220;org.kotlin.xxxx&#8221;) version &#8220;2.1.0&#8221; apply false  \u9019\u4e0d\u8981\u4f60\u9084\u7279\u5730\u5beb\u4e0a\u53bb\u554a\uff1f."},"content":{"rendered":"\n<p><\/p>\n\n\n<p>\u00a0<\/p>\n<p>\u5047\u8a2d\u6211\u5011\u7684\u5c08\u6848 MyPlayerApp \u662f\u4e00\u500b\u97f3\u6a02\u64ad\u653e\u5668\uff0c\u5b83\u6709\u4e09\u500b\u6a21\u7d44\uff1a<\/p>\n<ol start=\"1\">\n<li>app: \u4e3b\u61c9\u7528\u7a0b\u5f0f\u6a21\u7d44\uff0c\u5305\u542b UI \u756b\u9762\u3002<strong>\uff08\u9700\u8981 Compose\uff09<\/strong><\/li>\n<li>feature_playlist: \u64ad\u653e\u6e05\u55ae\u529f\u80fd\u7684\u6a21\u7d44\uff0c\u4e5f\u5305\u542b UI \u756b\u9762\u3002<strong>\uff08\u9700\u8981 Compose\uff09<\/strong><\/li>\n<li>core_network: \u8ca0\u8cac\u8655\u7406\u7db2\u8def\u8acb\u6c42\u7684\u6a21\u7d44\uff0c\u6c92\u6709\u4efb\u4f55 UI\u3002<strong>\uff08\u4e0d\u9700\u8981 Compose\uff09<\/strong><\/li>\n<\/ol>\n<h3 class=\"wp-block-heading\">\u5c08\u6848\u6a94\u6848\u7d50\u69cb<\/h3>\n<pre class=\"wp-block-code\"><code>MyPlayerApp\/\n\u251c\u2500\u2500 app\/\n\u2502   \u2514\u2500\u2500 build.gradle.kts  (app \u6a21\u7d44\u7684\u8a2d\u5b9a\u6a94)\n\u251c\u2500\u2500 feature_playlist\/\n\u2502   \u2514\u2500\u2500 build.gradle.kts  (\u64ad\u653e\u6e05\u55ae\u6a21\u7d44\u7684\u8a2d\u5b9a\u6a94)\n\u251c\u2500\u2500 core_network\/\n\u2502   \u2514\u2500\u2500 build.gradle.kts  (\u7db2\u8def\u6a21\u7d44\u7684\u8a2d\u5b9a\u6a94)\n\u2514\u2500\u2500 build.gradle.kts      (\u5c08\u6848\u6839\u76ee\u9304\u7684\u8a2d\u5b9a\u6a94\uff0c\u4e5f\u5c31\u662f\u300c\u7e3d\u7ba1\u7406\u8655\u300d)\n<\/code><\/pre>\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n<h3 class=\"wp-block-heading\">\u7b2c 1 \u6b65\uff1a\u5728\u300c\u7e3d\u7ba1\u7406\u8655\u300d\u516c\u544a\u898f\u5247<\/h3>\n<p>\u6211\u5011\u5728\u5c08\u6848<strong>\u6839\u76ee\u9304<\/strong>\u7684 build.gradle.kts \u4e2d\uff0c\u4f7f\u7528 apply false \u4f86<strong>\u7d71\u4e00\u5b9a\u7fa9<\/strong>\u6240\u6709\u6a21\u7d44\u53ef\u80fd\u6703\u7528\u5230\u7684\u5916\u639b\u7248\u672c\u3002<\/p>\n<p><strong>MyPlayerApp\/build.gradle.kts (\u6839\u76ee\u9304)<\/strong><\/p>\n<pre class=\"wp-block-code\"><code>\/\/ \u9019\u88e1\u662f\u300c\u7e3d\u7ba1\u7406\u8655\u300d\uff0c\u53ea\u767c\u5e03\u516c\u544a\uff0c\u4e0d\u57f7\u884c\u5177\u9ad4\u5b89\u88dd\nplugins {\n    \/\/ \u516c\u544a1\uff1a\u672c\u516c\u53f8\u662f\u300cAndroid \u61c9\u7528\u7a0b\u5f0f\u300d\u5c08\u6848\uff0c\u82e5\u6709\u6a21\u7d44\u662f App\uff0c\u8acb\u7528 8.4.1 \u7248\n    id(\"com.android.application\") version \"8.4.1\" apply false\n\n    \/\/ \u516c\u544a2\uff1a\u82e5\u6709\u6a21\u7d44\u662f\u300cAndroid \u51fd\u5f0f\u5eab\u300d\uff0c\u8acb\u7528 8.4.1 \u7248\n    id(\"com.android.library\") version \"8.4.1\" apply false\n\n    \/\/ \u516c\u544a3\uff1a\u672c\u516c\u53f8\u7d71\u4e00\u4f7f\u7528 Kotlin \u8a9e\u8a00\uff0c\u6a19\u6e96\u7248\u865f\u662f 1.9.23\n    id(\"org.jetbrains.kotlin.android\") version \"1.9.23\" apply false\n\n    \/\/ \u516c\u544a4\uff1a\u82e5\u9700\u8981 Jetpack Compose UI \u529f\u80fd\uff0c\u7d71\u4e00\u4f7f\u7528 1.6.10 \u7248\n    id(\"org.jetbrains.kotlin.plugin.compose\") version \"1.6.10\" apply false\n}\n<\/code><\/pre>\n<p><strong>\u91cd\u9ede<\/strong>\uff1a\u9019\u500b\u6a94\u6848\u73fe\u5728\u5c31\u50cf\u662f\u516c\u53f8\u7684\u516c\u544a\u6b04\uff0c\u6e05\u695a\u5217\u51fa\u4e86\u6240\u6709\u5de5\u5177\u7684\u6a19\u6e96\u7248\u672c\u3002<\/p>\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n<h3 class=\"wp-block-heading\">\u7b2c 2 \u6b65\uff1a\u5728\u300c\u5404\u90e8\u9580\u300d\u6309\u9700\u7533\u8acb<\/h3>\n<p>\u73fe\u5728\uff0c\u6bcf\u500b\u6a21\u7d44\u6839\u64da\u81ea\u5df1\u7684\u9700\u6c42\uff0c\u53bb\u300c\u7533\u8acb\u300d\u4f7f\u7528\u9019\u4e9b\u5df2\u7d93\u88ab\u5b9a\u7fa9\u597d\u7684\u5916\u639b\u3002<\/p>\n<h4 class=\"wp-block-heading\">app \u6a21\u7d44 (\u9700\u8981 Compose)<\/h4>\n<p>app \u6a21\u7d44\u662f\u4e3b\u7a0b\u5f0f\uff0c\u6709 UI \u4ecb\u9762\uff0c\u6240\u4ee5\u5b83\u9700\u8981 com.android.application \u548c org.jetbrains.kotlin.plugin.compose\u3002<\/p>\n<p><strong>MyPlayerApp\/app\/build.gradle.kts<\/strong><\/p>\n<pre class=\"wp-block-code\"><code>plugins {\n    \/\/ \u7533\u8acb1\uff1a\u5411\u7e3d\u90e8\u7533\u8acb\u6210\u70ba\u4e00\u500b\u300cAndroid \u61c9\u7528\u7a0b\u5f0f\u300d\n    id(\"com.android.application\")\n\n    \/\/ \u7533\u8acb2\uff1a\u7533\u8acb\u4f7f\u7528\u300cKotlin \u8a9e\u8a00\u300d\n    id(\"org.jetbrains.kotlin.android\")\n\n    \/\/ \u7533\u8acb3\uff1a\u7533\u8acb\u4f7f\u7528\u300cJetpack Compose UI \u529f\u80fd\u300d\n    id(\"org.jetbrains.kotlin.plugin.compose\") \/\/ \u9019\u88e1\u5b8c\u5168\u4e0d\u7528\u5beb version\n}\n\nandroid {\n    \/\/ ... \u5176\u4ed6 android \u8a2d\u5b9a\n    buildFeatures {\n        compose = true \/\/ \u555f\u7528 Compose \u529f\u80fd\n    }\n    \/\/ ...\n}\n<\/code><\/pre>\n<h4 class=\"wp-block-heading\">feature_playlist \u6a21\u7d44 (\u9700\u8981 Compose)<\/h4>\n<p>\u9019\u500b\u6a21\u7d44\u662f\u500b\u51fd\u5f0f\u5eab\uff0c\u4f46\u5b83\u4e5f\u6709 UI\uff0c\u6240\u4ee5\u5b83\u9700\u8981 com.android.library \u548c org.jetbrains.kotlin.plugin.compose\u3002<\/p>\n<p><strong>MyPlayerApp\/feature_playlist\/build.gradle.kts<\/strong><\/p>\n<pre class=\"wp-block-code\"><code>plugins {\n    \/\/ \u7533\u8acb1\uff1a\u5411\u7e3d\u90e8\u7533\u8acb\u6210\u70ba\u4e00\u500b\u300cAndroid \u51fd\u5f0f\u5eab\u300d\n    id(\"com.android.library\")\n\n    \/\/ \u7533\u8acb2\uff1a\u7533\u8acb\u4f7f\u7528\u300cKotlin \u8a9e\u8a00\u300d\n    id(\"org.jetbrains.kotlin.android\")\n\n    \/\/ \u7533\u8acb3\uff1a\u7533\u8acb\u4f7f\u7528\u300cJetpack Compose UI \u529f\u80fd\u300d\n    id(\"org.jetbrains.kotlin.plugin.compose\") \/\/ \u540c\u6a23\u4e0d\u7528\u5beb version\n}\n\nandroid {\n    \/\/ ...\n}\n<\/code><\/pre>\n<h4 class=\"wp-block-heading\">core_network \u6a21\u7d44 (\u4e0d\u9700\u8981 Compose)<\/h4>\n<p>\u9019\u500b\u6a21\u7d44\u53ea\u8ca0\u8cac\u7db2\u8def\uff0c\u6c92\u6709 UI\uff0c\u6240\u4ee5\u5b83<strong>\u5b8c\u5168\u4e0d\u9700\u8981\u7533\u8acb<\/strong> Compose \u5916\u639b\u3002<\/p>\n<p><strong>MyPlayerApp\/core_network\/build.gradle.kts<\/strong><\/p>\n<pre class=\"wp-block-code\"><code>plugins {\n    \/\/ \u7533\u8acb1\uff1a\u5411\u7e3d\u90e8\u7533\u8acb\u6210\u70ba\u4e00\u500b\u300cAndroid \u51fd\u5f0f\u5eab\u300d\n    id(\"com.android.library\")\n\n    \/\/ \u7533\u8acb2\uff1a\u7533\u8acb\u4f7f\u7528\u300cKotlin \u8a9e\u8a00\u300d\n    id(\"org.jetbrains.kotlin.android\")\n\n    \/\/ \u5b8c\u5168\u6c92\u6709\u7533\u8acb Compose\uff0c\u56e0\u70ba\u5b83\u7528\u4e0d\u5230\n}\n\nandroid {\n    \/\/ ...\n}\n<\/code><\/pre>\n<h3 class=\"wp-block-heading\">\u00a0<\/h3>\n<p>\u9019\u6a23\u505a\u6700\u5927\u7684\u597d\u8655\u662f<strong>\u7dad\u8b77\u6027<\/strong>\u3002<\/p>\n<p>\u5047\u8a2d\u5e7e\u500b\u6708\u5f8c\uff0cGoogle \u767c\u5e03\u4e86\u65b0\u7684 Compose Compiler 1.7.0 \u7248\u3002\u4f60<strong>\u53ea\u9700\u8981\u505a\u4e00\u4ef6\u4e8b<\/strong>\uff1a<\/p>\n<p><strong>\u56de\u5230\u5c08\u6848\u6839\u76ee\u9304\u7684 build.gradle.kts\uff0c\u4fee\u6539\u90a3\u4e00\u689d\u300c\u516c\u544a\u300d\u5373\u53ef\u3002<\/strong><\/p>\n<p>Kotlin<\/p>\n<pre class=\"wp-block-code\"><code>\/\/ MyPlayerApp\/build.gradle.kts\nplugins {\n    \/\/ ...\n    \/\/ \u53ea\u9700\u4fee\u6539\u9019\u4e00\u884c\uff0c\u6574\u500b\u5c08\u6848\u5c31\u5347\u7d1a\u4e86\uff01\n    id(\"org.jetbrains.kotlin.plugin.compose\") version \"1.7.0\" apply false\n}\n<\/code><\/pre>\n<p>\u6240 Compose \u529f\u80fd\u7684\u6a21\u7d44\uff08app \u548c feature_playlist\uff09\u5728\u4e0b\u6b21\u5efa\u69cb\u6642\uff0c\u90fd\u6703\u81ea\u52d5\u62ff\u5230 1.7.0 \u7248\u672c\uff0c\u4f60\u5b8c\u5168\u4e0d\u9700\u8981\u53bb\u4e00\u500b\u500b\u4fee\u6539\u5b83\u5011\u7684\u6a94\u6848\u3002\u9019\u5c31\u662f apply false \u5728\u5be6\u969b\u958b\u767c\u4e2d\u7684\u5f37\u5927\u4e4b\u8655\u3002<\/p>\n<p>&#8212;<\/p>","protected":false},"excerpt":{"rendered":"<p>\u00a0 \u5047\u8a2d\u6211\u5011\u7684\u5c08\u6848 MyPlayerApp \u662f\u4e00\u500b\u97f3\u6a02\u64ad\u653e\u5668\uff0c\u5b83\u6709\u4e09\u500b\u6a21\u7d44\uff1a app: \u4e3b\u61c9\u7528\u7a0b\u5f0f\u6a21\u7d44\uff0c\u5305\u542b UI \u756b\u9762\u3002\uff08\u9700\u8981 Compose\uff09 feature_playlist: \u64ad\u653e\u6e05\u55ae\u529f\u80fd\u7684\u6a21&#8230;<\/p>\n","protected":false},"author":1,"featured_media":835,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[81],"tags":[],"_links":{"self":[{"href":"https:\/\/boochlin.com\/index.php?rest_route=\/wp\/v2\/posts\/632"}],"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=632"}],"version-history":[{"count":8,"href":"https:\/\/boochlin.com\/index.php?rest_route=\/wp\/v2\/posts\/632\/revisions"}],"predecessor-version":[{"id":836,"href":"https:\/\/boochlin.com\/index.php?rest_route=\/wp\/v2\/posts\/632\/revisions\/836"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/boochlin.com\/index.php?rest_route=\/wp\/v2\/media\/835"}],"wp:attachment":[{"href":"https:\/\/boochlin.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=632"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/boochlin.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=632"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/boochlin.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=632"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}