├── .gitignore ├── DemoTest ├── app-debug.apk ├── app-debug_jiagu_sign.apk ├── libcom_android_loadingbundle.so ├── patch-1.1.1@1.1.0.tpatch └── update.json ├── README.md ├── apk-files.txt ├── app ├── .gitignore ├── atlasdemo.jks ├── build.gradle ├── proguard-rules.pro └── src │ └── main │ ├── AndroidManifest.xml │ ├── java │ └── com │ │ └── android │ │ └── dzatlas │ │ ├── AppApplication.java │ │ ├── DzPreLaunch.java │ │ ├── MainActivity.java │ │ └── Updater.java │ └── res │ ├── layout │ └── activity_main.xml │ ├── mipmap-hdpi │ ├── ic_launcher.png │ └── ic_launcher_round.png │ ├── mipmap-mdpi │ ├── ic_launcher.png │ └── ic_launcher_round.png │ ├── mipmap-xhdpi │ ├── ic_launcher.png │ └── ic_launcher_round.png │ ├── mipmap-xxhdpi │ ├── ic_launcher.png │ └── ic_launcher_round.png │ ├── mipmap-xxxhdpi │ ├── ic_launcher.png │ └── ic_launcher_round.png │ └── values │ ├── colors.xml │ ├── strings.xml │ └── styles.xml ├── build.gradle ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── homebundle ├── .gitignore ├── build.gradle ├── proguard-rules.pro └── src │ └── main │ ├── AndroidManifest.xml │ ├── java │ └── com │ │ └── android │ │ └── homebundle │ │ └── HomeActivity.java │ └── res │ ├── drawable │ └── home_chongzhi.png │ ├── layout │ └── activity_home.xml │ └── values │ └── strings.xml ├── loadingbundle ├── .gitignore ├── build.gradle ├── proguard-rules.pro └── src │ └── main │ ├── AndroidManifest.xml │ ├── java │ └── com │ │ └── android │ │ └── loadingbundle │ │ └── LoadingActivity.java │ └── res │ ├── drawable │ └── home_scan.png │ ├── layout │ └── activity_loding.xml │ └── values │ └── strings.xml ├── middlewarelibrary ├── .gitignore ├── build.gradle ├── proguard-rules.pro └── src │ └── main │ ├── AndroidManifest.xml │ ├── java │ └── com │ │ └── android │ │ └── middlewarelibrary │ │ ├── BaseActivity.java │ │ └── NetUtils.java │ └── res │ └── values │ └── strings.xml └── settings.gradle /.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .gradle 3 | /local.properties 4 | /.idea/workspace.xml 5 | /.idea/libraries 6 | .DS_Store 7 | /build 8 | /captures 9 | .externalNativeBuild 10 | -------------------------------------------------------------------------------- /DemoTest/app-debug.apk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dongze5/AtlasDemo/e8a0b0e753b594552a812da0ba1a7c6e129465b3/DemoTest/app-debug.apk -------------------------------------------------------------------------------- /DemoTest/app-debug_jiagu_sign.apk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dongze5/AtlasDemo/e8a0b0e753b594552a812da0ba1a7c6e129465b3/DemoTest/app-debug_jiagu_sign.apk -------------------------------------------------------------------------------- /DemoTest/libcom_android_loadingbundle.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dongze5/AtlasDemo/e8a0b0e753b594552a812da0ba1a7c6e129465b3/DemoTest/libcom_android_loadingbundle.so -------------------------------------------------------------------------------- /DemoTest/patch-1.1.1@1.1.0.tpatch: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dongze5/AtlasDemo/e8a0b0e753b594552a812da0ba1a7c6e129465b3/DemoTest/patch-1.1.1@1.1.0.tpatch -------------------------------------------------------------------------------- /DemoTest/update.json: -------------------------------------------------------------------------------- 1 | { 2 | "baseVersion":"1.1.0", 3 | "updateBundles":[ 4 | { 5 | "isMainDex":true, 6 | "name":"com.taobao.maindex", 7 | "version":"1.1.0@1.1.1" 8 | }, 9 | { 10 | "dependency":[], 11 | "isMainDex":false, 12 | "name":"com.android.homebundle", 13 | "version":"1.1.0@unspecified" 14 | }, 15 | { 16 | "dependency":[], 17 | "isMainDex":false, 18 | "name":"com.android.loadingbundle", 19 | "version":"1.1.0@unspecified" 20 | } 21 | ], 22 | "updateVersion":"1.1.1" 23 | } -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # AtlasDemo 2 | 阿里Atlas组件框架的使用 3 | 4 | 项目结构: 5 | DemoTest 包含修复前apk包、修复前加固apk包、更新补丁、远程bundle作为演示使用。 6 | app 主项目 7 | loadingbundle 远程加载组件 不打包进apk 8 | homebundle 加载组件 打包进apk 9 | middlewarelibrary 公共方法库 宿主与组件使用 10 | 11 | DemoTest简单使用: 12 | 1、安装修复前apk包到手机 13 | 2、把更新补丁、远程bundle放入到SD卡Android/data/com.android.dzatlas/cache/目录下 14 | 3、打开应用点击更新,重新打开就可以看见被修复后的内容 15 | 16 | 项目使用流程: 17 | 1、使用最新的Android studio开发工具、更新到最新的gradle-3.3-all 18 | 2、编译apk包 gradlew assembleDebug 后安装到手机 19 | 3、发布到本地仓库 mgradlew publish 20 | 4、修改版本号、修改项目内容、打差异包 gradlew assembleDebug -DapVersion=1.1.0 -DversionName=1.1.1 21 | 5、把生成的补丁文件放入sd卡目录打开app更新补丁 22 | -------------------------------------------------------------------------------- /apk-files.txt: -------------------------------------------------------------------------------- 1 | {"awbs":{"DzAtlas-loadingbundle":{"res\\values/values.xml":"b95fd70aa5eb7807db83fe74e386e530","res\\layout/activity_loding.xml":"6abaa37806953b5f49d4f9e33ddb3aed"},"DzAtlas-homebundle":{"res\\values/values.xml":"02b60336f08459c7fcf7c3f5d61afa32","res\\layout/activity_home.xml":"add3c9620afbd996f8d0cc2086e6ff6b","res\\drawable/default_head_boy.png":"4fa8a2dd5f5653fd311cc7536b7a9198","res\\drawable/default_head_girl.png":"7ed5d7536ced913fd09394a819a238dc"}},"mainBundle":{"res\\values-tr/values-tr.xml":"f4af4c7ee2df77d6faa012583d842901","res\\color/abc_tint_default.xml":"0c3036647e4d264da3ee97ffeb28bc06","res\\values-sw/values-sw.xml":"59dda6d10d306d00b0ddc42a259d2f9e","res\\values-bs-rBA/values-bs-rBA.xml":"d563fffabe3dc6793fb927e121702873","res\\values-et-rEE/values-et-rEE.xml":"598499fb983a9e4a639e6c7cea69069b","res\\drawable-xhdpi-v4/notification_bg_normal.9.png":"bf3a10daa260ba3f4cd3325b94f75cf7","res\\values-ca/values-ca.xml":"2a9fc095ad62f2961ae3341de1117632","res\\drawable-xxxhdpi-v4/abc_ic_star_half_black_36dp.png":"70cd4fda239560b7e2cdf1fb3b263871","res\\anim/abc_grow_fade_in_from_bottom.xml":"d0c2b68ca992cde83ebcf9a9b79e8455","res\\values-mn-rMN/values-mn-rMN.xml":"445b25bad0431f176e8046b70851c443","res\\drawable-xhdpi-v4/abc_scrubber_control_to_pressed_mtrl_000.png":"762e1b90059761df8118555b45af3c0a","res\\values-pt-rPT/values-pt-rPT.xml":"4e718bae4346f2a99f8e2b1a43b9b736","res\\layout/abc_list_menu_item_layout.xml":"9e79b393a70f22f14325fbf7e895b1bc","res\\drawable-xxhdpi-v4/abc_ab_share_pack_mtrl_alpha.9.png":"d46157aa33bf1f954733b6d4cf45db81","res\\drawable-hdpi-v4/abc_tab_indicator_mtrl_alpha.9.png":"0102ac908975c2c4c82b87bfd9d5707b","res\\drawable-ldrtl-mdpi-v17/abc_spinner_mtrl_am_alpha.9.png":"93aab159daf9d76e3ed426c369c74836","res\\values-iw/values-iw.xml":"c8e68b10262ed4d1a03d140f4cb8c27f","res\\values-sv/values-sv.xml":"38c4d0a50b15c14ef858c9124bdcb4c9","res\\drawable/abc_btn_check_material.xml":"0f507a92919d9aba6e7fe0a3247050a8","res\\drawable-xxhdpi-v4/abc_scrubber_primary_mtrl_alpha.9.png":"b1c90610d4d28697dd2da3ec588ac043","res\\drawable-xhdpi-v4/abc_list_selector_disabled_holo_light.9.png":"c156dc4da86a0bd0fa991edef69043df","res\\drawable-hdpi-v4/abc_menu_hardkey_panel_mtrl_mult.9.png":"4dfce5b180f817fea087ace9e904cf92","res\\values-pl/values-pl.xml":"67cbf81595bfd8fabd3a534a0b50ec7c","res\\color/abc_primary_text_material_dark.xml":"8a060cd44e4eda7c2839339268a859b0","res\\values-ne-rNP/values-ne-rNP.xml":"ab1b0b1e5423560e96a606b3089e9f85","res\\drawable-xhdpi-v4/abc_textfield_search_activated_mtrl_alpha.9.png":"60a21284698b3dc9c9fdf1579ad42042","res\\color/abc_tint_switch_thumb.xml":"b7886a3a339b0b5bb4e57b784c30eb1c","res\\color/abc_primary_text_disable_only_material_light.xml":"6fa29796e1ccf1cbc61d15b31c4d6afe","res\\drawable-hdpi-v4/abc_btn_check_to_on_mtrl_000.png":"6316fa2abf10da1c07c331dbfd0885b7","res\\drawable-v23/abc_control_background_material.xml":"a8ecde0b7b47ba3e30451d07c17479be","res\\values-bg/values-bg.xml":"10219109dfaf704e65d2a8a6b60ef2a0","res\\values-vi/values-vi.xml":"31a9b27a76cfadb8ebbdbed33718e0c7","res\\drawable-xxxhdpi-v4/abc_btn_radio_to_on_mtrl_000.png":"fca20792adae2e7b9bfca87411c265d3","res\\drawable-xhdpi-v4/abc_ic_commit_search_api_mtrl_alpha.png":"bb281dd2e84f3f9608f91c87683253ee","res\\drawable-xxxhdpi-v4/abc_ic_menu_share_mtrl_alpha.png":"3ca20760cd08a9e44a0149255d98f7c1","res\\drawable-xxxhdpi-v4/abc_text_select_handle_left_mtrl_light.png":"1411f4a7c686c4f5c35a85497109120e","res\\values-be-rBY/values-be-rBY.xml":"774fb90917b75585dff57bb510c345df","res\\layout/abc_activity_chooser_view_list_item.xml":"a6e87929d5ed892a43ea4bc66b66e104","res\\layout-v11/notification_template_big_media_narrow.xml":"ffc3d09a565b4caa01a3237c10947d64","res\\drawable-xxhdpi-v4/abc_scrubber_control_to_pressed_mtrl_005.png":"db1a7cb95c580329f066dbf13465f7da","res\\values-xlarge-v4/values-xlarge-v4.xml":"7fbe3cf69a7483066df730c9714f8aa5","res\\values-ta-rIN/values-ta-rIN.xml":"ffd9b281665062d520b69e6e2bf0c3e1","res\\drawable-mdpi-v4/abc_textfield_activated_mtrl_alpha.9.png":"5d01b026aa028496dceea8a74d990223","res\\drawable/abc_switch_thumb_material.xml":"55ba6657fd4a0ed55d4a385ebe998860","res\\layout/notification_template_media.xml":"31f51c9dec3dde5cd55360d7253c81c5","res\\values-ms-rMY/values-ms-rMY.xml":"709bc7b749c3409c36bf57fe5c4a9f11","res\\drawable-hdpi-v4/abc_textfield_search_default_mtrl_alpha.9.png":"3d9099f7e1a18ff6bf7b4956fdb75e44","res\\layout/notification_template_lines_media.xml":"c5a7b6601438173711583d47c46f2d6a","res\\drawable-hdpi-v4/abc_list_selector_disabled_holo_dark.9.png":"2827448a66e77531a48ac68f308e28d4","res\\layout/abc_expanded_menu_layout.xml":"c69ce07a9689546969eb3e63fca72b5c","res\\drawable-xxxhdpi-v4/abc_btn_radio_to_on_mtrl_015.png":"5c9a24000fa7cf728f015145efed540b","res\\drawable-hdpi-v4/abc_textfield_default_mtrl_alpha.9.png":"121934c3865ee364d9394c86207de7e8","res\\values-en-rIN/values-en-rIN.xml":"46b2caba21c765e1db9b80c51a55a187","res\\drawable-mdpi-v4/abc_scrubber_primary_mtrl_alpha.9.png":"6209c5235364fead761f2314679d1268","res\\drawable-xxhdpi-v4/abc_btn_check_to_on_mtrl_000.png":"5b8b0c53a2ecc99e63940ddaa8c5e0c6","res\\values-ko/values-ko.xml":"213b0046180a98dbb5e44f7942cee948","res\\drawable-ldrtl-xhdpi-v17/abc_ic_menu_cut_mtrl_alpha.png":"36bda1399bdb10cfa36fb317a3660b2d","res\\drawable-hdpi-v4/notification_bg_normal.9.png":"6c3c4b9d0b6c4f7019ce57cbc7e7aeab","res\\layout/abc_popup_menu_item_layout.xml":"dcf1692cf8d18ec109b6b5e47ec9a1c1","res\\drawable-mdpi-v4/abc_ic_star_black_16dp.png":"e9a461c939edec34103360fa1ca433ee","res\\drawable-xhdpi-v4/notification_bg_low_pressed.9.png":"9dd63d1b33874553de30074a5144f1f9","res\\drawable-ldrtl-hdpi-v17/abc_ic_menu_cut_mtrl_alpha.png":"f8f1b6cf8c2df8fb18f5a33e0af74e37","res\\drawable-xxhdpi-v4/abc_ic_star_half_black_16dp.png":"e2f03988b3cc766353cc2992c0f1b99b","res\\layout/notification_action_tombstone.xml":"69e2a95bad1524615e307c6261b80fc4","res\\values-ka-rGE/values-ka-rGE.xml":"b4162df9c55ae2f0433bece8a0fd8bbc","res\\drawable-hdpi-v4/notification_bg_low_normal.9.png":"9beb0f023e6da0e206be1340063cfd1a","res\\drawable-xxxhdpi-v4/abc_btn_switch_to_on_mtrl_00001.9.png":"c53a4f7064f790fdde1cc4c5697a8089","res\\drawable/abc_ic_clear_material.xml":"029906e60dd16489f74cb4e153935db1","res\\drawable-hdpi-v4/abc_text_select_handle_middle_mtrl_light.png":"8268b3815173b6029925792b852e2329","res\\mipmap-xxxhdpi/ic_launcher.png":"9f18acbdafb1b31394f527a7f04d3b64","res\\layout/select_dialog_item_material.xml":"784691d38859ac33c8cd9bfedce58ec2","res\\color/abc_search_url_text.xml":"d5ddbf2ee7d5edc7ae2e8cb359f85afd","res\\layout/abc_screen_toolbar.xml":"b29ddd3d883a2859557c535f081a3d91","res\\color-v23/abc_tint_edittext.xml":"31af5d1e3971579d7142c7e2a9c4c1d1","res\\color/switch_thumb_material_light.xml":"073f2afa45c5c0fb4399f52efe8d7419","res\\drawable-xxhdpi-v4/abc_ic_menu_copy_mtrl_am_alpha.png":"60b0b637ed02cc665cec2fda961db304","res\\drawable-mdpi-v4/abc_text_select_handle_right_mtrl_dark.png":"2d4c0b979ad102daf585e94fc7c72383","res\\drawable-xhdpi-v4/abc_text_select_handle_left_mtrl_dark.png":"d50521bafc4801e9eb4b8cb075414157","res\\mipmap-xhdpi/ic_launcher.png":"ea98c83f028404f11341c0c646677407","res\\drawable-hdpi-v4/abc_btn_check_to_on_mtrl_015.png":"8c7970f59f17adfe8da02e4c4f71881d","res\\drawable-v21/abc_btn_colored_material.xml":"ae5fed6b18a2dce6e480086be446a411","res\\drawable/abc_seekbar_tick_mark_material.xml":"f27d74241913177d2f176b4ea03a7e77","res\\drawable-xxhdpi-v4/abc_textfield_activated_mtrl_alpha.9.png":"63f90c5c4ea05a09cf7e0f466604a18b","res\\drawable-xhdpi-v4/abc_ic_menu_cut_mtrl_alpha.png":"dc8cb61d569c4426797bf545fc981b79","res\\drawable-xhdpi-v4/abc_text_select_handle_right_mtrl_dark.png":"e51d5f4576c095acfcdcfebb97c9c329","res\\drawable-xhdpi-v4/abc_btn_radio_to_on_mtrl_000.png":"446d97f2b8351d8e9bae3c911cb0efaf","res\\drawable-xhdpi-v4/abc_text_select_handle_right_mtrl_light.png":"75ee503d1bc9e159793ff38d41388b5a","res\\drawable-hdpi-v4/abc_spinner_mtrl_am_alpha.9.png":"9afc23ae9c05d69b12abc5942cf301a9","res\\drawable/abc_dialog_material_background.xml":"28ce798f333b95247a6e9c99f79f3fe7","res\\drawable-mdpi-v4/notification_bg_low_normal.9.png":"becfcdc666bad2da32848991e97e1475","res\\layout/abc_screen_content_include.xml":"0ebb39d710f3e5e8deddee746e9c5c32","res\\drawable-xxhdpi-v4/abc_text_select_handle_middle_mtrl_light.png":"8903d0852672499e6180d14881a58644","res\\values-az-rAZ/values-az-rAZ.xml":"69adbf0bb8a6964749afba7e0f8bab39","res\\layout/abc_action_menu_item_layout.xml":"0cf9cf135d82cd2bcfc09a23d4e7b3d3","res\\drawable-hdpi-v4/notification_bg_normal_pressed.9.png":"baf4a09cb026f7b6ce5defcbae233abd","res\\drawable-xhdpi-v4/abc_ic_star_half_black_36dp.png":"7aceedb68466189caed8d320516ca721","res\\drawable-xxxhdpi-v4/abc_switch_track_mtrl_alpha.9.png":"fe07d5229559ba0e1772d16eb5bdf237","res\\drawable-xhdpi-v4/abc_cab_background_top_mtrl_alpha.9.png":"c586df1545e886ecca5274d1c5a4af01","res\\layout-v16/notification_template_custom_big.xml":"f5187d2cc8d3bb248f3b0d204719f2a8","res\\values-large-v4/values-large-v4.xml":"3bd54b52df49585c13be56ab9310efdd","res\\values-si-rLK/values-si-rLK.xml":"18ac089256ff9e0ed76cce1c3cdbfb48","res\\values-eu-rES/values-eu-rES.xml":"c54669ae598aab8b5903471afbc8f8c4","res\\drawable-xhdpi-v4/abc_btn_radio_to_on_mtrl_015.png":"72bdf70d5072ecda629e612c8e999893","res\\drawable-xhdpi-v4/abc_ic_menu_share_mtrl_alpha.png":"1bd95046ab245dc365344d49e01b858c","res\\values-es/values-es.xml":"47d9151b251b98875983c97b95bbf831","res\\values-my-rMM/values-my-rMM.xml":"9ff4969e139e5623b3485c69b863d3a1","res\\color-v23/abc_btn_colored_borderless_text_material.xml":"d78abee0eb42876c9c9c05e0e116f492","res\\layout/abc_list_menu_item_icon.xml":"b739259c3bea733b9c43b4044207ba44","res\\drawable-xxhdpi-v4/abc_btn_check_to_on_mtrl_015.png":"633d294845b9a26dad07778776449a2f","res\\drawable-xxxhdpi-v4/abc_text_select_handle_right_mtrl_light.png":"9a1556efcec862c4ba0cbde79beffd70","res\\mipmap-mdpi/ic_launcher.png":"6504b8af3c4d687a9611dd8361e9f756","res\\drawable-hdpi-v4/abc_ic_star_black_48dp.png":"4a235150716c0a287581b60c1cc577a9","res\\mipmap-mdpi/ic_launcher_round.png":"88561fb7750cb810277d031f0c47c610","res\\layout-v11/notification_media_action.xml":"1041dcdfc555af428add4d093fd279f5","res\\values-mk-rMK/values-mk-rMK.xml":"b5351c7cfa77e46e8afeb69d338c4101","res\\mipmap-xxhdpi/ic_launcher.png":"adc53969fb60384ae370ef13555a3ff4","res\\color/abc_tint_switch_track.xml":"772563e8f54460b143f4251b9beb8dca","res\\drawable-mdpi-v4/abc_ic_menu_share_mtrl_alpha.png":"bca231610f57d057a792a6c5fcfd5127","res\\drawable-xxxhdpi-v4/abc_scrubber_control_to_pressed_mtrl_005.png":"e5907c2ec704632f3abc7cd26b39a51f","res\\drawable-mdpi-v4/abc_menu_hardkey_panel_mtrl_mult.9.png":"e1befbdbaab24d5f64cdce8eee6e340f","res\\values-te-rIN/values-te-rIN.xml":"8087503b89e2d3177dfdf25d8e216352","res\\drawable-xxhdpi-v4/abc_list_selector_disabled_holo_dark.9.png":"1349681172cdef3ac19defb3ecf6dea2","res\\drawable-mdpi-v4/abc_switch_track_mtrl_alpha.9.png":"33c05c2b6e7c346c900b23c7e51ffc1d","res\\values-hu/values-hu.xml":"4165c25edee601f75ea29c6d73e8895c","res\\drawable-hdpi-v4/notification_bg_low_pressed.9.png":"c6fa848c63bc03f96c6d35c7c120b10e","res\\drawable-mdpi-v4/abc_btn_radio_to_on_mtrl_015.png":"280a920bc2c37c5a5371591608cb8555","res\\drawable-xhdpi-v4/notify_panel_notification_icon_bg.png":"a0c2ca0fe4db91be21cc897f237c9373","res\\values-tl/values-tl.xml":"ef23b945623c95e99ce9e5f42e2d5588","res\\drawable-xhdpi-v4/notification_bg_low_normal.9.png":"3d4e903880e581df0dff44a4cc07c65b","res\\drawable-xxhdpi-v4/abc_text_select_handle_right_mtrl_dark.png":"e0a6f87c4ae981933379c24aa764a2a6","res\\drawable-xxxhdpi-v4/abc_ic_star_black_16dp.png":"7d1c2b67c30d6ab2deaad540cedaec3d","res\\values-ar/values-ar.xml":"1979a90d7b66f91324b015614d0f9ae5","res\\layout/notification_template_icon_group.xml":"4d0afcbde45279e7e596c8185a4fefed","res\\drawable-xhdpi-v4/abc_scrubber_primary_mtrl_alpha.9.png":"0d67a988d19e8453dc2adb86f65a6b74","res\\drawable/abc_btn_radio_material.xml":"f0ac0a78aac0c221ee55086db51dbf41","res\\drawable-mdpi-v4/abc_list_pressed_holo_light.9.png":"bd8203a048183470e0b0848e092ae257","res\\values-da/values-da.xml":"a7259b31aa35ff7f436b039a857188e0","res\\drawable-hdpi-v4/abc_text_select_handle_left_mtrl_dark.png":"ea1b7a171261765d625d232a144b7452","res\\drawable-mdpi-v4/abc_ic_star_black_48dp.png":"1d2a036efe51621a221c4ce91c2ffafd","res\\values-pa-rIN/values-pa-rIN.xml":"b8a6b451302e5052e86edae00fce8f66","res\\layout/activity_main.xml":"66156beee68abaaaf9d4cce6c45b114c","res\\values-in/values-in.xml":"1ed705951413225d41337530a36059d5","res\\layout-v21/notification_template_icon_group.xml":"06eb40a183b38a564b1c56305d246a37","res\\drawable-xxxhdpi-v4/abc_ic_menu_cut_mtrl_alpha.png":"6dfc6fe1883cfe59b1c3d4db7e6c0b0d","res\\drawable-mdpi-v4/abc_list_selector_disabled_holo_dark.9.png":"caf5c226477aec5e861a950d59fcbaae","res\\drawable-xxhdpi-v4/abc_textfield_default_mtrl_alpha.9.png":"3979d216f7586441809c18115ad6310b","res\\drawable-mdpi-v4/abc_scrubber_control_to_pressed_mtrl_000.png":"621b6d28c1f10c14575e52c334501dea","res\\drawable-hdpi-v4/abc_scrubber_control_to_pressed_mtrl_005.png":"d170adab950f3973cd13a51fb96b2807","res\\drawable-mdpi-v4/abc_btn_check_to_on_mtrl_015.png":"779fbc128fd38aa099e99a1c8dcb1f0f","res\\drawable-xxhdpi-v4/abc_ic_menu_selectall_mtrl_alpha.png":"5b445c8cfb79b0cf53d7e65dfc1a4a70","res\\drawable-xxxhdpi-v4/abc_ic_menu_copy_mtrl_am_alpha.png":"17c81b656cc64bc9ec63395bbe620391","res\\values-hi/values-hi.xml":"35e5ca28b5a7c6b79ce35bc4e05908e7","res\\drawable-xhdpi-v4/abc_textfield_default_mtrl_alpha.9.png":"a78648930d94d5e58e477f6581f39a8a","res\\drawable-xhdpi-v4/abc_list_pressed_holo_dark.9.png":"d543bf47f938b3d6987b72a74cdcc13e","res\\values-zh-rTW/values-zh-rTW.xml":"a57993c722aa8bf6800de65f27c4336c","res\\values-v18/values-v18.xml":"51dd9315a5636040cd276c04275adb86","res\\values-nb/values-nb.xml":"c667f767a8cf9e3b6adfd8659d9232bf","res\\drawable-mdpi-v4/notification_bg_normal_pressed.9.png":"5293b7af8277d8ff229a5cd50d199640","res\\values-v21/values-v21.xml":"98c1e877eaeb1695ce92e1b23e9f4a68","res\\drawable-mdpi-v4/abc_text_select_handle_left_mtrl_dark.png":"b09ac13fa2dec66f704b842c05951093","res\\drawable-ldrtl-xxhdpi-v17/abc_spinner_mtrl_am_alpha.9.png":"79a98cda182c24232eb1eb9dd9457080","res\\drawable-mdpi-v4/abc_btn_check_to_on_mtrl_000.png":"4d6aafa7864c689ee16755416b95bb2d","res\\drawable-xhdpi-v4/abc_ic_star_black_16dp.png":"3b86ea97365c3f8dd363931f0fe53da7","res\\values-night-v8/values-night-v8.xml":"5f3053ce030a68724dfdc034a794695c","res\\values-cs/values-cs.xml":"cddd63a6522db15b59b138364f3e4133","res\\values-zu/values-zu.xml":"21fb018b8a7370533b065e51fbb25460","res\\drawable-xxhdpi-v4/abc_ic_menu_paste_mtrl_am_alpha.png":"2ab0bec469c518a63523e9859cfaaee9","res\\drawable/abc_ic_voice_search_api_material.xml":"9b3583fe3e5791702e9517141a09d222","res\\color-v23/abc_tint_btn_checkable.xml":"7b7b9602211baff7a62929e09a8f7eec","res\\drawable-hdpi-v4/abc_ic_menu_cut_mtrl_alpha.png":"4036abef17fbd3988ec2d8d8f90e9c11","res\\anim/abc_slide_in_bottom.xml":"3487369e930cde7f72e3e0e9fad1d4f5","res\\drawable-hdpi-v4/abc_ic_star_black_36dp.png":"cbb7b8b823445acd5b6f650d1c50d44f","res\\layout/notification_action.xml":"07c052d0fb90a3c8d9daa22ddce82fd9","res\\drawable/notification_icon_background.xml":"74fe2816b3b6ab520a0530e61ed5197b","res\\drawable-mdpi-v4/abc_scrubber_control_off_mtrl_alpha.png":"99976db4e14cd0620594d60bd425d5de","res\\drawable-v21/abc_action_bar_item_background_material.xml":"9f07421a4a69047095e1798eb69941f7","res\\drawable-xhdpi-v4/abc_menu_hardkey_panel_mtrl_mult.9.png":"e21dcdb7af85666b6ee9624d28ed2f16","res\\drawable-xhdpi-v4/abc_list_focused_holo.9.png":"043856e26eb71fda3504a19512d14097","res\\drawable-xxhdpi-v4/abc_menu_hardkey_panel_mtrl_mult.9.png":"b9f2e70d6b1791ba91e19f00d9978bcc","res\\drawable-xxhdpi-v4/abc_text_select_handle_left_mtrl_dark.png":"62e1c08b2b2c3557272655533f869f22","res\\drawable/default_head_girl.png":"7ed5d7536ced913fd09394a819a238dc","res\\layout/atlas_progress.xml":"e63e27aa343b2411731e05106a65f7a6","res\\drawable-hdpi-v4/abc_ic_star_half_black_16dp.png":"de10d3500c0cd4979ada5c5b6571141f","res\\drawable-mdpi-v4/abc_spinner_mtrl_am_alpha.9.png":"a57fff21bd5879cf4672f5168e4d8aca","res\\drawable-mdpi-v4/notify_panel_notification_icon_bg.png":"379a0adc8c29ff8e6aedb6dc54c292f0","res\\drawable-hdpi-v4/abc_list_pressed_holo_dark.9.png":"3e5ca416ea4d9d5436d414ca2f4b6845","res\\drawable-mdpi-v4/abc_list_pressed_holo_dark.9.png":"77995024180f564d8305d9edf40fba8c","res\\drawable-xxhdpi-v4/abc_textfield_search_default_mtrl_alpha.9.png":"cc35be9dcddedca7c29a16a246ca30d2","res\\drawable-mdpi-v4/abc_list_selector_disabled_holo_light.9.png":"da6b1382c44159ae270c2f62a0617f22","res\\drawable-mdpi-v4/abc_cab_background_top_mtrl_alpha.9.png":"db4dce0e09488b0c4574ed63c00379fb","res\\drawable/notification_tile_bg.xml":"068d6a18a8ddf0c658cdf17c7f2ed4d7","res\\drawable-mdpi-v4/abc_text_select_handle_right_mtrl_light.png":"c271da4fb1de9469f4bbd2741183b507","res\\drawable-mdpi-v4/abc_ic_commit_search_api_mtrl_alpha.png":"453cb0f988333999aab43588bfcabdfc","res\\drawable-hdpi-v4/abc_text_select_handle_right_mtrl_dark.png":"20107becb20cb18a48e5a2d801c67336","res\\drawable-xxxhdpi-v4/abc_ic_menu_selectall_mtrl_alpha.png":"0f7f2906a54bc4ff1a918ef246c18648","res\\values-af/values-af.xml":"e43601bd6d877904f0c4b7ae0f657d04","res\\drawable-mdpi-v4/abc_list_longpressed_holo.9.png":"6d005b7dc6a3739a1955019f03394e65","res\\layout/abc_search_view.xml":"72c41a11e4175f5117cebc461eb4bede","res\\color/abc_tint_edittext.xml":"193e91df526df2b0eababfa2f450dd6f","res\\drawable-mdpi-v4/abc_textfield_default_mtrl_alpha.9.png":"ec5f71010d752a8aca9e821cf714fd60","res\\drawable/abc_btn_borderless_material.xml":"4df9cd40ea1768b282c4b10e50de96f4","res\\values-ky-rKG/values-ky-rKG.xml":"8ca87a21b8999ca0537522a56ff52ff5","res\\values-zh-rCN/values-zh-rCN.xml":"12c34398e577aed17bc3f9d5af840f2b","res\\values-gu-rIN/values-gu-rIN.xml":"2b9d0c38212d1ca266bbdd1f8919e2d8","res\\drawable-mdpi-v4/abc_textfield_search_default_mtrl_alpha.9.png":"8798cecbf433119a038636be89ab4796","res\\layout/abc_activity_chooser_view.xml":"1a34529440a894a97afd2aa193bd1603","res\\mipmap-xxxhdpi/ic_launcher_round.png":"508ac9fee520930820844e0b7dcd748f","res\\drawable-mdpi-v4/abc_scrubber_track_mtrl_alpha.9.png":"1ef0e0c545841dc3f1171f1d4ed44f08","res\\layout/activity_home.xml":"add3c9620afbd996f8d0cc2086e6ff6b","res\\drawable-xxxhdpi-v4/abc_btn_check_to_on_mtrl_000.png":"17502a07e57ae76649d93cfca11b252d","res\\values-sr/values-sr.xml":"b2b8cc68518fc9cba3632352c0fd520b","res\\color/abc_tint_seek_thumb.xml":"0bc56192253949e40cef83a673f96ecc","res\\drawable-xxhdpi-v4/abc_list_pressed_holo_dark.9.png":"75c04b71b0f84f8153284cd986e298e1","res\\drawable-hdpi-v4/abc_textfield_activated_mtrl_alpha.9.png":"8d55bfe86754793d407792eb0d91491a","res\\drawable-hdpi-v4/abc_text_select_handle_middle_mtrl_dark.png":"c5953ea191555d4dd91f492f93f27974","res\\color/abc_hint_foreground_material_light.xml":"ea1aa83d98af977eb0d5be9c2dc2b949","res\\drawable/notification_bg_low.xml":"c042d7992a959fe46756da18fd4116cc","res\\values-fi/values-fi.xml":"c9d4124d7ea57e96132e909b6f5c12e4","res\\drawable-mdpi-v4/notification_bg_normal.9.png":"b9272156e69985c12fb792d602828b8d","res\\layout/abc_action_menu_layout.xml":"faee0c1edca1d60a87cebacdb60e0462","res\\values-sq-rAL/values-sq-rAL.xml":"2270b850db4c4bc79e4f805147bc2d69","res\\drawable-ldrtl-xhdpi-v17/abc_spinner_mtrl_am_alpha.9.png":"4bd85c4a0dc1572c74827738c81821b3","res\\color-v23/abc_color_highlight_material.xml":"d4e01e958a64974a613a7ba974139a52","res\\color/switch_thumb_material_dark.xml":"baf084a6b66e4e9d5aa721fd3aa3bd0a","res\\color-v11/abc_background_cache_hint_selector_material_light.xml":"ee53b37e872ec0d0368b1f2d2e749e55","res\\drawable-hdpi-v4/abc_list_focused_holo.9.png":"ee6ac38d95b63588e634342b463e78a4","res\\drawable-hdpi-v4/abc_popup_background_mtrl_mult.9.png":"524f8db88fe4cc1ad26abc77848e522a","res\\drawable-hdpi-v4/abc_ic_menu_selectall_mtrl_alpha.png":"6384d47550c0675595df6feb530add9b","res\\color-v23/abc_tint_seek_thumb.xml":"9dc0fc4951c3be18a3b8364047083811","res\\values-hdpi-v4/values-hdpi-v4.xml":"95360fb3b373e2f955d061bbe5183912","res\\anim/abc_fade_out.xml":"72941b5a65bba6038722ccaeb6c76bbe","res\\drawable-xxxhdpi-v4/abc_btn_check_to_on_mtrl_015.png":"c0210b4ccb563375f69fcbfc9ab6b64c","res\\drawable-mdpi-v4/abc_text_select_handle_middle_mtrl_light.png":"69b5604f21454eb4b471f3f5b406bb0f","res\\values-ro/values-ro.xml":"8fe0d0efeba3aef5b8b068202133a2d0","res\\values-lt/values-lt.xml":"1fcc3a822a86c37f2cb3c25198e9f847","res\\drawable-xxhdpi-v4/abc_list_focused_holo.9.png":"5afaae2e5b15100212df6e923a9e5283","res\\drawable/abc_ratingbar_indicator_material.xml":"1da98cad849138045efc6771b80cc83b","res\\drawable-mdpi-v4/abc_ic_menu_cut_mtrl_alpha.png":"5a5b57b0f1f42ef213205a790b7094cb","res\\drawable-hdpi-v4/abc_scrubber_control_to_pressed_mtrl_000.png":"0ee2ddfec92eb68aa20368a33c4b9d8a","res\\drawable-xxhdpi-v4/abc_ic_commit_search_api_mtrl_alpha.png":"63b41d2e1f586ae3f19d6e4cc86db9fa","res\\drawable-xxxhdpi-v4/abc_ic_star_half_black_16dp.png":"cea8b471780dec9d7a7ac129ffe5dcb1","res\\values-en-rGB/values-en-rGB.xml":"46b2caba21c765e1db9b80c51a55a187","res\\drawable/abc_cab_background_top_material.xml":"79d29066039e0316f632bbc49a767894","res\\drawable-mdpi-v4/abc_ab_share_pack_mtrl_alpha.9.png":"e181c1703b520bee041011d942ef4c0e","res\\drawable/abc_edit_text_material.xml":"6c9034155a74f41c823ded73cf2cd91f","res\\drawable-hdpi-v4/abc_ic_menu_paste_mtrl_am_alpha.png":"6311a233b8b144a308aad5baf50a0037","res\\drawable-xhdpi-v4/abc_btn_check_to_on_mtrl_000.png":"e5761bbbed4dc4a85018132e698b4af9","res\\drawable-xxhdpi-v4/abc_text_select_handle_right_mtrl_light.png":"47bbb09e14eb9a66507689ded9a85f3f","res\\values-kn-rIN/values-kn-rIN.xml":"a30758a284190e412fec1dc8aa0855f1","res\\drawable-xhdpi-v4/abc_popup_background_mtrl_mult.9.png":"d17939c95b0b3d00bbca4b1806b6c0ed","res\\layout/abc_alert_dialog_title_material.xml":"65a45e72c8729cbfe3bb4c127887b206","res\\drawable-ldrtl-xxxhdpi-v17/abc_ic_menu_copy_mtrl_am_alpha.png":"12b23b1d6598be08e766427441e05f38","res\\drawable-hdpi-v4/abc_scrubber_track_mtrl_alpha.9.png":"6f73e9c6e16f5efddd7a824db7271c7f","res\\drawable-xxhdpi-v4/abc_list_selector_disabled_holo_light.9.png":"37db66c4446c83031bf998f909c602a0","res\\drawable/abc_ratingbar_material.xml":"adb49d09c25a8cedf2c0323c20bf1f30","res\\drawable-hdpi-v4/abc_ic_menu_copy_mtrl_am_alpha.png":"811554ae4686a3af3138211886b94b80","res\\layout-v21/notification_action_tombstone.xml":"acab611d0701928b5d9213c06d54d8a9","res\\drawable-xxxhdpi-v4/abc_spinner_mtrl_am_alpha.9.png":"3ee3c4d030dd30b2478b1ba9bfd90183","res\\values-km-rKH/values-km-rKH.xml":"6ff61f4b93530d88f9b4cccd1a0477e5","res\\drawable-hdpi-v4/abc_ic_menu_share_mtrl_alpha.png":"44a69e6f185e209274c18e33a30c8193","res\\layout/abc_list_menu_item_radio.xml":"3ace17d59fb771cfbf0e56e28459365d","res\\drawable/abc_spinner_textfield_background_material.xml":"e18521cbb692d05862ef18515c8287e1","res\\values-pt-rBR/values-pt-rBR.xml":"af69b57b1fcda8ee632baa2cc4cd1afa","res\\values-kk-rKZ/values-kk-rKZ.xml":"5a972097ce973525a9c48e19ab08f6e4","res\\layout-v11/notification_template_big_media_narrow_custom.xml":"975e997e1db27c94321f2174aacaefa3","res\\drawable-hdpi-v4/abc_btn_switch_to_on_mtrl_00012.9.png":"310445c87887b82d38796c4b13173ba1","res\\values-hy-rAM/values-hy-rAM.xml":"fe09ccfe9ac7ec4e3161a577726efd5d","res\\color-v23/abc_tint_switch_thumb.xml":"13392ca14eee8e2b04cb61df9d366a2d","res\\values-ml-rIN/values-ml-rIN.xml":"6566e3f4ca8e6a387d0abe5548f533a6","res\\drawable-xhdpi-v4/abc_ic_star_half_black_16dp.png":"683975a5e2bea0ba95552c364519adfc","res\\drawable-xxhdpi-v4/abc_cab_background_top_mtrl_alpha.9.png":"51a23a29b0ecdbbda7b73ae28c8833da","res\\drawable/abc_btn_colored_material.xml":"8fc8e5abae5ff1d0b2e0bcce57fccf50","res\\layout/abc_search_dropdown_item_icons_2line.xml":"30924580ef00c8620c5dd5b09416ef1f","res\\anim/abc_slide_in_top.xml":"be876ee895e9678f415eaddb867675bd","res\\drawable-hdpi-v4/abc_btn_switch_to_on_mtrl_00001.9.png":"9c7e38806166c813bd0fcd7826e457b4","res\\layout/abc_dialog_title_material.xml":"0b3af4b4106c82563ec5ab6d7c84a01b","res\\color/abc_btn_colored_text_material.xml":"0934573079ed90996bddb989ad3e9dc0","res\\drawable-mdpi-v4/abc_ic_star_half_black_48dp.png":"298ce7181e33c10f8efb63bc096cd0ed","res\\values-lo-rLA/values-lo-rLA.xml":"50b1c9971f69a0237de82d78b8b2d0db","res\\drawable/atlas_waitview.xml":"a10ef5ba975e65e1b4fdbed058ecc645","res\\drawable-xhdpi-v4/abc_textfield_activated_mtrl_alpha.9.png":"df4757b578cca2830d29ad67adc26589","res\\drawable/abc_ic_go_search_api_material.xml":"f360f67d013b1a1a4d9dc220bd675b50","res\\drawable/abc_text_cursor_material.xml":"b2676394d9d70b02cfb426eac4fdb1da","res\\values-v11/values-v11.xml":"810c24ec22dae4b04f9e08ff8e6cb35b","res\\values-v12/values-v12.xml":"dd1005543ade4334b94680af8ca87649","res\\values-v13/values-v13.xml":"dc9008ff84ff724e20ef282b04f7968c","res\\values-v14/values-v14.xml":"91435475c38074ba0ad7a29383356577","res\\values-lv/values-lv.xml":"21748b89b339cbfa4f4098d0c2230371","res\\layout/abc_alert_dialog_material.xml":"7b5ebf9779b3570547aa255ee269afc0","res\\values-sk/values-sk.xml":"92f19856dfa6356d6b6730acbee9e1c3","res\\drawable-mdpi-v4/abc_list_divider_mtrl_alpha.9.png":"0c788090a2b8cd67a093b24b3d61787a","res\\values-v22/values-v22.xml":"efc4d7444aeec9ffc7d5a18328e9e9c0","res\\values-v23/values-v23.xml":"e7929f3b482975397fec5493e38e3d22","res\\values-v24/values-v24.xml":"342507f9df8637fe354ac4f7e2beaca3","res\\values-v25/values-v25.xml":"b30b6713309ea252e30aba30461c7a02","res\\drawable-mdpi-v4/abc_scrubber_control_to_pressed_mtrl_005.png":"c492b5e28b328ce13d5b71aad39e43c9","res\\drawable-mdpi-v4/abc_ic_menu_selectall_mtrl_alpha.png":"8fab7d8b0a34ef23fc9859ac92a96a13","res\\drawable-hdpi-v4/abc_ic_commit_search_api_mtrl_alpha.png":"944bbb143cbe6e591a46a18631019353","res\\values-bn-rBD/values-bn-rBD.xml":"6e63d7ecc615ffb01f35b67014118492","res\\drawable-xhdpi-v4/abc_btn_check_to_on_mtrl_015.png":"1efa1e8714665623f0f4d63f7c554659","res\\drawable-xhdpi-v4/abc_spinner_mtrl_am_alpha.9.png":"c97f7007e8c17183caea670af6027aa8","res\\drawable-mdpi-v4/abc_popup_background_mtrl_mult.9.png":"42492ee331d97291d3013f3146282420","res\\drawable-xxxhdpi-v4/abc_tab_indicator_mtrl_alpha.9.png":"b51546afd539d31032df6df916dcb60d","res\\drawable-xxhdpi-v4/abc_ic_menu_share_mtrl_alpha.png":"12ba5428718076bad6ef2a3ffee75ff7","res\\layout/abc_list_menu_item_checkbox.xml":"ea606867ed53ae516289dd37b805e31f","res\\drawable-ldrtl-xxhdpi-v17/abc_ic_menu_copy_mtrl_am_alpha.png":"7f16946aa000b2b9ad695f96e8a723bf","res\\drawable-hdpi-v4/abc_list_divider_mtrl_alpha.9.png":"0c788090a2b8cd67a093b24b3d61787a","res\\layout-v11/notification_media_cancel_action.xml":"c8f098448473b01a4fc377da6502c3c6","res\\drawable-xhdpi-v4/abc_ic_star_black_48dp.png":"6969713ed26e2c2785bd46179d8e6188","res\\drawable-xxhdpi-v4/abc_btn_radio_to_on_mtrl_015.png":"db2a3f886da90d8ac437b897bdc0772d","res\\color/abc_hint_foreground_material_dark.xml":"58c7cd96c8b6f0d0eae9902d253dcfdb","res\\drawable/abc_cab_background_internal_bg.xml":"55f00ee430cb8a6f1a1a0a196390a313","res\\values-th/values-th.xml":"e3183966ec7c0cb6058be168049367da","res\\drawable/abc_btn_default_mtrl_shape.xml":"7ebc4ed83e885e304da0da7d9a4ef6f4","res\\drawable-xxhdpi-v4/abc_ic_star_half_black_36dp.png":"378e321cc2c0e7e8a68833eb4559477d","res\\drawable-xxhdpi-v4/abc_popup_background_mtrl_mult.9.png":"ec7b0d6d7894541e0518899b99b4f4c0","res\\drawable-hdpi-v4/abc_ic_star_half_black_36dp.png":"ad296a303aeba8a6145d902b610d809e","res\\drawable-xhdpi-v4/abc_btn_switch_to_on_mtrl_00012.9.png":"2ccd07e79b77aebfe41931ce058d54d4","res\\drawable-xxhdpi-v4/abc_list_divider_mtrl_alpha.9.png":"c3ce244621b398205982aec8093c4399","res\\color/abc_secondary_text_material_dark.xml":"787674b5220eabd6ea4966dd3d1c723c","res\\layout-v11/notification_template_big_media.xml":"d2d4fbf7e970fbdef952d2cd93972158","res\\mipmap-xhdpi/ic_launcher_round.png":"f0977a76592231d78d0d71c46368cc3d","res\\color/abc_tint_spinner.xml":"8641395d04d693a9245c48fc8bcc94bb","res\\drawable/abc_tab_indicator_material.xml":"61a8e5392226134b893d0904f326dbb8","res\\drawable-xxhdpi-v4/abc_ic_menu_cut_mtrl_alpha.png":"c00cb348a5cd709c3b5d16990b32d038","res\\layout/notification_template_media_custom.xml":"5ae15f28b6f6af68acdda303cecb0aa3","res\\values-nl/values-nl.xml":"4a7643d80458575b6898d2eeabfac3a5","res\\drawable-xxhdpi-v4/abc_btn_radio_to_on_mtrl_000.png":"cc7827e3a802e7fcd10121aedbcb212f","res\\drawable-hdpi-v4/abc_ab_share_pack_mtrl_alpha.9.png":"72fb794b1a3d800c71af7795f1211e97","res\\drawable-xxhdpi-v4/abc_scrubber_control_to_pressed_mtrl_000.png":"02433dc9fb6e2475262d5834a62777cd","res\\drawable-xxhdpi-v4/abc_tab_indicator_mtrl_alpha.9.png":"fbeb7402048ddf861134d99a5df2e5cc","res\\layout/notification_template_custom_big.xml":"d9c6ec8514ad33f4fddc4bbbab7f0394","res\\values-gl-rES/values-gl-rES.xml":"d9b675c1a3f776024ec86038cf87d455","res\\values-hr/values-hr.xml":"901e86cd447a1ad2a15a9cd12555721a","res\\anim/abc_popup_enter.xml":"9fa54fb21a9d947c2c7ce671af667c1f","res\\drawable-hdpi-v4/abc_text_select_handle_right_mtrl_light.png":"8ec56aae841b70533d77c229a8895263","res\\drawable-xxhdpi-v4/abc_ic_star_black_48dp.png":"b324d4a361a4742d1730ea9b42f0c464","res\\drawable-hdpi-v4/abc_list_selector_disabled_holo_light.9.png":"5c0e980d3a46db6eccee482127654c53","res\\drawable/abc_ic_ab_back_material.xml":"45b06da0b837cb04da1cce68927bf08d","res\\drawable-ldrtl-mdpi-v17/abc_ic_menu_cut_mtrl_alpha.png":"4136fe66fc8211a533fbd98b703ef6de","res\\values-fa/values-fa.xml":"75b31a2c2ffd75c9d70dda7558ac58dd","res\\values-b+sr+Latn/values-b+sr+Latn.xml":"b886064241776712a94d8dab3a9085ae","res\\drawable-v21/abc_edit_text_material.xml":"dfdae0d7ad902961affc498b0194b581","res\\drawable-xhdpi-v4/abc_ic_menu_selectall_mtrl_alpha.png":"491bbfa9ae36a135229893590b5b9069","res\\drawable-xxhdpi-v4/abc_ic_star_black_16dp.png":"04996cb6966ce6d18d0980fdc79fe14b","res\\drawable-hdpi-v4/abc_text_select_handle_left_mtrl_light.png":"60a98bc967cbdfd3fed48525422d185d","res\\drawable-hdpi-v4/abc_btn_radio_to_on_mtrl_015.png":"3f4d2053c0fc197f4cc974a1b6afaae7","res\\color-v23/abc_tint_spinner.xml":"31af5d1e3971579d7142c7e2a9c4c1d1","res\\drawable-mdpi-v4/abc_textfield_search_activated_mtrl_alpha.9.png":"4a89a4a0e38ef015fac94768ef01b222","res\\drawable-xxhdpi-v4/abc_scrubber_control_off_mtrl_alpha.png":"09122ca67f532836709345444c292f01","res\\values-ldltr-v21/values-ldltr-v21.xml":"4bb116916ea31eec6fe245869b742323","res\\drawable-xxhdpi-v4/abc_text_select_handle_left_mtrl_light.png":"70932a7a3c183e78638d0ac4ad4cafb3","res\\values-es-rUS/values-es-rUS.xml":"07f976b31dfd46178627bbad49ba956f","res\\drawable-mdpi-v4/abc_ic_star_half_black_16dp.png":"41e0e0cb2242682e83441ce9146b9493","res\\drawable-xxhdpi-v4/abc_text_select_handle_middle_mtrl_dark.png":"afc391dc83b20284f771d19ea1650c54","res\\drawable/abc_seekbar_track_material.xml":"16e0b12ad478ba216691e15060964dab","res\\drawable-xhdpi-v4/abc_switch_track_mtrl_alpha.9.png":"bfa66dac06590b3176402892955d4e67","res\\color-v23/abc_btn_colored_text_material.xml":"33d986ab1801f01186358ccbffd72ffe","res\\drawable-xhdpi-v4/abc_textfield_search_default_mtrl_alpha.9.png":"9241413b405c6ef170cbc2997c9aeaeb","res\\drawable-hdpi-v4/abc_btn_radio_to_on_mtrl_000.png":"33cf4bfd82b9ad23db096839169954fa","res\\drawable-xxhdpi-v4/abc_btn_switch_to_on_mtrl_00001.9.png":"df048df888090b24cbdf217af0f2eb39","res\\drawable-mdpi-v4/abc_btn_switch_to_on_mtrl_00012.9.png":"4807af9402bf7ce9dd942f898a91dd4d","res\\mipmap-hdpi/ic_launcher.png":"834768b45417e46af115c3e473a5a8e0","res\\drawable-mdpi-v4/abc_btn_radio_to_on_mtrl_000.png":"804c64a1eb5e033e9ea6c271757d22c6","res\\values-zh-rHK/values-zh-rHK.xml":"1ab03272a9cb1c10710310efc9fac070","res\\drawable/abc_ic_menu_overflow_material.xml":"271cbb617b085771f716406e1c3472b7","res\\layout/notification_template_part_chronometer.xml":"4a9a9747a51144b0b364afa09df2ba4f","res\\drawable-xhdpi-v4/abc_list_pressed_holo_light.9.png":"e274277dac281b54380dac1b4e1716e4","res\\values-fr-rCA/values-fr-rCA.xml":"875fc72adff65137d3dd80f0d16479ec","res\\drawable-mdpi-v4/abc_list_focused_holo.9.png":"251cb711a18da5918b23c08cb5909743","res\\layout/abc_screen_simple_overlay_action_mode.xml":"ceb62ed2e5646e93d21162e931d19c0b","res\\drawable-hdpi-v4/abc_cab_background_top_mtrl_alpha.9.png":"7806e1e9cdebd696a9ec56849d3bca38","res\\drawable-xhdpi-v4/abc_list_selector_disabled_holo_dark.9.png":"850592bbfb845309af95b61f1dcc427f","res\\drawable/abc_item_background_holo_light.xml":"2322db6d5e52bf02d7ddb06dcd4a5cef","res\\drawable/abc_seekbar_thumb_material.xml":"f43980fc02b7d4cb113493a034a7c6b2","res\\drawable/default_head_boy.png":"4fa8a2dd5f5653fd311cc7536b7a9198","res\\drawable/notification_bg.xml":"3ed1cdc4fb2802ebf89c5ed77874d89f","res\\drawable-xxhdpi-v4/abc_textfield_search_activated_mtrl_alpha.9.png":"2dea846fa628fd6cdd2cfdaa4368facb","res\\drawable/abc_list_selector_background_transition_holo_light.xml":"d2341d3edd6d4f83a07b9ac62e050858","res\\drawable-xhdpi-v4/abc_scrubber_track_mtrl_alpha.9.png":"d079a074fed87984ac0b19c5cba1e791","res\\drawable-xxhdpi-v4/abc_list_longpressed_holo.9.png":"0cdda086f68f67305b79c4ae1c0f6c94","res\\layout-v11/notification_template_big_media_custom.xml":"5befb28ee68d27ce53441c348234d1ed","res\\drawable-hdpi-v4/abc_list_longpressed_holo.9.png":"cc1c9701e5ad8943427423259bdd61c2","res\\color/abc_secondary_text_material_light.xml":"e0b70dc51d89cb9cd645fe5f84d9531d","res\\color-v11/abc_background_cache_hint_selector_material_dark.xml":"5be3a9e24963ba7073d45c223a2cbf6b","res\\drawable-xxhdpi-v4/abc_switch_track_mtrl_alpha.9.png":"77ca15c72858d4edc7cd01fe5055f4bd","res\\drawable-ldrtl-xxhdpi-v17/abc_ic_menu_cut_mtrl_alpha.png":"49ab4d003b5025bd1a794fc466c39fca","res\\anim/abc_slide_out_top.xml":"47dcc05b81f1ef3c3f3efc26cb40ed89","res\\values-ur-rPK/values-ur-rPK.xml":"bf6f8cb49612b1b98be174bd66fa9f2f","res\\drawable-hdpi-v4/abc_switch_track_mtrl_alpha.9.png":"5ae78d27292ba82ba685fe953bfa2441","res\\anim/abc_popup_exit.xml":"a657fe9f830040767e0b0466474a0d10","res\\color-v23/abc_tint_switch_track.xml":"92167d529dd7f9c6abd05e49699e598e","res\\values-fr/values-fr.xml":"5d681cbd90904d3d6cbed7cf133057c6","res\\drawable/abc_list_selector_background_transition_holo_dark.xml":"2adc45f7d5c42911aa46d27fc89a39a5","res\\values-ru/values-ru.xml":"83be34eace953c94a63149b04f11fc93","res\\drawable/abc_list_selector_holo_light.xml":"f0d14c057eb181cb950601b48f1cf06e","res\\drawable-v21/notification_action_background.xml":"b88a57fa0c2fbe2ed61a01dabf48e530","res\\anim/abc_slide_out_bottom.xml":"0a7eb966d35ebdf1d8280f9c395f9ed5","res\\layout/notification_template_part_time.xml":"f951e0bece32a34265c0512ac7121351","res\\drawable-hdpi-v4/abc_scrubber_primary_mtrl_alpha.9.png":"6ede4a909c35f107d34f19974d03888e","res\\drawable-xhdpi-v4/abc_list_divider_mtrl_alpha.9.png":"0c788090a2b8cd67a093b24b3d61787a","res\\drawable-xxxhdpi-v4/abc_text_select_handle_left_mtrl_dark.png":"2f8520ea751c6aa3d4c3cdc72c889eea","res\\drawable-hdpi-v4/abc_ic_star_half_black_48dp.png":"1d9f4557f33eda67692b761a6fa6cee5","res\\drawable/abc_item_background_holo_dark.xml":"e7da766ba8a5cec4f4df76984efaaa6d","res\\drawable-xxxhdpi-v4/abc_ic_star_black_36dp.png":"d3ca26ebc43d555e2cf198ce1cf1f896","res\\drawable-xxhdpi-v4/abc_ic_star_half_black_48dp.png":"2edd78a14468110e17014bb2ef5217b0","res\\drawable-xhdpi-v4/abc_tab_indicator_mtrl_alpha.9.png":"87fd043099236fce0125f50f04b08505","res\\drawable/abc_vector_test.xml":"2de8d716441fbbfe95f283ce9f6e9311","res\\layout-v21/notification_action.xml":"afd4a7581fa6790c3e7b711758d848e8","res\\drawable-xxxhdpi-v4/abc_ic_star_black_48dp.png":"f288f58b123650b064bb087c559fcea5","res\\layout/abc_action_bar_view_list_nav_layout.xml":"82d7e68392703b0912c321e1c19b92ba","res\\drawable-ldrtl-hdpi-v17/abc_spinner_mtrl_am_alpha.9.png":"12eb7340b461f4204cf2c92b71704149","res\\drawable/abc_ratingbar_small_material.xml":"0d61891ff7e6b29e67e0eb443b7eac6c","res\\drawable-xhdpi-v4/abc_ic_menu_paste_mtrl_am_alpha.png":"e9694067b79fdcf583b68ddefb3b0106","res\\drawable-xxxhdpi-v4/abc_text_select_handle_right_mtrl_dark.png":"79122df5b363a6bac25774c42e91df10","res\\values-uz-rUZ/values-uz-rUZ.xml":"460e38e858479bc463133fe2ffbee1d3","res\\anim/abc_shrink_fade_out_from_bottom.xml":"216d4bcd8b6f755873a98ace01e0dc19","res\\values-en-rAU/values-en-rAU.xml":"46b2caba21c765e1db9b80c51a55a187","res\\layout/abc_action_mode_bar.xml":"7fe722bd59ec93a7f6f21ad955dda35d","res\\drawable-ldrtl-xxxhdpi-v17/abc_ic_menu_cut_mtrl_alpha.png":"4071738e1853ae865079059a189002c8","res\\drawable-xxhdpi-v4/abc_spinner_mtrl_am_alpha.9.png":"08a4bc1eb6f8f75716ff8dec95624e00","res\\color/abc_primary_text_disable_only_material_dark.xml":"1697b34c6835a2caddd9f13324f16677","res\\drawable-ldrtl-xhdpi-v17/abc_ic_menu_copy_mtrl_am_alpha.png":"a79a2864f8e497b4559c3fcc05f4043b","res\\drawable-mdpi-v4/abc_ic_star_half_black_36dp.png":"2885f6eaae81ebeecf0eeacbe9cfaf44","res\\drawable-mdpi-v4/abc_text_select_handle_middle_mtrl_dark.png":"921b4edd6acbd60c87f6ce93e93d8ee9","res\\drawable-xhdpi-v4/notification_bg_normal_pressed.9.png":"d422e95d716d1d1582fbcac1149fdb04","res\\color/abc_primary_text_material_light.xml":"b7bcb3b3d40a19995046c35bf0ecaf1a","res\\values-el/values-el.xml":"251cb531b1dd84868054bcbe06c3c3bb","res\\drawable-xhdpi-v4/abc_text_select_handle_middle_mtrl_dark.png":"665e9c331d74222d560bb14623266f52","res\\drawable-xhdpi-v4/abc_ab_share_pack_mtrl_alpha.9.png":"d6b56b06884caee083290b7e8f527f7c","res\\layout/activity_loding.xml":"6abaa37806953b5f49d4f9e33ddb3aed","res\\drawable-xhdpi-v4/abc_text_select_handle_left_mtrl_light.png":"deca60eed1f429e6720ff0e29fa6e75d","res\\layout/abc_alert_dialog_button_bar_material.xml":"e77798e6cb80e13281b521143313e81b","res\\drawable-xhdpi-v4/abc_scrubber_control_off_mtrl_alpha.png":"3c70ccef1a668c71601d06580151633a","res\\mipmap-xxhdpi/ic_launcher_round.png":"65b3590554d0bc9f447017b0e1a1145c","res\\values-v16/values-v16.xml":"9c27bbea90065be9374d84e65739954a","res\\values-v17/values-v17.xml":"d587130b16a3eba9973bdccb629921fc","res\\drawable-hdpi-v4/abc_scrubber_control_off_mtrl_alpha.png":"e78d73a110566edd7f6c625223060dbb","res\\drawable-mdpi-v4/notification_bg_low_pressed.9.png":"b79ea884b65b3060c829eef49687391d","res\\drawable-hdpi-v4/abc_list_pressed_holo_light.9.png":"3f93b778fd37be2a81685ea16226a1d4","res\\values-land/values-land.xml":"d5c695cc2b3d39fb7c1516c7604b150c","res\\color/abc_btn_colored_borderless_text_material.xml":"8b91aec6fa9c815b5295343ff2d8b3b3","res\\drawable-ldrtl-xxxhdpi-v17/abc_spinner_mtrl_am_alpha.9.png":"f5ef16e415a4abebd0c871adde840302","res\\drawable-mdpi-v4/abc_tab_indicator_mtrl_alpha.9.png":"19ff1fc57b35034a2d60bb32e2ce599f","res\\values-h720dp-v13/values-h720dp-v13.xml":"c518f0eab03d706646df660beeb920cf","res\\drawable-xhdpi-v4/abc_ic_star_half_black_48dp.png":"ac441ac0708b56c60ba43389c728d9d5","res\\values-mr-rIN/values-mr-rIN.xml":"458a95c3b4333ea4d2b6113b171a64f6","res\\drawable-hdpi-v4/abc_ic_star_black_16dp.png":"60a26e94b03ceca783c8f9c0dfd54f12","res\\layout/abc_action_bar_title_item.xml":"3b022e1813926937ddf8c430965804c5","res\\drawable-mdpi-v4/abc_ic_star_black_36dp.png":"8b4614ebc3f11bf78fb3e6f60cf6abce","res\\values-ja/values-ja.xml":"b635602c429c9860e3df6527d2cc8d80","res\\layout/support_simple_spinner_dropdown_item.xml":"1e0804f9a2873599bf77fc5555e93f89","res\\layout/abc_select_dialog_material.xml":"e643d3f0524bcd4dda525ccbc3b138a4","res\\values-de/values-de.xml":"c551887e50f987175469a38ba0c98e43","res\\drawable-xhdpi-v4/abc_ic_menu_copy_mtrl_am_alpha.png":"ca27f19092e04d5c4b6ad05985809ff5","res\\drawable-mdpi-v4/abc_ic_menu_paste_mtrl_am_alpha.png":"8be6cbc54e87f683a0f11eb98cdb75df","res\\values-sw600dp-v13/values-sw600dp-v13.xml":"421fd9af804c0aaf856d32314ab50bfe","res\\layout-v21/notification_template_custom_big.xml":"003495c5d8353b6099f50cfcde3d2bb7","res\\drawable/abc_textfield_search_material.xml":"a6e37a94fdcd5f6894c89319ff88d8ee","res\\values-it/values-it.xml":"0f7d9ee8daa7dc66b5eae714643158ee","res\\values/values.xml":"6a73acef37f9879fa542c3b9cac2e968","res\\drawable-mdpi-v4/abc_text_select_handle_left_mtrl_light.png":"f9ceedd9b6923fca678d4351fa1985b1","res\\layout/select_dialog_multichoice_material.xml":"a1eb8efdaaeac72ff553426f2f84fa35","res\\color/abc_tint_btn_checkable.xml":"70c6807ac2b1e98654ae2e97aef72e51","res\\values-port/values-port.xml":"bfce5014f3af863450510f1f60f9cc69","res\\drawable-xxhdpi-v4/abc_ic_star_black_36dp.png":"72d992448e2376b9cfd06ca03b2281b0","res\\layout/abc_action_mode_close_item_material.xml":"817c8a0c3d72c5df61ab4b4b4eec7b8e","res\\drawable-xhdpi-v4/abc_list_longpressed_holo.9.png":"191d324e6286607304758c843818f8c3","res\\drawable-xhdpi-v4/abc_text_select_handle_middle_mtrl_light.png":"2ccdda069aeaff8896cf595cf344c7c7","res\\drawable-mdpi-v4/abc_btn_switch_to_on_mtrl_00001.9.png":"2438f33c4fe103bf47d6f5ee2ee193db","res\\drawable-xxxhdpi-v4/abc_btn_switch_to_on_mtrl_00012.9.png":"0464687149eb5bb726433cbd2a32013b","res\\drawable-xxxhdpi-v4/abc_ic_star_half_black_48dp.png":"de61f14e0a18d85799ecb40013e668d1","res\\drawable/abc_list_selector_holo_dark.xml":"4deaea561aadbbf1158a9712f0c46737","res\\drawable-xxxhdpi-v4/abc_scrubber_control_to_pressed_mtrl_000.png":"30c67c94e31f2fd7f1bdde008bb14d60","res\\layout/abc_screen_simple.xml":"73c9b850d5461f1769239d7cf3e49d45","res\\drawable-xxhdpi-v4/abc_btn_switch_to_on_mtrl_00012.9.png":"096b6b629dcbdee5de7995f32ce04e44","res\\layout/select_dialog_singlechoice_material.xml":"abd78ffa28028034ab54469f91bbeb24","res\\drawable-mdpi-v4/abc_ic_menu_copy_mtrl_am_alpha.png":"cb55ecf5fa82d2b25d26a9238ec2decc","res\\values-sl/values-sl.xml":"adc957603545659c85ea48de5f6106cd","res\\values-pt/values-pt.xml":"af69b57b1fcda8ee632baa2cc4cd1afa","res\\drawable-xhdpi-v4/abc_scrubber_control_to_pressed_mtrl_005.png":"ed76fc550eea417dfdc47cf99620ccf6","res\\mipmap-hdpi/ic_launcher_round.png":"8dff9a318174c479ae60d50da90e134d","res\\values-is-rIS/values-is-rIS.xml":"032d860f827064c31cc4a583baf25ce9","res\\drawable-ldrtl-hdpi-v17/abc_ic_menu_copy_mtrl_am_alpha.png":"20624ee72b786f20454b93b029893e81","res\\anim/abc_fade_in.xml":"35c512cf848669f49f9c13945328c0c9","res\\drawable-ldrtl-mdpi-v17/abc_ic_menu_copy_mtrl_am_alpha.png":"30cfa0316de977ab09057728b4136ad8","res\\drawable-xxhdpi-v4/abc_scrubber_track_mtrl_alpha.9.png":"840ea280d2d45861768c4e833b208b3c","res\\drawable-xxxhdpi-v4/abc_ic_menu_paste_mtrl_am_alpha.png":"b8d142cc5a8bbd408e4cd28e815ae330","res\\drawable-xhdpi-v4/abc_btn_switch_to_on_mtrl_00001.9.png":"c21133e4dec77001dfe6d963db40d271","res\\drawable-xxhdpi-v4/abc_list_pressed_holo_light.9.png":"acf23a2c24ed536666ffc0ee7660ce1f","res\\layout/abc_popup_menu_header_item_layout.xml":"d52fcd18cd3ecc65a2757c817d29d384","res\\color-v23/abc_tint_default.xml":"0376704e27c00cf6d3477d24444ce4b5","res\\values-am/values-am.xml":"fbcd214f6dd89ff0884c7b59f77bad7b","res\\drawable-hdpi-v4/notify_panel_notification_icon_bg.png":"c0d309204db75f8f194cf7b5f781b3ac","res\\drawable-xhdpi-v4/abc_ic_star_black_36dp.png":"b2ae87f0a9e3cf1d28d2f0d67d8e3d56","res\\values-uk/values-uk.xml":"14ce70df6662b2baf8e4a847613a648c","res\\layout/abc_action_bar_up_container.xml":"99374af20f86ffc7518494fda822f785","res\\drawable/abc_ic_search_api_material.xml":"543e8cc696f4b8d182563d14c48bd80f","res\\drawable/abc_ic_arrow_drop_right_black_24dp.xml":"96b7ce8efb7682d97342d79eac87bdef","res\\drawable-hdpi-v4/abc_textfield_search_activated_mtrl_alpha.9.png":"129ad5b160cf0cecedd6616e390c074c"}} -------------------------------------------------------------------------------- /app/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /app/atlasdemo.jks: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dongze5/AtlasDemo/e8a0b0e753b594552a812da0ba1a7c6e129465b3/app/atlasdemo.jks -------------------------------------------------------------------------------- /app/build.gradle: -------------------------------------------------------------------------------- 1 | // 需要放最上面初始化 2 | group = "com.android.dzatlas" 3 | version = getEnvValue("versionName", "1.1.1"); 4 | def apVersion = getEnvValue("apVersion", ""); 5 | 6 | apply plugin: 'com.android.application' 7 | apply plugin: 'com.taobao.atlas' 8 | 9 | android { 10 | compileSdkVersion 25 11 | buildToolsVersion "25.0.2" 12 | defaultConfig { 13 | applicationId "com.android.dzatlas" 14 | minSdkVersion 15 15 | targetSdkVersion 25 16 | versionCode 1 17 | versionName version 18 | } 19 | 20 | signingConfigs { 21 | debug { 22 | storeFile file("atlasdemo.jks") 23 | storePassword "123456" 24 | keyAlias "key" 25 | keyPassword "123456" 26 | } 27 | } 28 | 29 | buildTypes { 30 | debug { 31 | minifyEnabled false 32 | zipAlignEnabled true 33 | signingConfig signingConfigs.debug 34 | } 35 | } 36 | } 37 | 38 | dependencies { 39 | compile fileTree(dir: 'libs', include: ['*.jar']) 40 | compile 'com.android.support:appcompat-v7:25.3.1' 41 | compile 'com.android.support.constraint:constraint-layout:1.0.0-alpha8' 42 | compile 'com.alibaba:fastjson:1.1.45.android@jar' 43 | 44 | compile('com.taobao.android:atlas_core:5.0.7@aar') { 45 | transitive = true 46 | } 47 | compile 'com.taobao.android:atlasupdate:1.1.4.7@aar' 48 | 49 | // 初次加载组件 打包进apk 50 | bundleCompile project(':homebundle') 51 | // 远程加载组件 不打包进apk 52 | bundleCompile project(':loadingbundle') 53 | // 公共方法库 宿主与组件使用 54 | compile project(':middlewarelibrary') 55 | } 56 | 57 | atlas { 58 | atlasEnabled true 59 | tBuildConfig { 60 | autoStartBundles = ['com.android.homebundle'] //自启动bundle配置 61 | outOfApkBundles = ['loadingbundle'] //不把bundle编译进APK,在客户端使用时下载后加载 62 | preLaunch = 'com.android.dzatlas.DzPreLaunch' //AppApplication启动之前调用 63 | } 64 | patchConfigs { 65 | debug { 66 | createTPatch true 67 | } 68 | } 69 | buildTypes { 70 | debug { 71 | if (apVersion) { 72 | // 打差异补丁 gradlew assembleDebug -DapVersion=1.1.0 -DversionName=1.1.1 73 | // 对应着本地maven仓库地址 .m2/repository/com/android/dzatlas/AP-debug/1.1.4/AP-debug-1.1.4.ap 74 | baseApDependency "com.android.dzatlas:AP-debug:${apVersion}@ap" 75 | patchConfig patchConfigs.debug 76 | } 77 | } 78 | } 79 | } 80 | 81 | String getEnvValue(key, defValue) { 82 | def val = System.getProperty(key); 83 | if (null != val) { 84 | return val; 85 | } 86 | val = System.getenv(key); 87 | if (null != val) { 88 | return val; 89 | } 90 | return defValue; 91 | } 92 | 93 | apply plugin: 'maven' 94 | apply plugin: 'maven-publish' 95 | 96 | publishing { 97 | // 指定仓库位置 98 | repositories { 99 | mavenLocal() 100 | } 101 | publications { 102 | // 默认本地仓库地址 用户目录/.m2/repository/ 103 | maven(MavenPublication) { 104 | //读取ap目录上传maven 105 | artifact "${project.buildDir}/outputs/apk/${project.name}-debug.ap" 106 | //生成本地maven目录 107 | groupId group 108 | artifactId "AP-debug" 109 | } 110 | } 111 | } -------------------------------------------------------------------------------- /app/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # By default, the flags in this file are appended to flags specified 3 | # in D:\Android\sdk/tools/proguard/proguard-android.txt 4 | # You can edit the include path and order by changing the proguardFiles 5 | # directive in build.gradle. 6 | # 7 | # For more details, see 8 | # http://developer.android.com/guide/developing/tools/proguard.html 9 | 10 | # Add any project specific keep options here: 11 | 12 | # If your project uses WebView with JS, uncomment the following 13 | # and specify the fully qualified class name to the JavaScript interface 14 | # class: 15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 16 | # public *; 17 | #} 18 | 19 | # Uncomment this to preserve the line number information for 20 | # debugging stack traces. 21 | #-keepattributes SourceFile,LineNumberTable 22 | 23 | # If you keep the line number information, uncomment this to 24 | # hide the original source file name. 25 | #-renamesourcefileattribute SourceFile 26 | -------------------------------------------------------------------------------- /app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /app/src/main/java/com/android/dzatlas/AppApplication.java: -------------------------------------------------------------------------------- 1 | package com.android.dzatlas; 2 | 3 | import android.app.Activity; 4 | import android.app.Application; 5 | import android.content.Intent; 6 | import android.content.pm.PackageInfo; 7 | import android.taobao.atlas.bundleInfo.AtlasBundleInfoManager; 8 | import android.taobao.atlas.framework.Atlas; 9 | import android.taobao.atlas.runtime.ActivityTaskMgr; 10 | import android.taobao.atlas.runtime.ClassNotFoundInterceptorCallback; 11 | import android.text.TextUtils; 12 | import android.util.Log; 13 | import android.widget.Toast; 14 | 15 | import org.osgi.framework.BundleException; 16 | 17 | import java.io.File; 18 | 19 | public class AppApplication extends Application { 20 | 21 | @Override 22 | public void onCreate() { 23 | super.onCreate(); 24 | Log.d("tag", "=========AppApplication"); 25 | 26 | Atlas.getInstance().setClassNotFoundInterceptorCallback(new ClassNotFoundInterceptorCallback() { 27 | @Override 28 | public Intent returnIntent(Intent intent) { 29 | final String className = intent.getComponent().getClassName(); 30 | final String bundleName = AtlasBundleInfoManager.instance().getBundleForComponet(className); 31 | 32 | if (!TextUtils.isEmpty(bundleName) && !AtlasBundleInfoManager.instance().isInternalBundle(bundleName)) { 33 | 34 | //远程bundle 35 | Activity activity = ActivityTaskMgr.getInstance().peekTopActivity(); 36 | File remoteBundleFile = new File(activity.getExternalCacheDir(),"lib" + bundleName.replace(".","_") + ".so"); 37 | 38 | String path = ""; 39 | if (remoteBundleFile.exists()){ 40 | path = remoteBundleFile.getAbsolutePath(); 41 | }else { 42 | Toast.makeText(activity, " 远程bundle不存在,请确定 : " + remoteBundleFile.getAbsolutePath() , Toast.LENGTH_LONG).show(); 43 | return intent; 44 | } 45 | 46 | 47 | PackageInfo info = activity.getPackageManager().getPackageArchiveInfo(path, 0); 48 | try { 49 | Atlas.getInstance().installBundle(info.packageName, new File(path)); 50 | } catch (BundleException e) { 51 | Toast.makeText(activity, " 远程bundle 安装失败," + e.getMessage() , Toast.LENGTH_LONG).show(); 52 | 53 | e.printStackTrace(); 54 | } 55 | 56 | activity.startActivities(new Intent[]{intent}); 57 | 58 | } 59 | return intent; 60 | } 61 | }); 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /app/src/main/java/com/android/dzatlas/DzPreLaunch.java: -------------------------------------------------------------------------------- 1 | package com.android.dzatlas; 2 | 3 | import android.content.Context; 4 | import android.taobao.atlas.runtime.AtlasPreLauncher; 5 | import android.util.Log; 6 | 7 | 8 | public class DzPreLaunch implements AtlasPreLauncher { 9 | @Override 10 | public void initBeforeAtlas(Context context) { 11 | Log.d("tag", "=========prelaunch invokded"); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /app/src/main/java/com/android/dzatlas/MainActivity.java: -------------------------------------------------------------------------------- 1 | package com.android.dzatlas; 2 | 3 | import android.content.Intent; 4 | import android.os.AsyncTask; 5 | import android.support.v7.app.AppCompatActivity; 6 | import android.os.Bundle; 7 | import android.view.View; 8 | import android.widget.Toast; 9 | 10 | import com.android.middlewarelibrary.BaseActivity; 11 | import com.android.middlewarelibrary.NetUtils; 12 | 13 | public class MainActivity extends BaseActivity { 14 | 15 | @Override 16 | protected void onCreate(Bundle savedInstanceState) { 17 | super.onCreate(savedInstanceState); 18 | setContentView(R.layout.activity_main); 19 | 20 | // 加载远程bundle,LoadingBundle打包的时候不编译进apk中 21 | findViewById(R.id.click).setOnClickListener(new View.OnClickListener() { 22 | @Override 23 | public void onClick(View v) { 24 | Intent intent = new Intent(); 25 | intent.setClassName(v.getContext(), "com.android.loadingbundle.LoadingActivity"); 26 | startActivity(intent); 27 | } 28 | }); 29 | 30 | // 插件更新 31 | findViewById(R.id.click2).setOnClickListener(new View.OnClickListener() { 32 | @Override 33 | public void onClick(View v) { 34 | new AsyncTask() { 35 | @Override 36 | protected Void doInBackground(Void... voids) { 37 | Updater.update(getBaseContext()); 38 | return null; 39 | } 40 | 41 | @Override 42 | protected void onPostExecute(Void aVoid) { 43 | android.os.Process.killProcess(android.os.Process.myPid()); 44 | } 45 | }.execute(); 46 | } 47 | }); 48 | 49 | // 加载homebundle已编译在apk中 50 | findViewById(R.id.click3).setOnClickListener(new View.OnClickListener() { 51 | @Override 52 | public void onClick(View v) { 53 | Intent intent = new Intent(); 54 | intent.setClassName(v.getContext(), "com.android.homebundle.HomeActivity"); 55 | startActivity(intent); 56 | } 57 | }); 58 | 59 | Toast.makeText(this, NetUtils.getCode(), Toast.LENGTH_LONG).show(); 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /app/src/main/java/com/android/dzatlas/Updater.java: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * 4 | * Apache License 5 | * Version 2.0, January 2004 6 | * http://www.apache.org/licenses/ 7 | * 8 | * TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 9 | * 10 | * 1. Definitions. 11 | * 12 | * "License" shall mean the terms and conditions for use, reproduction, 13 | * and distribution as defined by Sections 1 through 9 of this document. 14 | * 15 | * "Licensor" shall mean the copyright owner or entity authorized by 16 | * the copyright owner that is granting the License. 17 | * 18 | * "Legal Entity" shall mean the union of the acting entity and all 19 | * other entities that control, are controlled by, or are under common 20 | * control with that entity. For the purposes of this definition, 21 | * "control" means (i) the power, direct or indirect, to cause the 22 | * direction or management of such entity, whether by contract or 23 | * otherwise, or (ii) ownership of fifty percent (50%) or more of the 24 | * outstanding shares, or (iii) beneficial ownership of such entity. 25 | * 26 | * "You" (or "Your") shall mean an individual or Legal Entity 27 | * exercising permissions granted by this License. 28 | * 29 | * "Source" form shall mean the preferred form for making modifications, 30 | * including but not limited to software source code, documentation 31 | * source, and configuration files. 32 | * 33 | * "Object" form shall mean any form resulting from mechanical 34 | * transformation or translation of a Source form, including but 35 | * not limited to compiled object code, generated documentation, 36 | * and conversions to other media types. 37 | * 38 | * "Work" shall mean the work of authorship, whether in Source or 39 | * Object form, made available under the License, as indicated by a 40 | * copyright notice that is included in or attached to the work 41 | * (an example is provided in the Appendix below). 42 | * 43 | * "Derivative Works" shall mean any work, whether in Source or Object 44 | * form, that is based on (or derived from) the Work and for which the 45 | * editorial revisions, annotations, elaborations, or other modifications 46 | * represent, as a whole, an original work of authorship. For the purposes 47 | * of this License, Derivative Works shall not include works that remain 48 | * separable from, or merely link (or bind by name) to the interfaces of, 49 | * the Work and Derivative Works thereof. 50 | * 51 | * "Contribution" shall mean any work of authorship, including 52 | * the original version of the Work and any modifications or additions 53 | * to that Work or Derivative Works thereof, that is intentionally 54 | * submitted to Licensor for inclusion in the Work by the copyright owner 55 | * or by an individual or Legal Entity authorized to submit on behalf of 56 | * the copyright owner. For the purposes of this definition, "submitted" 57 | * means any form of electronic, verbal, or written communication sent 58 | * to the Licensor or its representatives, including but not limited to 59 | * communication on electronic mailing lists, source code control systems, 60 | * and issue tracking systems that are managed by, or on behalf of, the 61 | * Licensor for the purpose of discussing and improving the Work, but 62 | * excluding communication that is conspicuously marked or otherwise 63 | * designated in writing by the copyright owner as "Not a Contribution." 64 | * 65 | * "Contributor" shall mean Licensor and any individual or Legal Entity 66 | * on behalf of whom a Contribution has been received by Licensor and 67 | * subsequently incorporated within the Work. 68 | * 69 | * 2. Grant of Copyright License. Subject to the terms and conditions of 70 | * this License, each Contributor hereby grants to You a perpetual, 71 | * worldwide, non-exclusive, no-charge, royalty-free, irrevocable 72 | * copyright license to reproduce, prepare Derivative Works of, 73 | * publicly display, publicly perform, sublicense, and distribute the 74 | * Work and such Derivative Works in Source or Object form. 75 | * 76 | * 3. Grant of Patent License. Subject to the terms and conditions of 77 | * this License, each Contributor hereby grants to You a perpetual, 78 | * worldwide, non-exclusive, no-charge, royalty-free, irrevocable 79 | * (except as stated in this section) patent license to make, have made, 80 | * use, offer to sell, sell, import, and otherwise transfer the Work, 81 | * where such license applies only to those patent claims licensable 82 | * by such Contributor that are necessarily infringed by their 83 | * Contribution(s) alone or by combination of their Contribution(s) 84 | * with the Work to which such Contribution(s) was submitted. If You 85 | * institute patent litigation against any entity (including a 86 | * cross-claim or counterclaim in a lawsuit) alleging that the Work 87 | * or a Contribution incorporated within the Work constitutes direct 88 | * or contributory patent infringement, then any patent licenses 89 | * granted to You under this License for that Work shall terminate 90 | * as of the date such litigation is filed. 91 | * 92 | * 4. Redistribution. You may reproduce and distribute copies of the 93 | * Work or Derivative Works thereof in any medium, with or without 94 | * modifications, and in Source or Object form, provided that You 95 | * meet the following conditions: 96 | * 97 | * (a) You must give any other recipients of the Work or 98 | * Derivative Works a copy of this License; and 99 | * 100 | * (b) You must cause any modified files to carry prominent notices 101 | * stating that You changed the files; and 102 | * 103 | * (c) You must retain, in the Source form of any Derivative Works 104 | * that You distribute, all copyright, patent, trademark, and 105 | * attribution notices from the Source form of the Work, 106 | * excluding those notices that do not pertain to any part of 107 | * the Derivative Works; and 108 | * 109 | * (d) If the Work includes a "NOTICE" text file as part of its 110 | * distribution, then any Derivative Works that You distribute must 111 | * include a readable copy of the attribution notices contained 112 | * within such NOTICE file, excluding those notices that do not 113 | * pertain to any part of the Derivative Works, in at least one 114 | * of the following places: within a NOTICE text file distributed 115 | * as part of the Derivative Works; within the Source form or 116 | * documentation, if provided along with the Derivative Works; or, 117 | * within a display generated by the Derivative Works, if and 118 | * wherever such third-party notices normally appear. The contents 119 | * of the NOTICE file are for informational purposes only and 120 | * do not modify the License. You may add Your own attribution 121 | * notices within Derivative Works that You distribute, alongside 122 | * or as an addendum to the NOTICE text from the Work, provided 123 | * that such additional attribution notices cannot be construed 124 | * as modifying the License. 125 | * 126 | * You may add Your own copyright statement to Your modifications and 127 | * may provide additional or different license terms and conditions 128 | * for use, reproduction, or distribution of Your modifications, or 129 | * for any such Derivative Works as a whole, provided Your use, 130 | * reproduction, and distribution of the Work otherwise complies with 131 | * the conditions stated in this License. 132 | * 133 | * 5. Submission of Contributions. Unless You explicitly state otherwise, 134 | * any Contribution intentionally submitted for inclusion in the Work 135 | * by You to the Licensor shall be under the terms and conditions of 136 | * this License, without any additional terms or conditions. 137 | * Notwithstanding the above, nothing herein shall supersede or modify 138 | * the terms of any separate license agreement you may have executed 139 | * with Licensor regarding such Contributions. 140 | * 141 | * 6. Trademarks. This License does not grant permission to use the trade 142 | * names, trademarks, service marks, or product names of the Licensor, 143 | * except as required for reasonable and customary use in describing the 144 | * origin of the Work and reproducing the content of the NOTICE file. 145 | * 146 | * 7. Disclaimer of Warranty. Unless required by applicable law or 147 | * agreed to in writing, Licensor provides the Work (and each 148 | * Contributor provides its Contributions) on an "AS IS" BASIS, 149 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 150 | * implied, including, without limitation, any warranties or conditions 151 | * of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 152 | * PARTICULAR PURPOSE. You are solely responsible for determining the 153 | * appropriateness of using or redistributing the Work and assume any 154 | * risks associated with Your exercise of permissions under this License. 155 | * 156 | * 8. Limitation of Liability. In no event and under no legal theory, 157 | * whether in tort (including negligence), contract, or otherwise, 158 | * unless required by applicable law (such as deliberate and grossly 159 | * negligent acts) or agreed to in writing, shall any Contributor be 160 | * liable to You for damages, including any direct, indirect, special, 161 | * incidental, or consequential damages of any character arising as a 162 | * result of this License or out of the use or inability to use the 163 | * Work (including but not limited to damages for loss of goodwill, 164 | * work stoppage, computer failure or malfunction, or any and all 165 | * other commercial damages or losses), even if such Contributor 166 | * has been advised of the possibility of such damages. 167 | * 168 | * 9. Accepting Warranty or Additional Liability. While redistributing 169 | * the Work or Derivative Works thereof, You may choose to offer, 170 | * and charge a fee for, acceptance of support, warranty, indemnity, 171 | * or other liability obligations and/or rights consistent with this 172 | * License. However, in accepting such obligations, You may act only 173 | * on Your own behalf and on Your sole responsibility, not on behalf 174 | * of any other Contributor, and only if You agree to indemnify, 175 | * defend, and hold each Contributor harmless for any liability 176 | * incurred by, or claims asserted against, such Contributor by reason 177 | * of your accepting any such warranty or additional liability. 178 | * 179 | * END OF TERMS AND CONDITIONS 180 | * 181 | * APPENDIX: How to apply the Apache License to your work. 182 | * 183 | * To apply the Apache License to your work, attach the following 184 | * boilerplate notice, with the fields enclosed by brackets "[]" 185 | * replaced with your own identifying information. (Don't include 186 | * the brackets!) The text should be enclosed in the appropriate 187 | * comment syntax for the file format. We also recommend that a 188 | * file or class name and description of purpose be included on the 189 | * same "printed page" as the copyright notice for easier 190 | * identification within third-party archives. 191 | * 192 | * Copyright 2016 Alibaba Group 193 | * 194 | * Licensed under the Apache License, Version 2.0 (the "License"); 195 | * you may not use this file except in compliance with the License. 196 | * You may obtain a copy of the License at 197 | * 198 | * http://www.apache.org/licenses/LICENSE-2.0 199 | * 200 | * Unless required by applicable law or agreed to in writing, software 201 | * distributed under the License is distributed on an "AS IS" BASIS, 202 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 203 | * See the License for the specific language governing permissions and 204 | * limitations under the License. 205 | * 206 | * 207 | */ 208 | 209 | package com.android.dzatlas; 210 | 211 | import android.content.Context; 212 | import android.os.Handler; 213 | import android.os.Looper; 214 | import android.util.Log; 215 | import android.widget.Toast; 216 | 217 | import com.alibaba.fastjson.JSON; 218 | import com.taobao.atlas.dex.util.FileUtils; 219 | import com.taobao.atlas.update.AtlasUpdater; 220 | import com.taobao.atlas.update.model.UpdateInfo; 221 | 222 | import java.io.File; 223 | 224 | /** 225 | * Created by wuzhong on 2016/12/20. 226 | */ 227 | 228 | public class Updater { 229 | 230 | public static void update(Context context) { 231 | 232 | File updateInfo = new File(context.getExternalCacheDir(), "update.json"); 233 | 234 | if (!updateInfo.exists()) { 235 | Log.e("update", "更新信息不存在,请先 执行 buildTpatch.sh"); 236 | toast("更新信息不存在,请先 执行 buildTpatch.sh", context); 237 | return; 238 | } 239 | 240 | String jsonStr = new String(FileUtils.readFile(updateInfo)); 241 | UpdateInfo info = JSON.parseObject(jsonStr, UpdateInfo.class); 242 | 243 | File patchFile = new File(context.getExternalCacheDir(), "patch-" + info.updateVersion + "@" + info.baseVersion + ".tpatch"); 244 | try { 245 | AtlasUpdater.update(info, patchFile); 246 | Log.e("update", "update success"); 247 | toast("更新成功,请重启app", context); 248 | } catch (Throwable e) { 249 | e.printStackTrace(); 250 | toast("更新失败, " + e.getMessage(), context); 251 | } 252 | 253 | } 254 | 255 | private static void toast(final String msg, final Context context) { 256 | new Handler(Looper.getMainLooper()).post(new Runnable() { 257 | @Override 258 | public void run() { 259 | Toast.makeText(context, msg, Toast.LENGTH_LONG).show(); 260 | } 261 | }); 262 | } 263 | 264 | 265 | } 266 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_main.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 |