├── .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 |
15 |
16 |
22 |
23 |
29 |
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dongze5/AtlasDemo/e8a0b0e753b594552a812da0ba1a7c6e129465b3/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dongze5/AtlasDemo/e8a0b0e753b594552a812da0ba1a7c6e129465b3/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dongze5/AtlasDemo/e8a0b0e753b594552a812da0ba1a7c6e129465b3/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dongze5/AtlasDemo/e8a0b0e753b594552a812da0ba1a7c6e129465b3/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dongze5/AtlasDemo/e8a0b0e753b594552a812da0ba1a7c6e129465b3/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dongze5/AtlasDemo/e8a0b0e753b594552a812da0ba1a7c6e129465b3/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dongze5/AtlasDemo/e8a0b0e753b594552a812da0ba1a7c6e129465b3/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dongze5/AtlasDemo/e8a0b0e753b594552a812da0ba1a7c6e129465b3/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dongze5/AtlasDemo/e8a0b0e753b594552a812da0ba1a7c6e129465b3/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dongze5/AtlasDemo/e8a0b0e753b594552a812da0ba1a7c6e129465b3/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #3F51B5
4 | #303F9F
5 | #FF4081
6 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | DzAtlas
3 |
4 |
--------------------------------------------------------------------------------
/app/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/build.gradle:
--------------------------------------------------------------------------------
1 | // Top-level build file where you can add configuration options common to all sub-projects/modules.
2 |
3 | buildscript {
4 | repositories {
5 | mavenLocal()
6 | jcenter()
7 | }
8 | configurations.all {
9 | resolutionStrategy.cacheDynamicVersionsFor 0, 'seconds'
10 | resolutionStrategy.cacheChangingModulesFor 0, 'seconds'
11 | }
12 | dependencies {
13 | classpath "com.taobao.android:atlasplugin:2.3.1.rc9"
14 | }
15 | }
16 |
17 | allprojects {
18 | repositories {
19 | mavenLocal()
20 | jcenter()
21 | }
22 | }
23 |
24 | task clean(type: Delete) {
25 | delete rootProject.buildDir
26 | }
27 |
--------------------------------------------------------------------------------
/gradle.properties:
--------------------------------------------------------------------------------
1 | ## Project-wide Gradle settings.
2 | #
3 | # For more details on how to configure your build environment visit
4 | # http://www.gradle.org/docs/current/userguide/build_environment.html
5 | #
6 | # Specifies the JVM arguments used for the daemon process.
7 | # The setting is particularly useful for tweaking memory settings.
8 | # Default value: -Xmx1024m -XX:MaxPermSize=256m
9 | # org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
10 | #
11 | # When configured, Gradle will run in incubating parallel mode.
12 | # This option should only be used with decoupled projects. More details, visit
13 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
14 | # org.gradle.parallel=true
15 | #Thu Apr 27 15:56:15 CST 2017
16 | systemProp.http.proxyHost=hx.gy
17 | org.gradle.jvmargs=-Xmx1536m
18 | systemProp.http.proxyPort=1080
19 |
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dongze5/AtlasDemo/e8a0b0e753b594552a812da0ba1a7c6e129465b3/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Tue Apr 25 13:36:31 CST 2017
2 | distributionBase=GRADLE_USER_HOME
3 | distributionPath=wrapper/dists
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 | distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip
7 |
--------------------------------------------------------------------------------
/gradlew:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | ##############################################################################
4 | ##
5 | ## Gradle start up script for UN*X
6 | ##
7 | ##############################################################################
8 |
9 | # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
10 | DEFAULT_JVM_OPTS=""
11 |
12 | APP_NAME="Gradle"
13 | APP_BASE_NAME=`basename "$0"`
14 |
15 | # Use the maximum available, or set MAX_FD != -1 to use that value.
16 | MAX_FD="maximum"
17 |
18 | warn ( ) {
19 | echo "$*"
20 | }
21 |
22 | die ( ) {
23 | echo
24 | echo "$*"
25 | echo
26 | exit 1
27 | }
28 |
29 | # OS specific support (must be 'true' or 'false').
30 | cygwin=false
31 | msys=false
32 | darwin=false
33 | case "`uname`" in
34 | CYGWIN* )
35 | cygwin=true
36 | ;;
37 | Darwin* )
38 | darwin=true
39 | ;;
40 | MINGW* )
41 | msys=true
42 | ;;
43 | esac
44 |
45 | # Attempt to set APP_HOME
46 | # Resolve links: $0 may be a link
47 | PRG="$0"
48 | # Need this for relative symlinks.
49 | while [ -h "$PRG" ] ; do
50 | ls=`ls -ld "$PRG"`
51 | link=`expr "$ls" : '.*-> \(.*\)$'`
52 | if expr "$link" : '/.*' > /dev/null; then
53 | PRG="$link"
54 | else
55 | PRG=`dirname "$PRG"`"/$link"
56 | fi
57 | done
58 | SAVED="`pwd`"
59 | cd "`dirname \"$PRG\"`/" >/dev/null
60 | APP_HOME="`pwd -P`"
61 | cd "$SAVED" >/dev/null
62 |
63 | CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
64 |
65 | # Determine the Java command to use to start the JVM.
66 | if [ -n "$JAVA_HOME" ] ; then
67 | if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
68 | # IBM's JDK on AIX uses strange locations for the executables
69 | JAVACMD="$JAVA_HOME/jre/sh/java"
70 | else
71 | JAVACMD="$JAVA_HOME/bin/java"
72 | fi
73 | if [ ! -x "$JAVACMD" ] ; then
74 | die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
75 |
76 | Please set the JAVA_HOME variable in your environment to match the
77 | location of your Java installation."
78 | fi
79 | else
80 | JAVACMD="java"
81 | which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
82 |
83 | Please set the JAVA_HOME variable in your environment to match the
84 | location of your Java installation."
85 | fi
86 |
87 | # Increase the maximum file descriptors if we can.
88 | if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
89 | MAX_FD_LIMIT=`ulimit -H -n`
90 | if [ $? -eq 0 ] ; then
91 | if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
92 | MAX_FD="$MAX_FD_LIMIT"
93 | fi
94 | ulimit -n $MAX_FD
95 | if [ $? -ne 0 ] ; then
96 | warn "Could not set maximum file descriptor limit: $MAX_FD"
97 | fi
98 | else
99 | warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
100 | fi
101 | fi
102 |
103 | # For Darwin, add options to specify how the application appears in the dock
104 | if $darwin; then
105 | GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
106 | fi
107 |
108 | # For Cygwin, switch paths to Windows format before running java
109 | if $cygwin ; then
110 | APP_HOME=`cygpath --path --mixed "$APP_HOME"`
111 | CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
112 | JAVACMD=`cygpath --unix "$JAVACMD"`
113 |
114 | # We build the pattern for arguments to be converted via cygpath
115 | ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
116 | SEP=""
117 | for dir in $ROOTDIRSRAW ; do
118 | ROOTDIRS="$ROOTDIRS$SEP$dir"
119 | SEP="|"
120 | done
121 | OURCYGPATTERN="(^($ROOTDIRS))"
122 | # Add a user-defined pattern to the cygpath arguments
123 | if [ "$GRADLE_CYGPATTERN" != "" ] ; then
124 | OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
125 | fi
126 | # Now convert the arguments - kludge to limit ourselves to /bin/sh
127 | i=0
128 | for arg in "$@" ; do
129 | CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
130 | CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
131 |
132 | if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
133 | eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
134 | else
135 | eval `echo args$i`="\"$arg\""
136 | fi
137 | i=$((i+1))
138 | done
139 | case $i in
140 | (0) set -- ;;
141 | (1) set -- "$args0" ;;
142 | (2) set -- "$args0" "$args1" ;;
143 | (3) set -- "$args0" "$args1" "$args2" ;;
144 | (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
145 | (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
146 | (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
147 | (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
148 | (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
149 | (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
150 | esac
151 | fi
152 |
153 | # Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
154 | function splitJvmOpts() {
155 | JVM_OPTS=("$@")
156 | }
157 | eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
158 | JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
159 |
160 | exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
161 |
--------------------------------------------------------------------------------
/gradlew.bat:
--------------------------------------------------------------------------------
1 | @if "%DEBUG%" == "" @echo off
2 | @rem ##########################################################################
3 | @rem
4 | @rem Gradle startup script for Windows
5 | @rem
6 | @rem ##########################################################################
7 |
8 | @rem Set local scope for the variables with windows NT shell
9 | if "%OS%"=="Windows_NT" setlocal
10 |
11 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
12 | set DEFAULT_JVM_OPTS=
13 |
14 | set DIRNAME=%~dp0
15 | if "%DIRNAME%" == "" set DIRNAME=.
16 | set APP_BASE_NAME=%~n0
17 | set APP_HOME=%DIRNAME%
18 |
19 | @rem Find java.exe
20 | if defined JAVA_HOME goto findJavaFromJavaHome
21 |
22 | set JAVA_EXE=java.exe
23 | %JAVA_EXE% -version >NUL 2>&1
24 | if "%ERRORLEVEL%" == "0" goto init
25 |
26 | echo.
27 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
28 | echo.
29 | echo Please set the JAVA_HOME variable in your environment to match the
30 | echo location of your Java installation.
31 |
32 | goto fail
33 |
34 | :findJavaFromJavaHome
35 | set JAVA_HOME=%JAVA_HOME:"=%
36 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe
37 |
38 | if exist "%JAVA_EXE%" goto init
39 |
40 | echo.
41 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
42 | echo.
43 | echo Please set the JAVA_HOME variable in your environment to match the
44 | echo location of your Java installation.
45 |
46 | goto fail
47 |
48 | :init
49 | @rem Get command-line arguments, handling Windowz variants
50 |
51 | if not "%OS%" == "Windows_NT" goto win9xME_args
52 | if "%@eval[2+2]" == "4" goto 4NT_args
53 |
54 | :win9xME_args
55 | @rem Slurp the command line arguments.
56 | set CMD_LINE_ARGS=
57 | set _SKIP=2
58 |
59 | :win9xME_args_slurp
60 | if "x%~1" == "x" goto execute
61 |
62 | set CMD_LINE_ARGS=%*
63 | goto execute
64 |
65 | :4NT_args
66 | @rem Get arguments from the 4NT Shell from JP Software
67 | set CMD_LINE_ARGS=%$
68 |
69 | :execute
70 | @rem Setup the command line
71 |
72 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
73 |
74 | @rem Execute Gradle
75 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
76 |
77 | :end
78 | @rem End local scope for the variables with windows NT shell
79 | if "%ERRORLEVEL%"=="0" goto mainEnd
80 |
81 | :fail
82 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
83 | rem the _cmd.exe /c_ return code!
84 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
85 | exit /b 1
86 |
87 | :mainEnd
88 | if "%OS%"=="Windows_NT" endlocal
89 |
90 | :omega
91 |
--------------------------------------------------------------------------------
/homebundle/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/homebundle/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.taobao.atlas.library'
2 |
3 | // 如果要修改资源文件动态更新Bundle需要添加
4 | atlas {
5 | bundleConfig{
6 | awbBundle true
7 | }
8 | buildTypes {
9 | debug {
10 | baseApFile project.rootProject.file('app/build/outputs/apk/app-debug.ap')
11 | }
12 | }
13 | }
14 |
15 | android {
16 | compileSdkVersion 25
17 | buildToolsVersion "25.0.2"
18 |
19 | defaultConfig {
20 | minSdkVersion 15
21 | targetSdkVersion 25
22 | versionCode 1
23 | versionName "1.0"
24 | }
25 | buildTypes {
26 | release {
27 | minifyEnabled false
28 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
29 | }
30 | }
31 | }
32 |
33 | dependencies {
34 | compile fileTree(dir: 'libs', include: ['*.jar'])
35 | providedCompile 'com.android.support:appcompat-v7:25.3.1'
36 | providedCompile project(':middlewarelibrary')
37 | }
38 |
--------------------------------------------------------------------------------
/homebundle/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 |
--------------------------------------------------------------------------------
/homebundle/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/homebundle/src/main/java/com/android/homebundle/HomeActivity.java:
--------------------------------------------------------------------------------
1 | package com.android.homebundle;
2 |
3 | import android.os.Bundle;
4 | import android.support.v7.app.AppCompatActivity;
5 | import android.widget.Toast;
6 |
7 | import com.android.middlewarelibrary.BaseActivity;
8 |
9 | public class HomeActivity extends BaseActivity {
10 |
11 | @Override
12 | protected void onCreate(Bundle savedInstanceState) {
13 | super.onCreate(savedInstanceState);
14 | setContentView(R.layout.activity_home);
15 |
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/homebundle/src/main/res/drawable/home_chongzhi.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dongze5/AtlasDemo/e8a0b0e753b594552a812da0ba1a7c6e129465b3/homebundle/src/main/res/drawable/home_chongzhi.png
--------------------------------------------------------------------------------
/homebundle/src/main/res/layout/activity_home.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
12 |
13 |
17 |
18 |
22 |
23 |
--------------------------------------------------------------------------------
/homebundle/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | HomeBundle
3 |
4 |
--------------------------------------------------------------------------------
/loadingbundle/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/loadingbundle/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.taobao.atlas.library'
2 |
3 | // 如果要修改资源文件动态更新Bundle需要添加
4 | atlas {
5 | bundleConfig{
6 | awbBundle true
7 | }
8 | buildTypes {
9 | debug {
10 | baseApFile project.rootProject.file('app/build/outputs/apk/app-debug.ap')
11 | }
12 | }
13 | }
14 |
15 | android {
16 | compileSdkVersion 25
17 | buildToolsVersion "25.0.2"
18 |
19 | defaultConfig {
20 | minSdkVersion 15
21 | targetSdkVersion 25
22 | versionCode 1
23 | versionName "1.0"
24 | }
25 | buildTypes {
26 | release {
27 | minifyEnabled false
28 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
29 | }
30 | }
31 | }
32 |
33 | dependencies {
34 | compile fileTree(dir: 'libs', include: ['*.jar'])
35 | providedCompile project(':middlewarelibrary')
36 | providedCompile 'com.android.support.constraint:constraint-layout:1.0.0-alpha8'
37 | providedCompile 'com.android.support:appcompat-v7:25.3.1'
38 | providedCompile 'com.android.support.constraint:constraint-layout:1.0.0-alpha8'
39 | }
40 |
--------------------------------------------------------------------------------
/loadingbundle/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 |
--------------------------------------------------------------------------------
/loadingbundle/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/loadingbundle/src/main/java/com/android/loadingbundle/LoadingActivity.java:
--------------------------------------------------------------------------------
1 | package com.android.loadingbundle;
2 |
3 | import android.support.v7.app.AppCompatActivity;
4 | import android.os.Bundle;
5 |
6 | import com.android.middlewarelibrary.BaseActivity;
7 |
8 | public class LoadingActivity extends BaseActivity {
9 |
10 | @Override
11 | protected void onCreate(Bundle savedInstanceState) {
12 | super.onCreate(savedInstanceState);
13 | setContentView(R.layout.activity_loding);
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/loadingbundle/src/main/res/drawable/home_scan.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dongze5/AtlasDemo/e8a0b0e753b594552a812da0ba1a7c6e129465b3/loadingbundle/src/main/res/drawable/home_scan.png
--------------------------------------------------------------------------------
/loadingbundle/src/main/res/layout/activity_loding.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
11 |
12 |
16 |
17 |
20 |
21 |
--------------------------------------------------------------------------------
/loadingbundle/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | LoadingBundle
3 | 已经修改loding添加图片
4 |
5 |
--------------------------------------------------------------------------------
/middlewarelibrary/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/middlewarelibrary/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.android.library'
2 |
3 | android {
4 | compileSdkVersion 25
5 | buildToolsVersion "25.0.2"
6 |
7 | defaultConfig {
8 | minSdkVersion 15
9 | targetSdkVersion 25
10 | versionCode 1
11 | versionName "1.0"
12 | }
13 | buildTypes {
14 | release {
15 | minifyEnabled false
16 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
17 | }
18 | }
19 | }
20 |
21 | dependencies {
22 | compile fileTree(dir: 'libs', include: ['*.jar'])
23 | compile 'com.android.support:appcompat-v7:25.3.1'
24 | }
25 |
--------------------------------------------------------------------------------
/middlewarelibrary/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 |
--------------------------------------------------------------------------------
/middlewarelibrary/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/middlewarelibrary/src/main/java/com/android/middlewarelibrary/BaseActivity.java:
--------------------------------------------------------------------------------
1 | package com.android.middlewarelibrary;
2 |
3 | import android.os.Bundle;
4 | import android.support.v7.app.AppCompatActivity;
5 |
6 | public class BaseActivity extends AppCompatActivity {
7 |
8 | @Override
9 | protected void onCreate(Bundle savedInstanceState) {
10 | super.onCreate(savedInstanceState);
11 |
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/middlewarelibrary/src/main/java/com/android/middlewarelibrary/NetUtils.java:
--------------------------------------------------------------------------------
1 | package com.android.middlewarelibrary;
2 |
3 | public class NetUtils {
4 |
5 | public static String getCode(){
6 | return "10086...";
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/middlewarelibrary/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | middlewarelibrary
3 |
4 |
--------------------------------------------------------------------------------
/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':app', ':homebundle', ':loadingbundle', ':middlewarelibrary'
2 |
--------------------------------------------------------------------------------