{"id":1218,"date":"2019-05-10T00:37:14","date_gmt":"2019-05-09T15:37:14","guid":{"rendered":"https:\/\/www.charlezz.com\/?p=1218"},"modified":"2019-05-10T00:37:14","modified_gmt":"2019-05-09T15:37:14","slug":"jetpack%ec%97%90-%ec%83%88%eb%a1%ad%ea%b2%8c-%ec%b6%94%ea%b0%80%eb%90%9c-%ec%a0%902019-05-08","status":"publish","type":"post","link":"https:\/\/charlezz.com\/?p=1218","title":{"rendered":"Jetpack\uc5d0 \uc0c8\ub86d\uac8c \ucd94\uac00\ub41c \uc810(2019.05.08)"},"content":{"rendered":"<h1>CameraX(\uc54c\ud30c\ubc84\uc804)<\/h1>\n<p>\uce74\uba54\ub77c \uad00\ub828 \uc571 \uac1c\ubc1c\uc740 \uc5b4\ub835\uc2b5\ub2c8\ub2e4. \ub610\ud55c API21(\ub864\ub9ac\ud31d)\uc744 \uae30\uc810\uc73c\ub85c Camera \uc640 \uc644\uc804\ud788 \ub2e4\ub978 Camera2 API\ub85c \ubd84\uae30 \ub418\uc5b4 \uac1c\ubc1c\uc790\ub97c \ube44\uba85\uc9c0\ub974\uac8c \ub9cc\ub4ed\ub2c8\ub2e4. \uc0c8\ub85c\uc6b4 CameraX \ub77c\uc774\ube0c\ub7ec\ub9ac\ub974 \uc774\uc6a9\ud558\uba74 \uae30\ubcf8 \uc801\uc778 \ub3d9\uc791\uc5d0 \ub300\ud55c \uac71\uc815\uc5c6\uc774 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc744 \uac1c\ubc1c \ud560 \uc218 \uc788\uac8c \ub41c\ub2e4\uace0 \ud569\ub2c8\ub2e4.\u00a0<\/p>\n<p><iframe loading=\"lazy\" width=\"594\" height=\"315\" src=\"https:\/\/www.youtube.com\/embed\/QYkTXJ2TuiA\" frameborder=\"0\" allow=\"accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"allowfullscreen\"><\/iframe><\/p>\n<h1>\ucf54\ub8e8\ud2f4\uacfc \ud568\uaed8 \ud558\ub294 LiveData \uadf8\ub9ac\uace0 Lifecycles(\uc54c\ud30c\ubc84\uc804)<\/h1>\n<p><span>\ucf54\ub8e8\ud2f4\uc744 \uc774\uc6a9\ud558\uc5ec \ub3d9\uc2dc\uc131\uc744 \uac00\uc9c4 \uc791\uc5c5\uc744 \ucc98\ub9ac\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.\u00a0<\/span><a href=\"http:\/\/d.android.com\/topic\/libraries\/architecture\/coroutines\"><span>Lifecycle &amp; LiveData KTX\ub97c \uc0ac\uc6a9<\/span><\/a><span>\u00a0\ud558\uba74\u00a0<a href=\"http:\/\/d.android.com\/topic\/libraries\/architecture\/coroutines\">\uc218\uba85<\/a>\u00a0\uc8fc\uae30\ub97c \uc778\uc2dd\ud558\ub294 Kotlin \ucf54\ub8e8\ud2f4\uc744 \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. LiveData \ube4c\ub354\ub97c \uc774\uc6a9\ud574 \uac04\ub2e8\ud55c \ube44\ub3d9\uae30 \uccb4\uc774\ub2dd\uc744 \ud560\uc218 \uc788\uac8c \ub429\ub2c8\ub2e4.<\/span><span><\/span><\/p>\n<h1>Benchmark(\uc54c\ud30c\ubc84\uc804)<\/h1>\n<p><a href=\"http:\/\/d.android.com\/benchmark\"><span><img decoding=\"async\" src=\"https:\/\/developer.android.com\/studio\/images\/profile\/benchmark-icon.png\" alt=\"\" width=\"200\" itemprop=\"image\" \/><\/span><\/a><\/p>\n<p><a href=\"http:\/\/d.android.com\/benchmark\"><span>\ubca4\uce58 \ub9c8\ud06c<\/span><\/a><span>\u00a0\ub77c\uc774\ube0c\ub7ec\ub9ac\uac00 \ucf54\ud2c0\ub9b0\uc774\uac74, \uc790\ubc14\uc774\uac74, \ub124\uc774\ud2f0\ube0c \ucf54\ub4dc\uc774\uac74 \uc5b8\uc5b4\uc640 \uc0c1\uad00\uc5c6\uc774 \uc560\ud50c\ub9ac\ucf00\uc774\uc158 \ucf54\ub4dc\ub97c \ube60\ub974\uac8c \ubca4\uce58\ub9c8\ud06c \ud569\ub2c8\ub2e4. \uc774\uc81c Android Studio\uc758 \uac1c\ubc1c \ud658\uacbd\uc5d0\uc11c \ub370\uc774\ud130\ubca0\uc774\uc2a4 \ucffc\ub9ac\ub97c \uc27d\uac8c \uce21\uc815\ud558\uace0, \uc778\ud50c\ub808\uc774\uc158 \ub610\ub294 RecyclerView \uc2a4\ud06c\ub864\uc744 \uc27d\uac8c \ud655\uc778\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.\u00a0<\/span><\/p>\n<h1>Security(\uc54c\ud30c\ubc84\uc804)<\/h1>\n<p><span><span class=\"\">\uc0c8\ub85c\uc6b4\u00a0<\/span><\/span><a href=\"http:\/\/d.android.com\/topic\/security\/data\"><span><span class=\"\">Security<\/span><\/span><\/a><span><span class=\"\">\u00a0\ub77c\uc774\ube0c\ub7ec\ub9ac\u00a0<\/span><span class=\"\">\ub294 \uc751\uc6a9 \ud504\ub85c\uadf8\ub7a8\uc758 \ub370\uc774\ud130 \ubcf4\uc548\uc744 \uadf9\ub300\ud654\ud558\uae30\u00a0<\/span><span class=\"\">\uc704\ud574\u00a0<\/span><\/span><a href=\"http:\/\/d.android.com\/topic\/security\/best-practices\"><span><span class=\"\">\ucd5c\uc0c1\uc758 \ubcf4\uc548 \ubc29\ubc95<\/span><\/span><\/a><span><span class=\"\">\u00a0\uc744\u00a0<\/span><span class=\"\">\uad6c\ud604\u00a0<\/span><span class=\"\">\ud569\ub2c8\ub2e4.\u00a0<\/span>\uc740\ud589 \uc5c5\ubb34 \ubc0f \ucc44\ud305\uacfc \uac19\uc740 \uc18c\ube44\uc790 \uc751\uc6a9 \ud504\ub85c\uadf8\ub7a8\uc758 \uc131\ub2a5\uacfc \uc554\ud638\ud654\uc758 \uade0\ud615\uc744 \ub9de\ucd94\ub294 \uac15\ub825\ud55c \ubcf4\uc548 \uae30\ub2a5\uc744 \uc81c\uacf5\ud569\ub2c8\ub2e4.\u00a0<span class=\"\">\ub610\ud55c \uc0ac\uc6a9\uc790\uac00\uc788\ub294 \ud558\ub4dc\uc6e8\uc5b4 \uae30\ubc18 \ud0a4 \uc800\uc7a5\uc18c\uac00 \ud544\uc694\ud558\uace0 \ud0a4 \uc0dd\uc131 \ubc0f \uc720\ud6a8\uc131 \uac80\uc0ac\ub97c \ud3ec\ud568\ud55c \ub9ce\uc740 \uc791\uc5c5\uc744 \ub2e8\uc21c\ud654\ud558\ub294 \uc751\uc6a9 \ud504\ub85c\uadf8\ub7a8\uc5d0 \ucd5c\ub300 \uc218\uc900\uc758 \ubcf4\uc548\uc744 \uc81c\uacf5\ud569\ub2c8\ub2e4.<\/span><\/span><\/p>\n<h1>SavedState\uac00 \uc788\ub294 ViewModel(\uc54c\ud30c\ubc84\uc804)<\/h1>\n<p>ViewModel\uc744 \uc0ac\uc6a9\ud558\uba74 configuration\uc774 \ubcc0\uacbd\ub418\uc5b4\ub3c4 UI\ub370\uc774\ud130\ub97c \uc27d\uac8c \uc800\uc7a5\ud560 \uc218 \uc788\uc5c8\uc2b5\ub2c8\ub2e4. \ud504\ub85c\uc138\uc2a4\uac00 \uc885\ub8cc\ub418\uba74 \uc571 \uc0c1\ud0dc\ub97c \uc800\uc7a5\ud558\uc9c0 \ubabb\ud588\uace0 \ub9ce\uc740 \uc0ac\uc6a9\uc790\uac00 ViewModel\uacfc \ud568\uaed8 SavedInstanceState\uc5d0 \uc758\uc874\ud588\uc2b5\ub2c8\ub2e4. \uc774\uc81c SavedState \ubaa8\ub4c8\uc774 \uc788\ub294 ViewMode\uc744 \uc0ac\uc6a9\ud558\uc5ec ViewModel\uc5d0\uc11c \ubc14\ub85c UI\ub370\uc774\ud130 \ubc0f \uc571 \uc0c1\ud0dc\ub97c \uc800\uc7a5 \ud560 \uc218 \uc788\uac8c \ub429\ub2c8\ub2e4.<\/p>\n<h1>ViewPager2(\uc54c\ud30c\ubc84\uc804)<\/h1>\n<p>RecyclerView\uc640 SnapHelper\ub97c \uc774\uc6a9\ud55c \ucc28\uc138\ub300 ViewPager\uc785\ub2c8\ub2e4. \uc138\ub85c\ubaa8\ub4dc, RTL\ub808\uc774\uc544\uc6c3 \ub4f1\uc744 \uc9c0\uc6d0\ud569\ub2c8\ub2e4. \uc774\uc804 <a href=\"https:\/\/www.charlezz.com\/?p=1037\">\ud3ec\uc2a4\ud2b8<\/a>\ub97c \ucc38\uace0\ud574\uc8fc\uc138\uc694.<\/p>\n<h1>ConstraintLayout 2.0(\ubca0\ud0c0\ubc84\uc804)<\/h1>\n<p><img decoding=\"async\" src=\"https:\/\/developer.android.com\/images\/training\/constraint-layout\/motion-simple.gif\" width=\"500px\" \/><\/p>\n<p><span>ConstraintLayout 2.0\uc740 \ud5ec\ud37c \ud074\ub798\uc2a4\ub97c \ucd94\uac00\ud558\uc5ec \uc0c8\ub85c\uc6b4 \ucd5c\uc801\ud654\uc640 \ub808\uc774\uc544\uc6c3 \uc0ac\uc6a9\uc790 \uc815\uc758\uc758 \uc0c8\ub85c\uc6b4 \ubc29\uc2dd\uc744 \uc81c\uc2dc\ud569\ub2c8\ub2e4.\u00a0ConstraintLayout 2.0\uc758 \uc77c\ubd80\uc778\u00a0<\/span><a href=\"https:\/\/developer.android.com\/training\/constraint-layout\/motion-layout\"><span>MotionLayout<\/span><\/a><span>\u00a0\uc740 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc5d0\uc11c \ubaa8\uc158 \ubc0f \uc704\uc82f \uc560\ub2c8\uba54\uc774\uc158\uc744 \uc190\uc27d\uac8c \uad00\ub9ac \ud560 \uc218\uc788\ub294 \ubc29\ubc95\uc744 \uc81c\uacf5\ud569\ub2c8\ub2e4.\u00a0\ub808\uc774\uc544\uc6c3 \uc0ac\uc774\uc758 \uc804\ud658\uacfc \uc18d\uc131 \uc560\ub2c8\uba54\uc774\uc158\uc744 \uc27d\uac8c \uad6c\ud604 \ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.\u00a0MotionLayout\uc740 XML\ub85c\ub9cc \uad6c\ud604\uac00\ub2a5\ud558\uba70, \uc790\ubc14 \ubc0f \ucf54\ud2c0\ub9b0 \ucf54\ub4dc\ub97c \uc791\uc131\ud558\uc9c0 \uc54a\uace0\ub3c4 \ubcf5\uc7a1\ud55c \ud654\uba74\uc804\ud658\uc744 \uad6c\ud604 \ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. <a href=\"https:\/\/www.charlezz.com\/?p=717\">\ubaa8\uc158\ub808\uc774\uc544\uc6c3\uc5d0 \ub300\ud55c \uc774\uc804 \ud3ec\uc2a4\ud2b8<\/a>\ub97c \ucc38\uace0\ud574\ubcf4\uc138\uc694.<\/span><\/p>\n<h1><span>Biometrics Prompt(\ubca0\ud0c0\ubc84\uc804)<\/span><\/h1>\n<p><span><img decoding=\"async\" src=\"https:\/\/developer.android.com\/images\/biometric\/biometric-dialog.svg\" alt=\"Phone showing a\n  dialog that includes a biometric credential icon\" width=\"200\" \/><\/span><\/p>\n<p><span>\uc0ac\uc6a9\uc790\ub294 \ud734\ub300 \uc804\ud654\uc758 \uc0dd\uccb4 \uc778\uc99d \uc815\ubcf4\uc5d0 \uc775\uc219\ud558\uc9c0\ub9cc \uc571\uc5d0 \uc0dd\uccb4 \uc778\uc2dd \ub85c\uadf8\uc778\uc774 \ud544\uc694\ud55c \uacbd\uc6b0 \uc0ac\uc6a9\uc790\uc5d0\uac8c \uc77c\uad00\ub418\uace0 \uc548\uc804\ud558\uac8c \uc778\uc99d \uc815\ubcf4\ub97c \uc785\ub825\ud558\ub294 \uac83\uc774 \uc911\uc694\ud569\ub2c8\ub2e4.\u00a0<\/span><a href=\"http:\/\/d.android.com\/topic\/security\/best-practices#ask-for-credentials\"><span>Biometrics Prompt \ub77c\uc774\ube0c\ub7ec\ub9ac\ub294<\/span><\/a><span>\u00a0\uc0ac\uc6a9\uc790\uc5d0\uac8c \uc2e0\ub8b0\ud560 \uc218\uc788\ub294 \uacbd\ud5d8\uc744 \uc81c\uacf5\ud558\ub294 \uac04\ub2e8\ud55c \uc2dc\uc2a4\ud15c \ud504\ub86c\ud504\ud2b8\ub97c \uc81c\uacf5\ud569\ub2c8\ub2e4.<\/span><\/p>\n<h1>Enterprise(\ubca0\ud0c0\ubc84\uc804)<\/h1>\n<p><a href=\"https:\/\/developer.android.com\/jetpack\/androidx\/releases\/enterprise\"><span>Jetpack Enterprise \ub77c\uc774\ube0c\ub7ec\ub9ac\ub97c<\/span><\/a><span>\u00a0\uc0ac\uc6a9\ud558\uba74\u00a0\uad00\ub9ac\ub418\ub294 \uc5d4\ud130\ud504\ub77c\uc774\uc988 \uc751\uc6a9 \ud504\ub85c\uadf8\ub7a8\uc740 \uad00\ub9ac\ub418\ub294 \uad6c\uc131\uacfc\uc758 \ud558\uc704 \ud638\ud658\uc131\uc744 \ud65c\uc6a9\ud558\uba74\uc11c \ud0a4\uac00\uc788\ub294 \uc751\uc6a9 \ud504\ub85c\uadf8\ub7a8 \uc0c1\ud0dc\uc758 \ud615\ud0dc\ub85c \ud53c\ub4dc\ubc31\uc744 \uc5d4\ud130\ud504\ub77c\uc774\uc988 \ubaa8\ube4c\ub9ac\ud2f0 \uad00\ub9ac \uacf5\uae09\uc790\uc5d0\uac8c \ub2e4\uc2dc \ubcf4\ub0bc \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/span><\/p>\n<h1>Android for Cars(\ubca0\ud0c0\ubc84\uc804)<\/h1>\n<p><a href=\"http:\/\/d.android.com\/cars\"><span>\uc548\ub4dc\ub85c\uc774\ub4dc \uc790\ub3d9\ucc28\uc5d0 \ub300\ud55c<\/span><\/a><span>\u00a0\ub77c\uc774\ube0c\ub7ec\ub9ac\ub97c \ud1b5\ud574 \uc790\ub3d9\uc73c\ub85c \uc548\ub4dc\ub85c\uc774\ub4dc \uc790\ub3d9\ucc28 OS\uac00 \uc7a5\ucc29 \ub41c \ucc28\ub7c9\uc5d0 \ucc28\ub7c9\uc758 \uc778\ud3ec\ud14c\uc778\uba3c\ud2b8 \uc2dc\uc2a4\ud15c\uc5d0 \uc124\uce58\ub418\ub294 \uc571 \ub4dc\ub77c\uc774\ubc84\uc5d0 \ucd5c\uc801\ud654\ub41c \ubc84\uc804\uc744 \uc81c\uacf5 \ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.\u00a0\ub610\ud55c Android Auto \uc571\uc73c\ub85c \uc571\uc744 \uc0ac\uc6a9\ud558\uc5ec \uc5b8\uc81c\ub4e0\uc9c0 \uae30\uae30\uc5d0 \ub4dc\ub77c\uc774\ubc84 \ucd5c\uc801\ud654 \ubc84\uc804\uc744 \uc81c\uacf5 \ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/span><\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>CameraX(\uc54c\ud30c\ubc84\uc804) \uce74\uba54\ub77c \uad00\ub828 \uc571 \uac1c\ubc1c\uc740 \uc5b4\ub835\uc2b5\ub2c8\ub2e4. \ub610\ud55c API21(\ub864\ub9ac\ud31d)\uc744 \uae30\uc810\uc73c\ub85c Camera \uc640 \uc644\uc804\ud788 \ub2e4\ub978 Camera2 API\ub85c \ubd84\uae30 \ub418\uc5b4 \uac1c\ubc1c\uc790\ub97c \ube44\uba85\uc9c0\ub974\uac8c \ub9cc\ub4ed\ub2c8\ub2e4. \uc0c8\ub85c\uc6b4 CameraX \ub77c\uc774\ube0c\ub7ec\ub9ac\ub974 \uc774\uc6a9\ud558\uba74 \uae30\ubcf8 \uc801\uc778 \ub3d9\uc791\uc5d0 \ub300\ud55c \uac71\uc815\uc5c6\uc774 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc744 \uac1c\ubc1c \ud560 \uc218 \uc788\uac8c \ub41c\ub2e4\uace0 \ud569\ub2c8\ub2e4.\u00a0 \ucf54\ub8e8\ud2f4\uacfc \ud568\uaed8 \ud558\ub294 LiveData \uadf8\ub9ac\uace0 Lifecycles(\uc54c\ud30c\ubc84\uc804) \ucf54\ub8e8\ud2f4\uc744 \uc774\uc6a9\ud558\uc5ec \ub3d9\uc2dc\uc131\uc744 \uac00\uc9c4 \uc791\uc5c5\uc744 \ucc98\ub9ac\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.\u00a0Lifecycle [&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\/1218"}],"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=1218"}],"version-history":[{"count":1,"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/posts\/1218\/revisions"}],"predecessor-version":[{"id":1219,"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/posts\/1218\/revisions\/1219"}],"wp:attachment":[{"href":"https:\/\/charlezz.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1218"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/charlezz.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1218"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/charlezz.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1218"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}