{"id":45356,"date":"2021-08-20T14:44:49","date_gmt":"2021-08-20T05:44:49","guid":{"rendered":"https:\/\/www.charlezz.com\/?p=45356"},"modified":"2021-08-20T14:44:49","modified_gmt":"2021-08-20T05:44:49","slug":"%ed%94%8c%eb%a0%88%ec%9d%b4-%ec%8a%a4%ed%86%a0%ec%96%b4-%ec%bd%98%ec%86%94%ec%97%86%ec%9d%b4-dfm%ec%9d%84-%eb%a1%9c%ec%bb%ac%ec%97%90%ec%84%9c-%ed%85%8c%ec%8a%a4%ed%8a%b8%ed%95%98%ea%b8%b0","status":"publish","type":"post","link":"https:\/\/charlezz.com\/?p=45356","title":{"rendered":"\ud50c\ub808\uc774 \uc2a4\ud1a0\uc5b4 \ucf58\uc194\uc5c6\uc774 DFM\uc744 \ub85c\uceec\uc5d0\uc11c \ud14c\uc2a4\ud2b8\ud558\uae30"},"content":{"rendered":"<h1><a href=\"https:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2021\/08\/www.charlezz.com-dfm-0-zlucmxj-vy9d9rx5.gif\"><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2021\/08\/www.charlezz.com-dfm-0-zlucmxj-vy9d9rx5.gif\" alt=\"\" width=\"960\" height=\"540\" class=\"alignnone size-full wp-image-45361\" \/><\/a><\/h1>\n<h1>DFM\uc774\ub780?<\/h1>\n<p>DFM(Dynamic Feature Module)\uc740 \uae30\ubcf8 \ubaa8\ub4c8 \uc571(APK)\ub85c \ubd80\ud130 \ud2b9\uc815 \uae30\ub2a5\uc774\ub098 \ub9ac\uc18c\uc2a4\ub97c \ubd84\ub9ac\ud558\uc5ec \ucd94\ud6c4\uc5d0 <a href=\"https:\/\/developer.android.com\/guide\/playcore\/feature-delivery?hl=ko\">Play Feature Delivery<\/a>\ub97c \ud1b5\ud574 \ub2e4\uc6b4\ub85c\ub4dc\ud558\uace0 \uc124\uce58 \ud560 \uc218 \uc788\ub2e4.<\/p>\n<div id=\"attachment_45357\" style=\"width: 573px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2021\/08\/www.charlezz.com-dfm-progress-bar.png\"><img aria-describedby=\"caption-attachment-45357\" decoding=\"async\" loading=\"lazy\" src=\"https:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2021\/08\/www.charlezz.com-dfm-progress-bar-563x1024.png\" alt=\"\" width=\"563\" height=\"1024\" class=\"wp-image-45357 size-large\" srcset=\"https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2021\/08\/www.charlezz.com-dfm-progress-bar-563x1024.png 563w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2021\/08\/www.charlezz.com-dfm-progress-bar-165x300.png 165w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2021\/08\/www.charlezz.com-dfm-progress-bar-768x1396.png 768w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2021\/08\/www.charlezz.com-dfm-progress-bar.png 1100w\" sizes=\"(max-width: 563px) 100vw, 563px\" \/><\/a><\/p>\n<p id=\"caption-attachment-45357\" class=\"wp-caption-text\">\uc571 \uc124\uce58\ud6c4 \ucd94\uac00\uc801\uc778 \uae30\ub2a5 \uc0ac\uc6a9\uc744 \uc704\ud574, DFM(\ubaa8\ub4c8)\uc744 \ub2e4\uc6b4\ub85c\ub4dc \ud558\ub294 \ubaa8\uc2b5<\/p>\n<\/div>\n<p>\uc77c\ubc18\uc801\uc778 DFM\uc758 \ub2e4\uc6b4\ub85c\ub4dc \uacbd\ub85c\ub294 Play store console\uc5d0 \uc5c5\ub85c\ub4dc\ud55c aab \ud30c\uc77c\ub85c \ubd80\ud130 \uc0dd\uc131 \ub41c \ubcc4\ub3c4\uc758 apk\ub85c \uc9c4\ud589\ub418\uae30 \ub54c\ubb38\uc5d0, \uc571\ubc88\ub4e4\ub85c \ube4c\ub4dc\ud55c aab \ud30c\uc77c\uc744 \ucf58\uc194\uc5d0 \uc5c5\ub85c\ub4dc\ud574\uc57c \ud55c\ub2e4.<\/p>\n<p>\ud558\uc9c0\ub9cc \uac1c\ubc1c\uc2dc\uc5d0 \ub2e4\uc6b4\ub85c\ub4dc, \uc9c4\ud589\uc728 \ud45c\uc2dc, \uc2e4\ud328 \ucc98\ub9ac \ub4f1\uc744 \ud14c\uc2a4\ud2b8\ud558\uae30 \uc704\ud574 \ucf58\uc194\uc5d0 \ub9e4\ubc88 aab\ub97c \uc0c8\ub85c \uc5c5\ub85c\ub4dc \ud560\uc218\ub294 \uc5c6\uae30\uc5d0 \ubcc4\ub3c4\uc758 <a href=\"https:\/\/developer.android.google.cn\/guide\/playcore\/feature-delivery\/on-demand?hl=ko#local-testing\">\ubaa8\ub4c8 \uc124\uce58 \ub85c\uceec \ud14c\uc2a4\ud2b8<\/a> \ubc29\ubc95\uc744 \uc81c\uacf5\ud55c\ub2e4.<\/p>\n<h2>\ub85c\uceec \ud14c\uc2a4\ud2b8<\/h2>\n<p>1. \ucd5c\uc2e0 \ubc84\uc804\uc758 bundletool\uc774 \ud544\uc694\ud558\ub2e4. \uc544\ub798\uc758 \ub9c1\ud06c\uc5d0\uc11c \ucd5c\uc2e0 \ubc84\uc804\uc744 \ub2e4\uc6b4\ubc1b\uc790.<\/p>\n<ul>\n<li><a href=\"https:\/\/github.com\/google\/bundletool\/releases\">\ub2e4\uc6b4\ub85c\ub4dc<\/a><\/li>\n<\/ul>\n<p>2. \ud3b8\uc758\ub97c \uc704\ud574 \ub2e4\uc6b4\ubc1b\uc740 \ud30c\uc77c\uc758 \uc774\ub984\uc744 \uc801\ub2f9\ud788 \ubcc0\uacbd\ud558\uc790.<\/p>\n<pre class=\"\">bundletool-all-1.8.0.jar -&gt; bundletool.jar<\/pre>\n<p>3. bundletool.jar\ub97c \uc801\ub2f9\ud55c \uacbd\ub85c\ub85c \uc774\ub3d9\ud55c\ub2e4. \ub098\uc758 \uacbd\uc6b0 \uc548\ub4dc\ub85c\uc774\ub4dc sdk \ub514\ub809\ud1a0\ub9ac\ub0b4 tools\ub85c \uc774\ub3d9\uc2dc\ucf30\ub2e4.<\/p>\n<p><a href=\"https:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2021\/08\/www.charlezz.com-dfm-screenshot.png\"><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2021\/08\/www.charlezz.com-dfm-screenshot.png\" alt=\"\" width=\"962\" height=\"874\" class=\"alignnone wp-image-45358 size-full\" srcset=\"https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2021\/08\/www.charlezz.com-dfm-screenshot.png 962w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2021\/08\/www.charlezz.com-dfm-screenshot-300x273.png 300w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2021\/08\/www.charlezz.com-dfm-screenshot-768x698.png 768w\" sizes=\"(max-width: 962px) 100vw, 962px\" \/><\/a><\/p>\n<p>4. .bash_profile\uc5d0 tools \uacbd\ub85c\ub97c export \ud574\uc11c \ud130\ubbf8\ub110\uc5d0\uc11c \uc778\uc9c0 \ud560 \uc218 \uc788\ub3c4\ub85d \ud55c\ub2e4.<\/p>\n<pre class=\"\">export PATH=${PATH}:\/Users\/charles\/Library\/Android\/sdk\/tools<\/pre>\n<p>5. \uc774\uc81c \ud130\ubbf8\ub110\uc5d0\uc11c java -jar bundletool.jar \ub97c \uc785\ub825\ud55c\ub2e4.\u3137<a href=\"https:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2021\/08\/www.charlezz.com-dfm-screenshot-1.png\"><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2021\/08\/www.charlezz.com-dfm-screenshot-1.png\" alt=\"\" width=\"1928\" height=\"1024\" class=\"alignnone size-full wp-image-45359\" srcset=\"https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2021\/08\/www.charlezz.com-dfm-screenshot-1.png 1928w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2021\/08\/www.charlezz.com-dfm-screenshot-1-300x159.png 300w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2021\/08\/www.charlezz.com-dfm-screenshot-1-768x408.png 768w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2021\/08\/www.charlezz.com-dfm-screenshot-1-1024x544.png 1024w\" sizes=\"(max-width: 1928px) 100vw, 1928px\" \/><\/a><\/p>\n<p>\ub300\ucda9 \uc774\ub7f0\uc2dd\uc73c\ub85c \ub098\uc654\ub2e4\uba74 \uc131\uacf5.<\/p>\n<p>Error: Unable to access jarfile bundletool.jar \uc774\ub77c\uace0 \uba54\uc2dc\uc9c0\uac00 \ub728\uba74, chmod \uba85\ub839\uc73c\ub85c \ud30c\uc77c \uc811\uadfc \uad8c\ud55c\uc744 \ubcc0\uacbd\ud558\ub3c4\ub85d \ud558\uc790.<\/p>\n<p>6. \uc774\uc81c bundletool\uc744 \uc774\uc6a9\ud558\uae30 \uc704\ud55c \uc900\ube44\ub294 \ub05d\ub0ac\uace0, DFM\uc774 \ud3ec\ud568\ub41c \ud504\ub85c\uc81d\ud2b8\ub97c \uc548\ub4dc\ub85c\uc774\ub4dc \uc2a4\ud29c\ub514\uc624\uc5d0\uc11c bundle\ub85c \ube4c\ub4dc\ud574\uc57c \ud55c\ub2e4. \ud130\ubbf8\ub110\uc5d0 \ub2e4\uc74c\uacfc \uac19\uc774 \uc785\ub825\ud560 \uc218 \uc788\ub2e4.<\/p>\n<pre class=\"\">.\/gradlew bundleDebug<\/pre>\n<p>\uac01\uc790 \uc790\uc2e0\uc758 \ud504\ub85c\uc81d\ud2b8 \ube4c\ub4dc \ud0c0\uc785 \ub610\ub294 flavor\uc5d0 \ub9de\uac8c \ud0dc\uc2a4\ud06c\uba85\uc744 \uc785\ub825\ud558\uc790.<\/p>\n<p>\uc548\ub4dc\ub85c\uc774\ub4dc \uc2a4\ud29c\ub514\uc624\uc758 \ud130\ubbf8\ub110\uc5d0 <strong>.\/gradlew\u00a0<\/strong>\uc744 \uc785\ub825\ud558\uba74 \ub2e4\uc74c\uacfc \uac19\uc740 \ud31d\uc5c5\uc744 \ubcfc \uc218 \uc788\ub2e4.<\/p>\n<p><a href=\"https:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2021\/08\/www.charlezz.com-dfm-screenshot-2.png\"><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2021\/08\/www.charlezz.com-dfm-screenshot-2.png\" alt=\"\" width=\"3112\" height=\"100\" class=\"alignnone size-full wp-image-45360\" srcset=\"https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2021\/08\/www.charlezz.com-dfm-screenshot-2.png 3112w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2021\/08\/www.charlezz.com-dfm-screenshot-2-300x10.png 300w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2021\/08\/www.charlezz.com-dfm-screenshot-2-768x25.png 768w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2021\/08\/www.charlezz.com-dfm-screenshot-2-1024x33.png 1024w\" sizes=\"(max-width: 3112px) 100vw, 3112px\" \/><\/a><\/p>\n<p>\uc548\ub4dc\ub85c\uc774\ub4dc \uc2a4\ud29c\ub514\uc624(IDE)\uc5d0\uc11c \uad00\ub828\ub41c \uae30\ub2a5\uc744 \uc81c\uacf5\ud558\ub2c8 \ud130\ubbf8\ub110\ub300\uc2e0 \uc4f0\ub77c\ub294 \ub0b4\uc6a9\uac19\ub2e4. <br \/>\ncmd+return\uc744 \uc785\ub825\ud558\uba74 \ube4c\ub4dc\ud0ed\uc5d0 \uc774\uc058\uac8c \uc815\ub9ac\ub418\uc5b4 \ub098\uc624\ub2c8 \uc774\uc6a9\ud574\ubcf4\uc790.<\/p>\n<p>7. \ube4c\ub4dc\uac00 \uc644\ub8cc\ub418\uc5c8\ub2e4\uba74 aab\ud30c\uc77c\uc774 \ub098\uc654\uc744\ud150\ub370, \uc77c\ubc18\uc801\uc73c\ub85c app\ubaa8\ub4c8\uc758 build\/outputs\/bundle\uc5d0 \ud3ec\ud568\ub41c \ub514\ub809\ud1a0\ub9ac\uc5d0\uc11c aab\ub97c \ucc3e\uc744 \uc218 \uc788\uc744 \uac83\uc774\ub2e4.<\/p>\n<p>8. \uc774\uc81c bundletool\uc744 \uc0ac\uc6a9\ud558\uc5ec \ubaa8\ub4e0 \uae30\uae30 \uad6c\uc131\uc744 \uc704\ud55c APK\uc138\ud2b8\ub97c \uc0dd\uc131\ud560 \uc218 \uc788\ub2e4.<\/p>\n<pre class=\"\">java -jar bundletool build-apks --local-testing --bundle ${aab\uacbd\ub85c} --ouput ${\uc800\uc7a5\ud560 apks \uacbd\ub85c}<\/pre>\n<p>9. \uc800\uc7a5\ub41c apks\ud30c\uc77c\uc744 \uc774\uc81c \ud14c\uc2a4\ud2b8\ud560 \uae30\uae30\uc5d0 \ubc00\uc5b4 \ub123\uc73c\uba74 \ub05d<\/p>\n<pre class=\"\">java -jar bundletool install-apks --apks ${apks \uacbd\ub85c}<\/pre>\n<p>10. \uc774\uc81c \uc571\uc744 \uc2e4\ud589\ud574 \ubcf4\uba74 DFM\uc774 \uc124\uce58\ub418\uc9c0 \uc54a\uc740 \uc0c1\ud0dc\uc774\uba70, \ud50c\ub808\uc774 \uc2a4\ud1a0\uc5b4 \ucf58\uc194\uc5c6\uc774\ub3c4 DFM \uc8fc\ubb38\ud615 \uc124\uce58\ub97c \ud14c\uc2a4\ud2b8 \ud574\ubcfc \uc218 \uc788\ub2e4. (\ub05d)<\/p>\n","protected":false},"excerpt":{"rendered":"<p>DFM\uc774\ub780? DFM(Dynamic Feature Module)\uc740 \uae30\ubcf8 \ubaa8\ub4c8 \uc571(APK)\ub85c \ubd80\ud130 \ud2b9\uc815 \uae30\ub2a5\uc774\ub098 \ub9ac\uc18c\uc2a4\ub97c \ubd84\ub9ac\ud558\uc5ec \ucd94\ud6c4\uc5d0 Play Feature Delivery\ub97c \ud1b5\ud574 \ub2e4\uc6b4\ub85c\ub4dc\ud558\uace0 \uc124\uce58 \ud560 \uc218 \uc788\ub2e4. \uc77c\ubc18\uc801\uc778 DFM\uc758 \ub2e4\uc6b4\ub85c\ub4dc \uacbd\ub85c\ub294 Play store console\uc5d0 \uc5c5\ub85c\ub4dc\ud55c aab \ud30c\uc77c\ub85c \ubd80\ud130 \uc0dd\uc131 \ub41c \ubcc4\ub3c4\uc758 apk\ub85c \uc9c4\ud589\ub418\uae30 \ub54c\ubb38\uc5d0, \uc571\ubc88\ub4e4\ub85c \ube4c\ub4dc\ud55c aab \ud30c\uc77c\uc744 \ucf58\uc194\uc5d0 \uc5c5\ub85c\ub4dc\ud574\uc57c \ud55c\ub2e4. \ud558\uc9c0\ub9cc \uac1c\ubc1c\uc2dc\uc5d0 \ub2e4\uc6b4\ub85c\ub4dc, \uc9c4\ud589\uc728 [&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\/45356"}],"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=45356"}],"version-history":[{"count":1,"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/posts\/45356\/revisions"}],"predecessor-version":[{"id":45362,"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/posts\/45356\/revisions\/45362"}],"wp:attachment":[{"href":"https:\/\/charlezz.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=45356"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/charlezz.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=45356"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/charlezz.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=45356"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}