{"id":2385,"date":"2024-07-16T15:44:05","date_gmt":"2024-07-16T06:44:05","guid":{"rendered":"http:\/\/batmask.dothome.co.kr\/?p=2385"},"modified":"2024-07-16T15:45:58","modified_gmt":"2024-07-16T06:45:58","slug":"%ec%95%88%eb%93%9c%eb%a1%9c%ec%9d%b4%eb%93%9c-%eb%b9%8c%eb%93%9c-%ea%b5%ac%ec%84%b1%ed%95%98%ea%b8%b0-2","status":"publish","type":"post","link":"http:\/\/batmask.net\/index.php\/2024\/07\/16\/2385\/","title":{"rendered":"\uc548\ub4dc\ub85c\uc774\ub4dc \ube4c\ub4dc \uad6c\uc131\ud558\uae30 #2"},"content":{"rendered":"\n<h3 class=\"wp-block-heading\">Manage remote repositories<\/h3>\n\n\n\n<p>\uc0c8 \uc548\ub4dc\ub85c\uc774\ub4dc \uc2a4\ud29c\ub514\uc624 \ud504\ub85c\uc81d\ud2b8\uc5d0\uc11c\ub294 \ub808\ud3ec\uc9c0\ud1a0\ub9ac \uad00\ub828\ub41c \uac78 settings.gradle\uc5d0\uc11c \uad00\ub9ac\ud55c\ub2e4. \ub85c\uceec \ub77c\uc774\ube0c\ub7ec\ub9ac\ub098 \ud30c\uc77c\uc774\ub4e0, \ub9ac\ubaa8\ud2b8 \ub808\ud3ec\uc9c0\ud1a0\ub9ac\ub4e0, dependencyResolutionManagement{ } \uc5d0 \ub123\uc5b4\uc900\ub2e4. \uae30\ubcf8\uc801\uc73c\ub85c \ud504\ub85c\uc81d\ud2b8\ub97c \uc0dd\uc131\ud558\uba74 \uc544\ub798\uc640 \uac19\uc774 <a href=\"https:\/\/developer.android.com\/build\/remote-repositories#google-maven\">\uad6c\uae00 Maven \ub808\ud3ec\uc9c0\ud1a0\ub9ac<\/a>\uc640 <a href=\"https:\/\/central.sonatype.com\/?smo=true\">Maven central \ub808\ud3ec\uc9c0\ud1a0\ub9ac<\/a>\ub97c \ud3ec\ud568\ud558\uace0 \uc788\ub2e4.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-Roboto-Mono.ttf\" style=\"font-size:clamp(14px, .875rem, 21px);font-family:Code-Pro-Roboto-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#adbac7;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:clamp(20px, 1.25rem, 30px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#22272e\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"dependencyResolutionManagement {\n    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)\n    repositories {\n        google()\n        mavenCentral()\n    }\n}\" style=\"color:#adbac7;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #DCBDFB\">dependencyResolutionManagement<\/span><span style=\"color: #ADBAC7\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    repositoriesMode.<\/span><span style=\"color: #DCBDFB\">set<\/span><span style=\"color: #ADBAC7\">(RepositoriesMode.FAIL_ON_PROJECT_REPOS)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #DCBDFB\">repositories<\/span><span style=\"color: #ADBAC7\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">        <\/span><span style=\"color: #DCBDFB\">google<\/span><span style=\"color: #ADBAC7\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">        <\/span><span style=\"color: #DCBDFB\">mavenCentral<\/span><span style=\"color: #ADBAC7\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>\ub85c\uceec \ub808\ud3ec\uc9c0\ud1a0\ub9ac\ub97c \uc0ac\uc6a9\ud558\ub824\uba74 \ub2e4\uc74c\uacfc \uac19\uc774 mavenLocal()\uc744 \uc0ac\uc6a9\ud55c\ub2e4.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-Roboto-Mono.ttf\" style=\"font-size:clamp(14px, .875rem, 21px);font-family:Code-Pro-Roboto-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#adbac7;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:clamp(20px, 1.25rem, 30px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#22272e\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"dependencyResolutionManagement {\n    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)\n    repositories {\n        google()\n        mavenCentral()\n        mavenLocal()\n    }\n}\n\" style=\"color:#adbac7;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #DCBDFB\">dependencyResolutionManagement<\/span><span style=\"color: #ADBAC7\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    repositoriesMode.<\/span><span style=\"color: #DCBDFB\">set<\/span><span style=\"color: #ADBAC7\">(RepositoriesMode.FAIL_ON_PROJECT_REPOS)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #DCBDFB\">repositories<\/span><span style=\"color: #ADBAC7\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">        <\/span><span style=\"color: #DCBDFB\">google<\/span><span style=\"color: #ADBAC7\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">        <\/span><span style=\"color: #DCBDFB\">mavenCentral<\/span><span style=\"color: #ADBAC7\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">        <\/span><span style=\"color: #DCBDFB\">mavenLocal<\/span><span style=\"color: #ADBAC7\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p><\/p>\n\n\n\n<p>\ub610\ub294 \ub2e4\uc74c\uacfc \uac19\uc774 \ud2b9\uc815 \ub808\ud3ec\uc9c0\ud1a0\ub9ac\ub97c \uc9c1\uc811 \ucd94\uac00\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-Roboto-Mono.ttf\" style=\"font-size:clamp(14px, .875rem, 21px);font-family:Code-Pro-Roboto-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#adbac7;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:clamp(20px, 1.25rem, 30px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#22272e\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"dependencyResolutionManagement {\n    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)\n    repositories {\n        maven(url = &quot;https:\/\/repo.example.com\/maven2&quot;)\n        maven(url = &quot;file:\/\/local\/repo\/&quot;)\n        ivy(url = &quot;https:\/\/repo.example.com\/ivy&quot;)\n    }\n}\" style=\"color:#adbac7;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #DCBDFB\">dependencyResolutionManagement<\/span><span style=\"color: #ADBAC7\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    repositoriesMode.<\/span><span style=\"color: #DCBDFB\">set<\/span><span style=\"color: #ADBAC7\">(RepositoriesMode.FAIL_ON_PROJECT_REPOS)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #DCBDFB\">repositories<\/span><span style=\"color: #ADBAC7\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">        <\/span><span style=\"color: #DCBDFB\">maven<\/span><span style=\"color: #ADBAC7\">(url <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #96D0FF\">&quot;https:\/\/repo.example.com\/maven2&quot;<\/span><span style=\"color: #ADBAC7\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">        <\/span><span style=\"color: #DCBDFB\">maven<\/span><span style=\"color: #ADBAC7\">(url <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #96D0FF\">&quot;file:\/\/local\/repo\/&quot;<\/span><span style=\"color: #ADBAC7\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">        <\/span><span style=\"color: #DCBDFB\">ivy<\/span><span style=\"color: #ADBAC7\">(url <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #96D0FF\">&quot;https:\/\/repo.example.com\/ivy&quot;<\/span><span style=\"color: #ADBAC7\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p><\/p>\n\n\n\n<p>\ubcf4\ub2e4 \uc790\uc138\ud55c \ub0b4\uc6a9\uc740 <a href=\"https:\/\/docs.gradle.org\/current\/userguide\/dependency_management.html#sec:repositories\">gradle\uc758 \ub808\ud3ec\uc9c0\ud1a0\ub9ac \uac00\uc774\ub4dc<\/a>\ub97c \ucc38\uc870 \ud558\ub77c\uace0 \ud568.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Configure build variants<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">Configure build types<\/h4>\n\n\n\n<p>\ube4c\ub4dc \ud0c0\uc785\uc740 release, debug\uc640 \uac19\uc740 \uad6c\ubd84\uc744 \ub9d0\ud55c\ub2e4. \ube4c\ub4dc \ud0c0\uc785\uc744 \uad6c\uc131(configure)\ud558\ub294 \uac83\uc740 \ubaa8\ub4c8\ub808\ubca8\uc758 build.gradle.kts\uc758 android { } \ube14\ub7ed\uc5d0\uc11c \uae30\uc220\ud55c\ub2e4. \uc0c8 \ud504\ub85c\uc81d\ud2b8\ub97c \uc0dd\uc131\ud558\uba74, \uae30\ubcf8\uc801\uc73c\ub85c &#8216;release&#8217; \ud0c0\uc785\uc744 \uc0dd\uc131\ud574\uc900\ub2e4. \uc548\ub4dc\ub85c\uc774\ub4dc \uc2a4\ud29c\ub514\uc624\uc5d0\uc11c\ub294 \uae30\ubcf8\uc801\uc73c\ub85c \ub514\ubc84\uadf8\uac00 \uac00\ub2a5\ud55c\ub370, \uc544\ub9c8\ub3c4 \ub514\ubc84\uadf8\ub85c \uc2e4\ud589\uc2dc \uc790\ub3d9\uc73c\ub85c \uc124\uc815\ub418\ub294 \uac83\uc73c\ub85c \ubcf4\uc778\ub2e4. \uc774\ub97c \ub2e4\uc74c\uacfc \uac19\uc774 \uba85\uc2dc\uc801\uc73c\ub85c \ud45c\uc2dc\ud574\uc904 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-Roboto-Mono.ttf\" style=\"font-size:clamp(14px, .875rem, 21px);font-family:Code-Pro-Roboto-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#adbac7;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:clamp(20px, 1.25rem, 30px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#22272e\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"buildTypes {\n    getByName(&quot;release&quot;) {\n        isMinifyEnabled = true\n        proguardFiles(getDefaultProguardFile(&quot;proguard-android.txt&quot;), &quot;proguard-rules.pro&quot;)\n    }\n\n    getByName(&quot;debug&quot;) {\n        applicationIdSuffix = &quot;.debug&quot;\n        isDebuggable = true\n    }\n\n    \/**\n     * The `initWith` property lets you copy configurations from other build types,\n     * then configure only the settings you want to change. This one copies the debug build\n     * type, and then changes the manifest placeholder and application ID.\n     *\/\n    create(&quot;staging&quot;) {\n        initWith(getByName(&quot;debug&quot;))\n        manifestPlaceholders[&quot;hostName&quot;] = &quot;internal.example.com&quot;\n        applicationIdSuffix = &quot;.debugStaging&quot;\n    }\n}\n\" style=\"color:#adbac7;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #DCBDFB\">buildTypes<\/span><span style=\"color: #ADBAC7\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #DCBDFB\">getByName<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #96D0FF\">&quot;release&quot;<\/span><span style=\"color: #ADBAC7\">) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">        isMinifyEnabled <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #6CB6FF\">true<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">        <\/span><span style=\"color: #DCBDFB\">proguardFiles<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #DCBDFB\">getDefaultProguardFile<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #96D0FF\">&quot;proguard-android.txt&quot;<\/span><span style=\"color: #ADBAC7\">), <\/span><span style=\"color: #96D0FF\">&quot;proguard-rules.pro&quot;<\/span><span style=\"color: #ADBAC7\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #DCBDFB\">getByName<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #96D0FF\">&quot;debug&quot;<\/span><span style=\"color: #ADBAC7\">) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">        applicationIdSuffix <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #96D0FF\">&quot;.debug&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">        isDebuggable <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #6CB6FF\">true<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #768390\">\/**<\/span><\/span>\n<span class=\"line\"><span style=\"color: #768390\">     * The `initWith` property lets you copy configurations from other build types,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #768390\">     * then configure only the settings you want to change. This one copies the debug build<\/span><\/span>\n<span class=\"line\"><span style=\"color: #768390\">     * type, and then changes the manifest placeholder and application ID.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #768390\">     *\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #DCBDFB\">create<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #96D0FF\">&quot;staging&quot;<\/span><span style=\"color: #ADBAC7\">) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">        <\/span><span style=\"color: #DCBDFB\">initWith<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #DCBDFB\">getByName<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #96D0FF\">&quot;debug&quot;<\/span><span style=\"color: #ADBAC7\">))<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">        manifestPlaceholders[<\/span><span style=\"color: #96D0FF\">&quot;hostName&quot;<\/span><span style=\"color: #ADBAC7\">] <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #96D0FF\">&quot;internal.example.com&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">        applicationIdSuffix <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #96D0FF\">&quot;.debugStaging&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p>\ub514\ubc84\uadf8 \ube4c\ub4dc\ub3c4 \ud3ec\ud568\uc2dc\ucf30\uc73c\uba70, \uadf8 \uc548\uc5d0 &#8220;isDebuggable = true&#8221;\ub85c \uba85\uc2dc\ud574\uc900\uac78 \ubcfc \uc218 \uc788\ub2e4. \ub610\ud55c, \ucee4\uc2a4\ud140 \ube4c\ub4dc\ub85c &#8220;staging&#8221;\uc774 \ucd94\uac00\ub41c \uac83\ub3c4 \ubcfc \uc218 \uc788\ub2e4. &#8216;initWith( )&#8217;\ub294 \ubca0\uc774\uc2a4\uac00 \ub418\ub294 \ube4c\ub4dc\ud0c0\uc785\uc744 \ub9d0\ud55c\ub2e4.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Configure product flavors<\/h4>\n\n\n\n<p>product flavors\ub294 demo, paid, free \ub4f1\uc758 \ubc84\uc804 \uad6c\ubd84\uc744 \uc758\ubbf8\ud55c\ub2e4. \ube4c\ub4dc \ud0c0\uc785\uacfc \uc720\uc0ac\ud558\uac8c build.gradle.kts \ub0b4\uc5d0\uc11c productFlavors{ } \ub0b4\ubd80\uc5d0 \uae30\uc220\ud558\uac8c \ub41c\ub2e4. <\/p>\n\n\n\n<p>\ubaa8\ub4e0 product flavor\ub4e4\uc740 \uba85\uba85\ub41c flavor dimension\uc5d0 \uc18d\ud574\uc57c \ud55c\ub2e4. flavor dimension\uc740 product flavor\ub4e4\uc758 \uadf8\ub8f9\uc744 \uc758\ubbf8\ud55c\ub2e4. \ub9cc\uc57d, \ub2e8 \ud558\ub098\uc758 flavor dimension\ub9cc \uc9c0\uc815\ud558\ub294 \uacbd\uc6b0, AGP\uc5d0\uc11c \uc790\ub3d9\uc73c\ub85c \ubaa8\ub4c8\uc758 \ubaa8\ub4e0 flavor\ub4e4\uc744 \uadf8 flavor dimension\uc5d0 \ud560\ub2f9\ud55c\ub2e4. <\/p>\n\n\n\n<p>\ub2e4\uc74c\uc758 \uc608\uc81c\ub294 &#8220;version&#8221;\uc73c\ub85c \uba85\uba85\ub41c flavor dimension\uc744 \uc0dd\uc131\ud558\uace0, \uc5ec\uae30\uc5d0 &#8220;demo&#8221;\uc640 &#8220;full&#8221; \ub450\uac00\uc9c0 \uc774\ub984\uc758 product flavor\ub97c \ucd94\uac00\ud558\ub294 \ub0b4\uc6a9\uc774\ub2e4.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-Roboto-Mono.ttf\" style=\"font-size:clamp(14px, .875rem, 21px);font-family:Code-Pro-Roboto-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#adbac7;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:clamp(20px, 1.25rem, 30px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#22272e\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"android {\n    ...\n    defaultConfig {...}\n    buildTypes {\n        getByName(&quot;debug&quot;){...}\n        getByName(&quot;release&quot;){...}\n    }\n    \/\/ Specifies one flavor dimension.\n    flavorDimensions += &quot;version&quot;\n    productFlavors {\n        create(&quot;demo&quot;) {\n            \/\/ Assigns this product flavor to the &quot;version&quot; flavor dimension.\n            \/\/ If you are using only one dimension, this property is optional,\n            \/\/ and the plugin automatically assigns all the module's flavors to\n            \/\/ that dimension.\n            dimension = &quot;version&quot;\n            applicationIdSuffix = &quot;.demo&quot;\n            versionNameSuffix = &quot;-demo&quot;\n        }\n        create(&quot;full&quot;) {\n            dimension = &quot;version&quot;\n            applicationIdSuffix = &quot;.full&quot;\n            versionNameSuffix = &quot;-full&quot;\n        }\n    }\n}\" style=\"color:#adbac7;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #DCBDFB\">android<\/span><span style=\"color: #ADBAC7\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #F47067\">..<\/span><span style=\"color: #ADBAC7\">.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #DCBDFB\">defaultConfig<\/span><span style=\"color: #ADBAC7\"> {<\/span><span style=\"color: #F47067\">..<\/span><span style=\"color: #ADBAC7\">.}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #DCBDFB\">buildTypes<\/span><span style=\"color: #ADBAC7\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">        <\/span><span style=\"color: #DCBDFB\">getByName<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #96D0FF\">&quot;debug&quot;<\/span><span style=\"color: #ADBAC7\">){<\/span><span style=\"color: #F47067\">..<\/span><span style=\"color: #ADBAC7\">.}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">        <\/span><span style=\"color: #DCBDFB\">getByName<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #96D0FF\">&quot;release&quot;<\/span><span style=\"color: #ADBAC7\">){<\/span><span style=\"color: #F47067\">..<\/span><span style=\"color: #ADBAC7\">.}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #768390\">\/\/ Specifies one flavor dimension.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    flavorDimensions <\/span><span style=\"color: #F47067\">+=<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #96D0FF\">&quot;version&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #DCBDFB\">productFlavors<\/span><span style=\"color: #ADBAC7\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">        <\/span><span style=\"color: #DCBDFB\">create<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #96D0FF\">&quot;demo&quot;<\/span><span style=\"color: #ADBAC7\">) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">            <\/span><span style=\"color: #768390\">\/\/ Assigns this product flavor to the &quot;version&quot; flavor dimension.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">            <\/span><span style=\"color: #768390\">\/\/ If you are using only one dimension, this property is optional,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">            <\/span><span style=\"color: #768390\">\/\/ and the plugin automatically assigns all the module&#39;s flavors to<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">            <\/span><span style=\"color: #768390\">\/\/ that dimension.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">            dimension <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #96D0FF\">&quot;version&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">            applicationIdSuffix <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #96D0FF\">&quot;.demo&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">            versionNameSuffix <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #96D0FF\">&quot;-demo&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">        }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">        <\/span><span style=\"color: #DCBDFB\">create<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #96D0FF\">&quot;full&quot;<\/span><span style=\"color: #ADBAC7\">) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">            dimension <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #96D0FF\">&quot;version&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">            applicationIdSuffix <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #96D0FF\">&quot;.full&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">            versionNameSuffix <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #96D0FF\">&quot;-full&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">        }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>\ube4c\ub4dc \uc2a4\ud06c\ub9bd\ud2b8\ub97c \uc791\uc131\ud558\uace0 sync now\ub97c \ud074\ub9ad\ud574\uc11c \uc2f1\ud06c\uac00 \uc774\ub8e8\uc5b4\uc9c0\uba74, gradle\uc740 \uc790\ub3d9\uc73c\ub85c build type\uacfc product flavor\uc5d0 \uae30\ubc18\ud574 build variant\ub97c \uc0dd\uc131\ud558\uac8c \ub41c\ub2e4. \uadf8 \uc774\ub984\uc740 &lt;product-flavor&gt;&lt;Build-Type&gt;\uc758 \ud615\ud0dc\uc774\ub2e4. \uc704\uc758 \uc2a4\ud06c\ub9bd\ud2b8\ub97c \uc0dd\uac01\ud55c\ub2e4\uba74, demoDebug, demoRelease, fullDebug, fullRelease\uc640 \uac19\ub2e4.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">build variants\ub97c \uc704\ud574 application ID \ubcc0\uacbd\ud558\uae30<\/h4>\n\n\n\n<p>\uae30\ubcf8\uc801\uc73c\ub85c defaultConfig { } \uc5d0 \uc788\ub294 applicationid\uc18d\uc131\uc744 \uc0ac\uc6a9\ud558\uac8c \ub41c\ub2e4. \ubcc4\ub3c4\ub85c &#8220;free&#8221;, &#8220;pro&#8221;\ubc84\uc804\uc744 \ud50c\ub808\uc774\uc2a4\ud1a0\uc5b4\uc5d0 \ubcf4\uc5ec\uc8fc\uace0 \uc2f6\ub2e4\uba74, \ub2e4\ub978 application ID\ub97c \uac00\uc9c4 build variant\ub97c \uc0dd\uc131\ud574\uc57c \ud55c\ub2e4. \uc774\ub294 applicationIdSuffix \uc18d\uc131\uc744 \uc9c0\uc815\ud574\uc90c \uc73c\ub85c\uc11c \uac00\ub2a5\ud558\ub2e4. <\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-Roboto-Mono.ttf\" style=\"font-size:clamp(14px, .875rem, 21px);font-family:Code-Pro-Roboto-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#adbac7;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:clamp(20px, 1.25rem, 30px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#22272e\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"android {\n    defaultConfig {\n        applicationId = &quot;com.example.myapp&quot;\n    }\n    productFlavors {\n        create(&quot;free&quot;) {\n            applicationIdSuffix = &quot;.free&quot;\n        }\n        create(&quot;pro&quot;) {\n            applicationIdSuffix = &quot;.pro&quot;\n        }\n    }\n}\n\" style=\"color:#adbac7;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #DCBDFB\">android<\/span><span style=\"color: #ADBAC7\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #DCBDFB\">defaultConfig<\/span><span style=\"color: #ADBAC7\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">        applicationId <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #96D0FF\">&quot;com.example.myapp&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #DCBDFB\">productFlavors<\/span><span style=\"color: #ADBAC7\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">        <\/span><span style=\"color: #DCBDFB\">create<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #96D0FF\">&quot;free&quot;<\/span><span style=\"color: #ADBAC7\">) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">            applicationIdSuffix <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #96D0FF\">&quot;.free&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">        }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">        <\/span><span style=\"color: #DCBDFB\">create<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #96D0FF\">&quot;pro&quot;<\/span><span style=\"color: #ADBAC7\">) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">            applicationIdSuffix <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #96D0FF\">&quot;.pro&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">        }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p>\uc704\uc640\uac19\uc774 \uc9c0\uc815\ud574\uc8fc\uba74, &#8220;free&#8221; flavor\uc5d0 \ub300\ud574 &#8220;com.example.myapp.free&#8221;, &#8220;pro&#8221; flavor\uc5d0 \ub300\ud574 &#8220;com.example.myapp.pro&#8221;\uc758 application ID\uac00 \uc9c0\uc815\ub41c\ub2e4. <\/p>\n\n\n\n<p>\ube4c\ub4dc \ud0c0\uc785\ub3c4 \uc801\uc6a9\uac00\ub2a5\ud558\ub2e4.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-Roboto-Mono.ttf\" style=\"font-size:clamp(14px, .875rem, 21px);font-family:Code-Pro-Roboto-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#adbac7;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:clamp(20px, 1.25rem, 30px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#22272e\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"android {\n    ...\n    buildTypes {\n        getByName(&quot;debug&quot;) {\n            applicationIdSuffix = &quot;.debug&quot;\n        }\n    }\n}\n\" style=\"color:#adbac7;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #DCBDFB\">android<\/span><span style=\"color: #ADBAC7\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #F47067\">..<\/span><span style=\"color: #ADBAC7\">.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #DCBDFB\">buildTypes<\/span><span style=\"color: #ADBAC7\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">        <\/span><span style=\"color: #DCBDFB\">getByName<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #96D0FF\">&quot;debug&quot;<\/span><span style=\"color: #ADBAC7\">) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">            applicationIdSuffix <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #96D0FF\">&quot;.debug&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">        }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p>\uc55e\uc11c \ub9d0\ud588\ub4ef, flavor\uac00 \uba3c\uc800 \ub098\uc624\uace0 build type\uc774 \ub4a4\uc5d0 \ub098\uc624\ubbc0\ub85c, &#8220;free debug&#8221; build variant\uc5d0 \ub300\ud574 &#8220;com.example.myapp.free.debug&#8221;\uc640 \uac19\uc740 application ID\uac00 \uc8fc\uc5b4\uc9c0\uac8c \ub41c\ub2e4. \uc774\ub294 \ub2e8\uc77c \ub514\ubc14\uc774\uc2a4\uc5d0\uc11c \ub514\ubc84\uadf8\uc640 \ub9b4\ub9ac\uc988 \ubc84\uc804\uc744 \ub3d9\uc2dc\uc5d0 \uc2e4\ud589 \uac00\ub2a5\ud558\uac8c \ud574\uc900\ub2e4. \ub450\uac1c\uc758 \uc571\uc774 \uac19\uc740 application ID\ub97c \uac00\uc9c8 \uc218 \uc5c6\uae30 \ub54c\ubb38\uc774\ub2e4.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">product flavors \uc640 flavor dimensions \uc758 \uc870\ud569 \ub9cc\ub4e4\uae30<\/h4>\n\n\n\n<p>\uc608\ub97c \ub4e4\uc5b4 &#8220;full&#8221; \uacfc &#8220;demo&#8221; \ub77c\ub294 flavor\uc5d0 \ub300\ud574 API \ub808\ubca8\ubcc4\ub85c \ube4c\ub4dc\ub97c \ub530\ub85c \ub9cc\ub4e4\uace0 \uc2f6\uc744 \uc218\uac00 \uc788\ub2e4. \uc774\ub7f0 \uacbd\uc6b0\uc5d0 flavor dimensions\ub97c \uc774\uc6a9\ud558\uc5ec \uac00\ub2a5\ud574\uc9c4\ub2e4. \ube4c\ub4dc\ud0c0\uc785\ub3c4 \ub2f9\uc5f0\ud788 \uc870\ud569\ub41c\ub2e4. \ub2e4\uc74c\uc758 \uc608\uc81c\ub97c \ubcf4\uc790.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-Roboto-Mono.ttf\" style=\"font-size:clamp(14px, .875rem, 21px);font-family:Code-Pro-Roboto-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#adbac7;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:clamp(20px, 1.25rem, 30px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#22272e\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"android {\n  ...\n  buildTypes {\n    getByName(&quot;debug&quot;) {...}\n    getByName(&quot;release&quot;) {...}\n  }\n\n  \/\/ Specifies the flavor dimensions you want to use. The order in which you\n  \/\/ list the dimensions determines their priority, from highest to lowest,\n  \/\/ when Gradle merges variant sources and configurations. You must assign\n  \/\/ each product flavor you configure to one of the flavor dimensions.\n  flavorDimensions += listOf(&quot;api&quot;, &quot;mode&quot;)\n\n  productFlavors {\n    create(&quot;demo&quot;) {\n      \/\/ Assigns this product flavor to the &quot;mode&quot; flavor dimension.\n      dimension = &quot;mode&quot;\n      ...\n    }\n\n    create(&quot;full&quot;) {\n      dimension = &quot;mode&quot;\n      ...\n    }\n\n    \/\/ Configurations in the &quot;api&quot; product flavors override those in &quot;mode&quot;\n    \/\/ flavors and the defaultConfig block. Gradle determines the priority\n    \/\/ between flavor dimensions based on the order in which they appear next\n    \/\/ to the flavorDimensions property, with the first dimension having a higher\n    \/\/ priority than the second, and so on.\n    create(&quot;minApi24&quot;) {\n      dimension = &quot;api&quot;\n      minSdk = 24\n      \/\/ To ensure the target device receives the version of the app with\n      \/\/ the highest compatible API level, assign version codes in increasing\n      \/\/ value with API level.\n      versionCode = 30000 + (android.defaultConfig.versionCode ?: 0)\n      versionNameSuffix = &quot;-minApi24&quot;\n      ...\n    }\n\n    create(&quot;minApi23&quot;) {\n      dimension = &quot;api&quot;\n      minSdk = 23\n      versionCode = 20000  + (android.defaultConfig.versionCode ?: 0)\n      versionNameSuffix = &quot;-minApi23&quot;\n      ...\n    }\n\n    create(&quot;minApi21&quot;) {\n      dimension = &quot;api&quot;\n      minSdk = 21\n      versionCode = 10000  + (android.defaultConfig.versionCode ?: 0)\n      versionNameSuffix = &quot;-minApi21&quot;\n      ...\n    }\n  }\n}\n...\" style=\"color:#adbac7;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #DCBDFB\">android<\/span><span style=\"color: #ADBAC7\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">  <\/span><span style=\"color: #F47067\">..<\/span><span style=\"color: #ADBAC7\">.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">  <\/span><span style=\"color: #DCBDFB\">buildTypes<\/span><span style=\"color: #ADBAC7\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #DCBDFB\">getByName<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #96D0FF\">&quot;debug&quot;<\/span><span style=\"color: #ADBAC7\">) {<\/span><span style=\"color: #F47067\">..<\/span><span style=\"color: #ADBAC7\">.}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #DCBDFB\">getByName<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #96D0FF\">&quot;release&quot;<\/span><span style=\"color: #ADBAC7\">) {<\/span><span style=\"color: #F47067\">..<\/span><span style=\"color: #ADBAC7\">.}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">  }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">  <\/span><span style=\"color: #768390\">\/\/ Specifies the flavor dimensions you want to use. The order in which you<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">  <\/span><span style=\"color: #768390\">\/\/ list the dimensions determines their priority, from highest to lowest,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">  <\/span><span style=\"color: #768390\">\/\/ when Gradle merges variant sources and configurations. You must assign<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">  <\/span><span style=\"color: #768390\">\/\/ each product flavor you configure to one of the flavor dimensions.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">  flavorDimensions <\/span><span style=\"color: #F47067\">+=<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #DCBDFB\">listOf<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #96D0FF\">&quot;api&quot;<\/span><span style=\"color: #ADBAC7\">, <\/span><span style=\"color: #96D0FF\">&quot;mode&quot;<\/span><span style=\"color: #ADBAC7\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">  <\/span><span style=\"color: #DCBDFB\">productFlavors<\/span><span style=\"color: #ADBAC7\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #DCBDFB\">create<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #96D0FF\">&quot;demo&quot;<\/span><span style=\"color: #ADBAC7\">) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">      <\/span><span style=\"color: #768390\">\/\/ Assigns this product flavor to the &quot;mode&quot; flavor dimension.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">      dimension <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #96D0FF\">&quot;mode&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">      <\/span><span style=\"color: #F47067\">..<\/span><span style=\"color: #ADBAC7\">.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #DCBDFB\">create<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #96D0FF\">&quot;full&quot;<\/span><span style=\"color: #ADBAC7\">) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">      dimension <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #96D0FF\">&quot;mode&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">      <\/span><span style=\"color: #F47067\">..<\/span><span style=\"color: #ADBAC7\">.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #768390\">\/\/ Configurations in the &quot;api&quot; product flavors override those in &quot;mode&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #768390\">\/\/ flavors and the defaultConfig block. Gradle determines the priority<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #768390\">\/\/ between flavor dimensions based on the order in which they appear next<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #768390\">\/\/ to the flavorDimensions property, with the first dimension having a higher<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #768390\">\/\/ priority than the second, and so on.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #DCBDFB\">create<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #96D0FF\">&quot;minApi24&quot;<\/span><span style=\"color: #ADBAC7\">) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">      dimension <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #96D0FF\">&quot;api&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">      minSdk <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #6CB6FF\">24<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">      <\/span><span style=\"color: #768390\">\/\/ To ensure the target device receives the version of the app with<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">      <\/span><span style=\"color: #768390\">\/\/ the highest compatible API level, assign version codes in increasing<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">      <\/span><span style=\"color: #768390\">\/\/ value with API level.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">      versionCode <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #6CB6FF\">30000<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F47067\">+<\/span><span style=\"color: #ADBAC7\"> (android.defaultConfig.versionCode ?: <\/span><span style=\"color: #6CB6FF\">0<\/span><span style=\"color: #ADBAC7\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">      versionNameSuffix <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #96D0FF\">&quot;-minApi24&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">      <\/span><span style=\"color: #F47067\">..<\/span><span style=\"color: #ADBAC7\">.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #DCBDFB\">create<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #96D0FF\">&quot;minApi23&quot;<\/span><span style=\"color: #ADBAC7\">) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">      dimension <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #96D0FF\">&quot;api&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">      minSdk <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #6CB6FF\">23<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">      versionCode <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #6CB6FF\">20000<\/span><span style=\"color: #ADBAC7\">  <\/span><span style=\"color: #F47067\">+<\/span><span style=\"color: #ADBAC7\"> (android.defaultConfig.versionCode ?: <\/span><span style=\"color: #6CB6FF\">0<\/span><span style=\"color: #ADBAC7\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">      versionNameSuffix <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #96D0FF\">&quot;-minApi23&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">      <\/span><span style=\"color: #F47067\">..<\/span><span style=\"color: #ADBAC7\">.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #DCBDFB\">create<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #96D0FF\">&quot;minApi21&quot;<\/span><span style=\"color: #ADBAC7\">) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">      dimension <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #96D0FF\">&quot;api&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">      minSdk <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #6CB6FF\">21<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">      versionCode <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #6CB6FF\">10000<\/span><span style=\"color: #ADBAC7\">  <\/span><span style=\"color: #F47067\">+<\/span><span style=\"color: #ADBAC7\"> (android.defaultConfig.versionCode ?: <\/span><span style=\"color: #6CB6FF\">0<\/span><span style=\"color: #ADBAC7\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">      versionNameSuffix <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #96D0FF\">&quot;-minApi21&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">      <\/span><span style=\"color: #F47067\">..<\/span><span style=\"color: #ADBAC7\">.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">  }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F47067\">..<\/span><span style=\"color: #ADBAC7\">.<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>\uc608\uc81c\ub97c \ubcf4\uba74, flavor dimension\uc73c\ub85c &#8220;api&#8221; \uc640 &#8220;mode&#8221;\ub97c \ub9cc\ub4e4\uc5c8\uc73c\uba70, &#8220;api&#8221; dimension \uadf8\ub8f9\uc5d0 \uac01 \uc9c0\uc6d0 api\ubcc4 flavor\ub97c \ub9cc\ub4e4\uace0, &#8220;mode&#8221; \uadf8\ub8f9\uc5d0 &#8220;demo&#8221; \uc640 &#8220;full&#8221;\uc744 \ub9cc\ub4e4\uc5c8\ub2e4. \uc774\ub807\uac8c flavor dimension\uc774 \ub2e4\ub974\uac8c \ub418\uba74, gradle\uc5d0\uc11c \ub2e4\ub978 flavor dimension\ub4e4\uc5d0 \ub300\ud574 \uac01\uac01 \uc870\ud569\uc744 \ub9cc\ub4e4\uc5b4 \ub0b8\ub2e4. \uc704 \uc608\uc81c\uc758 \uacbd\uc6b0, [minApi24, minApi23, minApi21][Demo, Full][Debug, Release] \ub85c \uc870\ud569\ub418\uc5b4 12\uac1c\uc758 build variant\uac00 \uc0dd\uc131\ub41c\ub2e4. <\/p>\n\n\n\n<p>&#8230;\uc544&#8230; Code block pro \ub610 \uc5d0\ub7ec\ub09c\ub2e4. \ub2e4\uc74c \ud3ec\uc2a4\ud305\uc5d0\uc11c \uacc4\uc18d.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Manage remote repositories \uc0c8 \uc548\ub4dc\ub85c\uc774\ub4dc \uc2a4\ud29c\ub514\uc624 \ud504\ub85c\uc81d\ud2b8\uc5d0\uc11c\ub294 \ub808\ud3ec\uc9c0\ud1a0\ub9ac \uad00\ub828\ub41c \uac78 settings.gradle\uc5d0\uc11c \uad00\ub9ac\ud55c\ub2e4. \ub85c\uceec \ub77c\uc774\ube0c\ub7ec\ub9ac\ub098 \ud30c\uc77c\uc774\ub4e0, \ub9ac\ubaa8\ud2b8 \ub808\ud3ec\uc9c0\ud1a0\ub9ac\ub4e0, dependencyResolutionManagement{ } \uc5d0 \ub123\uc5b4\uc900\ub2e4. \uae30\ubcf8\uc801\uc73c\ub85c \ud504\ub85c\uc81d\ud2b8\ub97c \uc0dd\uc131\ud558\uba74 \uc544\ub798\uc640 \uac19\uc774 \uad6c\uae00 Maven \ub808\ud3ec\uc9c0\ud1a0\ub9ac\uc640 Maven central \ub808\ud3ec\uc9c0\ud1a0\ub9ac\ub97c \ud3ec\ud568\ud558\uace0 \uc788\ub2e4. \ub85c\uceec \ub808\ud3ec\uc9c0\ud1a0\ub9ac\ub97c \uc0ac\uc6a9\ud558\ub824\uba74 \ub2e4\uc74c\uacfc \uac19\uc774 mavenLocal()\uc744 \uc0ac\uc6a9\ud55c\ub2e4. \ub610\ub294 \ub2e4\uc74c\uacfc \uac19\uc774 \ud2b9\uc815 \ub808\ud3ec\uc9c0\ud1a0\ub9ac\ub97c \uc9c1\uc811 \ucd94\uac00\ud560 \uc218 \uc788\ub2e4. \ubcf4\ub2e4 \uc790\uc138\ud55c \ub0b4\uc6a9\uc740 gradle\uc758 \ub808\ud3ec\uc9c0\ud1a0\ub9ac [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5,34],"tags":[186,394,402,399,401,395,396,397],"class_list":["post-2385","post","type-post","status-publish","format-standard","hentry","category-android","category-kotlin","tag-android-2","tag-build","tag-build-flavor","tag-build-script","tag-build-type","tag-build-gradle-kts","tag-396","tag-397"],"jetpack_featured_media_url":"","_links":{"self":[{"href":"http:\/\/batmask.net\/index.php\/wp-json\/wp\/v2\/posts\/2385","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/batmask.net\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/batmask.net\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/batmask.net\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/batmask.net\/index.php\/wp-json\/wp\/v2\/comments?post=2385"}],"version-history":[{"count":27,"href":"http:\/\/batmask.net\/index.php\/wp-json\/wp\/v2\/posts\/2385\/revisions"}],"predecessor-version":[{"id":2416,"href":"http:\/\/batmask.net\/index.php\/wp-json\/wp\/v2\/posts\/2385\/revisions\/2416"}],"wp:attachment":[{"href":"http:\/\/batmask.net\/index.php\/wp-json\/wp\/v2\/media?parent=2385"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/batmask.net\/index.php\/wp-json\/wp\/v2\/categories?post=2385"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/batmask.net\/index.php\/wp-json\/wp\/v2\/tags?post=2385"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}