{"id":46662,"date":"2024-05-04T22:07:04","date_gmt":"2024-05-04T13:07:04","guid":{"rendered":"https:\/\/www.charlezz.com\/?p=46662"},"modified":"2024-05-04T22:07:07","modified_gmt":"2024-05-04T13:07:07","slug":"%eb%a9%80%ed%8b%b0-%eb%aa%a8%eb%93%88-%ed%94%84%eb%a1%9c%ec%a0%9d%ed%8a%b8%ec%97%90%ec%84%9c-buildconfig%eb%a5%bc-%eb%8b%a8%ec%9d%bc%eb%a1%9c-%ea%b4%80%eb%a6%ac%ed%95%98%ea%b8%b0","status":"publish","type":"post","link":"https:\/\/charlezz.com\/?p=46662","title":{"rendered":"\uba40\ud2f0 \ubaa8\ub4c8 \ud504\ub85c\uc81d\ud2b8\uc5d0\uc11c BuildConfig\ub97c \ub2e8\uc77c\ub85c \uad00\ub9ac\ud558\uae30"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">BuildConfig\ub780?<\/h2>\n\n\n\n<p>Gradle\uc740 \ube4c\ub4dc \uc2dc BuildConfig \ud074\ub798\uc2a4\ub97c \uc0dd\uc131\ud558\uace0, \ud604\uc7ac \ube4c\ub4dc\uc5d0 \uad00\ud55c \uc815\ubcf4\ub97c \b\ucc38\uc870\ud560 \uc218 \uc788\ub2e4.&nbsp;<br>buildConfigField() \uba54\uc11c\ub4dc\ub97c Gradle \uc2a4\ud06c\ub9bd\ud2b8\uc5d0 \uc120\uc5b8\ud558\ub294 \uac83\uc73c\ub85c BuildConfig \ud074\ub798\uc2a4\uc5d0 \ucee4\uc2a4\ud140 \ud544\ub4dc\ub97c \ucd94\uac00\ud560 \uc218 \uc788\uc73c\uba70 \uc571 \ucf54\ub4dc\uc5d0\uc11c\uc758 \ud574\ub2f9 \uac12\uc5d0 \uc561\uc138\uc2a4\ud560 \uc218 \uc788\ub2e4. \ub9c8\ucc2c\uac00\uc9c0\ub85c, resValue()\ub85c \uc571 \ub9ac\uc18c\uc2a4 \uac12\uc744 \ucd94\uac00\ud560 \uc218 \uc788\ub2e4.&nbsp;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>android {\n  ...\n  buildFeatures { buildConfig true }\n  buildTypes {\n    release {\n      \/\/ release \ube4c\ub4dc\uc5d0\uc11c\ub9cc \ucc38\uc870\ub418\ub294 \uac12\ub4e4\uc744 \uc815\uc758\ud55c\ub2e4\n      buildConfigField(\"String\", \"BUILD_TIME\", \"\\\"${minutesSinceEpoch}\\\"\")\n      resValue(\"string\", \"build_time\", \"${minutesSinceEpoch}\")\n    }\n    debug {\n      \/\/ \uc99d\ubd84\ube4c\ub4dc\ub97c \uc704\ud574 \uc815\uc801\uc778 \uac12\ub4e4\ub85c \uc815\uc758\ud55c\ub2e4.\n      buildConfigField(\"String\", \"BUILD_TIME\", \"\\\"0\\\"\")\n      resValue(\"string\", \"build_time\", \"0\")\n    }\n  }\n}\n...<\/code><\/pre>\n\n\n\n<p>\uc571 \ucf54\ub4dc\uc5d0\uc11c \ub2e4\uc74c\uacfc \uac19\uc774 BuildConfig \uac12\uc5d0 \uc811\uadfc\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Log.i(TAG, BuildConfig.BUILD_TIME)\nLog.i(TAG, getString(R.string.build_time))<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\uba40\ud2f0\ubaa8\ub4c8 \ud504\ub85c\uc81d\ud2b8\uc5d0\uc11c \uc911\ubcf5 \uc0dd\uc131\ub418\ub294 BuildConfig<\/h2>\n\n\n\n<p>\ub2e4\uc74c\uacfc \uac19\uc774 app \ubaa8\ub4c8\uc5d0\uc11c BuildConfig\ub97c \uc0dd\uc131\ud558\uba74, \uc571\ubaa8\ub4c8\uc5d0\uc11c\ub294 BASE_URL\uacfc \uac19\uc740 \uac12\uc744 \ucc38\uc870 \ud560 \uc218 \uc788\uc9c0\ub9cc, \ud558\uc704 \ubaa8\ub4c8\uc5d0\uc11c\ub294 \uc774\ub97c \ucc38\uc870\ud560 \uc218 \uc5c6\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ :app \ubaa8\ub4c8\uc758 build.gradle\nandroid {\n\n  namespace 'com.charlezz.app'\n\n  buildFeatures { buildConfig true }\n\n  buildTypes {\n    stage {\n      buildConfigField \"String\", \"BASE_URL\", \"String.valueOf(\\\"https:\/\/stage.charlezz.com\\\")\" \n    }\n    dev {\n      buildConfigField \"String\", \"BASE_URL\", \"String.valueOf(\\\"https:\/\/dev.charlezz.com\\\")\" \n    }\n  }\n}<\/code><\/pre>\n\n\n\n<p>\uc774\ub7f0 \uacbd\uc6b0 \ud558\uc704\ubaa8\ub4c8\uc5d0\uc11c BASE_URL\uc744 \ucc38\uc870\ud558\uae30 \uc704\ud574 buildConfigField(..) \uc0c8\ub85c \uc815\uc758\ud55c\ub2e4\uba74, \uc911\ubcf5\ub41c \uac12\uc744 \uac16\ub294\ub2e4.<\/p>\n\n\n\n<p>\uc911\ubcf5\ub41c \uc120\uc5b8\uc744 \ud53c\ud558\uae30 \uc704\ud574 BuildConfig\ub97c \ubcc4\ub3c4\uc758 \ubaa8\ub4c8\uc744 \uc0dd\uc131\ud558, build.gradle\uc744 \ub2e4\uc74c\uacfc \uac19\uc774 \uc124\uc815\ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ :build_config \ubaa8\ub4c8\uc758 build.gradle\nandroid {\n\n  namespace \"com.charlezz.\bbuild_config\"\n\n  buildFeatures { buildConfig true }\n\n  buildTypes {\n    stage {\n      buildConfigField \"String\", \"BASE_URL\", \"String.valueOf(\\\"https:\/\/stage.charlezz.com\\\")\" \n    }\n    dev {\n      buildConfigField \"String\", \"BASE_URL\", \"String.valueOf(\\\"https:\/\/dev.charlezz.com\\\")\" \n    }\n  }\n\n  ...\n}<\/code><\/pre>\n\n\n\n<p>\uc774\uc81c \ub2e4\uc74c\uacfc \uac19\uc774 :app\ubaa8\ub4c8 \ubc0f \uae30\ud0c0 \ud558\uc704 \ubaa8\ub4c8\uc5d0\uc11c build_config \ubaa8\ub4c8\uc744 \ucc38\uc870\ud558\uba74 \ub41c\ub2e4.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"722\" height=\"302\" src=\"https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2024\/05\/charlezz.com-buildconfig-build-config.png\" alt=\"\" class=\"wp-image-46682\" srcset=\"https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2024\/05\/charlezz.com-buildconfig-build-config.png 722w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2024\/05\/charlezz.com-buildconfig-build-config-300x125.png 300w\" sizes=\"(max-width: 722px) 100vw, 722px\" \/><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ :app \ubaa8\ub4c8 \ubc0f \uae30\ud0c0 \ubaa8\ub4c8\uc5d0\uc11c build_config \ucc38\uc870 \ndependencies {\n  implementation project(\":build_config\")\n}<\/code><\/pre>\n\n\n\n<p>\uc9c0\uae08\uae4c\uc9c0 \ucee4\uc2a4\ud140 \ud544\ub4dc\ub97c \ud55c \uacf3\uc5d0 \uc120\uc5b8\ud558\uace0, \uc5ec\ub7ec \ubaa8\ub4c8\uc5d0\uc11c \ucc38\uc870\ud558\ub294 \ubc29\ubc95\uc5d0 \ub300\ud574 \uc54c\uc544\ubcf4\uc558\ub2e4.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">BuildConfig Stub \ubaa8\ub4c8\uc758 \ud544\uc694\uc131<\/h2>\n\n\n\n<p>\uc5ec\uae30\uae4c\uc9c0 \uc9c4\ud589\ud588\ub2e4\uba74, \uc911\ubcf5\ub418\ub294 BuildConfig \uc0dd\uc131\uc744 \ub9c9\uace0 \ud55c\uacf3\uc5d0\uc11c \ucee4\uc2a4\ud140 \ud544\ub4dc\ub97c \uad00\ub9ac\ud560 \uc218 \uc788\uc5c8\uc744 \uac83\uc774\ub2e4.<\/p>\n\n\n\n<p>\ud558\uc9c0\ub9cc \ud55c\uac00\uc9c0 \ubb38\uc81c\uc810\uc774 \uc788\ub2e4. \ubc14\ub85c :app \ubaa8\ub4c8 \uc774\uc678\uc758 \ubaa8\ub4c8\uc5d0 buildType \ubc0f productFlavors\uac00 \uc804\ud30c\ub41c\ub2e4\ub294 \uc810\uc774\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ :feature \ubaa8\ub4c8\uc758 build.gradle\nandroid {\n\n  namespace 'com.charlezz.feature'\n\n  buildTypes {\n<strong>    stage {} \n    dev {}<\/strong>\n  }\n  ...\n}<\/code><\/pre>\n\n\n\n<p>\uc774\ub97c \ud574\uacb0\ud558\uae30 \uc704\ud574\uc11c stub \ubaa8\ub4c8\uc744 \uc0dd\uc131\ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ :build_config_stub \ubaa8\ub4c8\uc758 build.gradle\nandroid {\n\n  \/\/ \uc8fc\uc758! namespace\ub294 build_config\uc640 \ub3d9\uc77c\ud558\uac8c\n  namespace \"com.charlezz.\bbuild_config\"\n\n  buildFeatures { buildConfig true }\n\n  defaultConfig {\n    buildConfigField \"String\", \"BASE_URL\", \"String.valueOf(\\\"https:\/\/charlezz.com\\\")\" \n  }\n\n  ...\n}<\/code><\/pre>\n\n\n\n<p>stub \ubaa8\ub4c8 \uc0dd\uc131 \ud6c4, app\ubaa8\ub4c8\uacfc \uae30\ud0c0 \ud558\uc704 \ubaa8\ub4c8\uc5d0\uc11c build.gradle\uc758 \uc758\uc874\uc131\uc744 \ub2e4\uc74c\uacfc \uac19\uc774 \uc124\uc815\ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ :app module \ndependencies { \n  implementation project(\":build_config\") \n}\n\n\/\/ \ud558\uc704 \ubaa8\ub4c8\ndependencies {\n  <strong>compileOnly<\/strong> project(\":build_config_stub\")\n}<\/code><\/pre>\n\n\n\n<p>\uc5ec\uae30\uc11c \uc911\uc694\ud55c \uc810\uc740 app \ubaa8\ub4c8\uc744 \uc81c\uc678\ud55c \ub098\uba38\uc9c0 \ubaa8\ub4c8\uc740 compileOnly \ud0a4\uc6cc\ub4dc\ub97c \uc368\uc57c \ud55c\ub2e4.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"722\" height=\"302\" src=\"https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2024\/05\/charlezz.com-buildconfig-build-config-stub-1.png\" alt=\"\" class=\"wp-image-46685\" srcset=\"https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2024\/05\/charlezz.com-buildconfig-build-config-stub-1.png 722w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2024\/05\/charlezz.com-buildconfig-build-config-stub-1-300x125.png 300w\" sizes=\"(max-width: 722px) 100vw, 722px\" \/><\/figure>\n\n\n\n<p>\uc5ec\uae30\uae4c\uc9c0 \uc9c4\ud589\ud588\ub2e4\uba74 :app \ubaa8\ub4c8 \ube4c\ub4dc\uc2dc\uc5d0 :feature \ubaa8\ub4c8\uc5d0 \ub300\ud55c \uc758\uc874\uc774 build_config\ub85c \ub300\uccb4\ub41c\ub2e4.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>BuildConfig\ub780? Gradle\uc740 \ube4c\ub4dc \uc2dc BuildConfig \ud074\ub798\uc2a4\ub97c \uc0dd\uc131\ud558\uace0, \ud604\uc7ac \ube4c\ub4dc\uc5d0 \uad00\ud55c \uc815\ubcf4\ub97c \b\ucc38\uc870\ud560 \uc218 \uc788\ub2e4.&nbsp;buildConfigField() \uba54\uc11c\ub4dc\ub97c Gradle \uc2a4\ud06c\ub9bd\ud2b8\uc5d0 \uc120\uc5b8\ud558\ub294 \uac83\uc73c\ub85c BuildConfig \ud074\ub798\uc2a4\uc5d0 \ucee4\uc2a4\ud140 \ud544\ub4dc\ub97c \ucd94\uac00\ud560 \uc218 \uc788\uc73c\uba70 \uc571 \ucf54\ub4dc\uc5d0\uc11c\uc758 \ud574\ub2f9 \uac12\uc5d0 \uc561\uc138\uc2a4\ud560 \uc218 \uc788\ub2e4. \ub9c8\ucc2c\uac00\uc9c0\ub85c, resValue()\ub85c \uc571 \ub9ac\uc18c\uc2a4 \uac12\uc744 \ucd94\uac00\ud560 \uc218 \uc788\ub2e4.&nbsp; \uc571 \ucf54\ub4dc\uc5d0\uc11c \ub2e4\uc74c\uacfc \uac19\uc774 BuildConfig \uac12\uc5d0 \uc811\uadfc\ud560 \uc218 \uc788\ub2e4. [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"inline_featured_image":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0},"categories":[16],"tags":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/posts\/46662"}],"collection":[{"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/charlezz.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=46662"}],"version-history":[{"count":4,"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/posts\/46662\/revisions"}],"predecessor-version":[{"id":46686,"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/posts\/46662\/revisions\/46686"}],"wp:attachment":[{"href":"https:\/\/charlezz.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=46662"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/charlezz.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=46662"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/charlezz.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=46662"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}