From a04e77430cf4eb1432abf61a99e3dcb745ca0f66 Mon Sep 17 00:00:00 2001
From: client_Hale <339726288@qq.com>
Date: 星期四, 21 二月 2019 11:29:25 +0800
Subject: [PATCH] update 小牛互娱 & 超级梦 SDK接入提交

---
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_shuoming.png                         |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_toolbaricon.png                  |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_unpaychecked.png                 |    0 
 Project/sd_sdk/src/main/res/values/strings.xml                                             |    3 
 Project/sd_sdk/build.gradle                                                                |   65 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_clearicon.png                    |    0 
 Project/sd_sdk/src/game_sdgame/res/layout/activity_protocol.xml                            |   35 
 Project/sd_sdk/src/game_sdgame/res/drawable/game_sdk_clear.xml                             |    8 
 Project/sd_sdk/src/main/res/drawable/app_icon.png                                          |    0 
 Project/sd_sdk/.gitignore                                                                  |    1 
 Project/sd_sdk/src/game_sdgame/res/layout/activity_sign_pay.xml                            |  264 +
 Project/sd_sdk/src/game_sdgame/res/anim/game_sdk_ani_in.xml                                |   27 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_hkbea_gray.png                       |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable/protocol_show_bg.xml                           |    8 
 ChannelDiff/Android/xngame/libs/petlibrary-release.aar                                     |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_njcb.png                             |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_spdb.png                             |    0 
 Project/sd_sdk/src/game_sdgame/res/values/game_sdk_styles.xml                              |  128 
 Project/sd_sdk/src/game_sdgame/res/layout/game_sdk_dialog_reset_password.xml               |   99 
 Project/sd_sdk/src/game_sdgame/res/xml/game_sdk_accessible_service_config.xml              |    7 
 Project/sd_sdk/src/game_sdgame/res/values/game_sdk_4.0_colors.xml                          |    6 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_njcb_67.png                          |    0 
 Project/sd_sdk/src/game_sdgame/res/values/strings.xml                                      |    9 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_accountmanage.png                |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable/game_sdk_bt_back.xml                           |    6 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_img.jpg                          |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_toolbaricon_manage_letter.png    |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_toastbackground.png              |    0 
 Project/sd_sdk/libs/alipaySdk-20170710.jar                                                 |    0 
 Project/xn_sdk/src/main/java/com/secondworld/univeralsdk/LogUtil.java                      |  114 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_hengfeng.png                         |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_toolbaricon_iconleft.png         |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_citic.png                            |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_toolbaricon_bg.png               |    0 
 Project/xn_sdk/build.gradle                                                                |   79 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_szpab_gray.png                       |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_downarrow.png                    |    0 
 Project/xn_sdk/src/main/java/com/secondworld/univeralsdk/BatteryUtil.java                  |  113 
 Project/sd_sdk/src/main/java/com/secondworld/univeralsdk/FileUtil.java                     |  211 +
 Project/sd_sdk/src/game_sdgame/res/drawable/sdp_button_bg.xml                              |    4 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_hdyx.png                         |    0 
 Project/yl_sdk/src/game_ylgame/java/com/secondworld/univeralsdk/H2EngineSDK.java           |    3 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_hengfeng_gray.png                    |    0 
 Project/sd_sdk/libs/android-support-v4.jar                                                 |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable/game_sdk_bg.xml                                |    6 
 Project/xn_sdk/src/main/AndroidManifest.xml                                                |  244 +
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_cmb_gray.png                         |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_community_click.png              |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_inputbox2_click.png              |    0 
 Project/sd_sdk/src/game_sdgame/res/layout/sdp_activity_support_bank.xml                    |  136 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_longbluebutton.png               |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_paysearch.png                    |    0 
 Project/sd_sdk/src/main/java/com/secondworld/univeralsdk/BatteryUtil.java                  |  113 
 Project/sd_sdk/src/game_sdgame/res/layout/sdp_dialog_add_card_pay.xml                      |   87 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_back.png                         |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_line.png                         |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_community.png                    |    0 
 Project/sd_sdk/src/game_sdgame/res/layout/sdp_dialog_validcode_pay.xml                     |  176 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_toolbaricon_bg_left.png          |    0 
 Project/sd_sdk/libs/TenpayServiceSDK.jar                                                   |    0 
 Project/sd_sdk/src/game_sdgame/res/layout/game_sdk_dialog_webview.xml                      |   62 
 Project/sd_sdk/src/game_sdgame/res/drawable/sdp_support_bank_list_bg.xml                   |    7 
 Project/sd_sdk/src/main/res/drawable-hdpi/jpush_richpush_progressbar.xml                   |   20 
 Project/xn_sdk/src/main/java/com/secondworld/univeralsdk/NotchPhoneUtil.java               |  347 +
 Project/xn_sdk/src/main/res/layout/activity_main.xml                                       |   30 
 Project/sd_sdk/src/game_sdgame/res/layout/sdp_card_unbind_list_item.xml                    |   32 
 Project/xn_sdk/src/game_xngame/java/com/secondworld/univeralsdk/H2EngineSDK.java           |  454 ++
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_close_click.png                  |    0 
 Project/sd_sdk/src/game_sdgame/res/anim/pop_show.xml                                       |    7 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_button.png                       |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/support.png                               |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_bohai.png                            |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/icon_left_arrow.png                       |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_qq.png                           |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable/game_sdk_bg_pay.xml                            |    6 
 Project/sd_sdk/src/game_sdgame/res/layout/activity_main.xml                                |   76 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_bccb_gray.png                        |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/icon_gray_succ.png                        |    0 
 Project/sd_sdk/src/main/java/com/secondworld/univeralsdk/LogUtil.java                      |  114 
 Project/sd_sdk/src/game_sdgame/res/layout/game_sdk_dialog_exit_game.xml                    |   61 
 Project/xn_sdk/src/main/java/com/secondworld/univeralsdk/DebugUtil.java                    |   59 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_identifying_code_click.png       |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_inputbox2.png                    |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_inputbox.png                     |    0 
 Project/sd_sdk/src/game_sdgame/res/layout/game_sdk_dialog_login.xml                        |  304 +
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_other_gray.png                       |    0 
 Project/xn_sdk/src/main/java/com/secondworld/univeralsdk/CodeU2A.java                      |   85 
 Project/sd_sdk/src/main/java/com/secondworld/univeralsdk/UniversalUtil.java                |  401 ++
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_downwindow_line.png              |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_njcb_gray.png                        |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_bccb.png                             |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_psbc_gray.png                        |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_gd.png                               |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_sina.png                         |    0 
 Project/sd_sdk/src/main/res/drawable-hdpi/jpush_richpush_btn_selector.xml                  |   21 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_czb_gray.png                         |    0 
 Project/sd_sdk/src/main/res/drawable-hdpi/jpush_ic_richpush_actionbar_divider.png          |    0 
 GradleDiff/xngame/mainTemplate.gradle                                                      |   59 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_szpab.png                            |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_background.png                   |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_google.png                       |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_identifying_code.png             |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_img2.png                         |    0 
 Project/sd_sdk/src/game_sdgame/res/layout/sdp_activity_main.xml                            |    7 
 Project/sd_sdk/libs/bugly_crash_release.jar                                                |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_toolbaricon_click.png            |    0 
 Project/sd_sdk/src/main/java/com/secondworld/univeralsdk/CrashCatchUtil.java               |  233 +
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_show_password.png                |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_ccb_gray.png                         |    0 
 Project/sd_sdk/src/game_sdgame/res/layout/sdp_dialog_card_list.xml                         |   67 
 Project/xn_sdk/.gitignore                                                                  |    1 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_shrcb_gray.png                       |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable/game_sdk_sha_bg_rectangle.xml                  |    9 
 Project/yj_sdk/src/game_yj/java/com/secondworld/univeralsdk/H2EngineSDK.java               |    7 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_yk.png                           |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_cmb.png                              |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_toolbaricon_click_right.png      |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/icon_gray_logo.png                        |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_comm_gray.png                        |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_rightarrow.png                   |    0 
 Project/sd_sdk/src/game_sdgame/res/layout/game_sdk_dialog_common_register.xml              |   77 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_bluebutton_click.png             |    0 
 Project/xn_sdk/src/main/java/com/secondworld/univeralsdk/StaticDefine.java                 |   18 
 Project/sd_sdk/src/game_sdgame/res/drawable/game_sdk_base_white.xml                        |   10 
 Project/sd_sdk/src/main/java/com/secondworld/univeralsdk/UniqueID.java                     |  226 +
 Project/sd_sdk/src/game_sdgame/java/com/secondworld/univeralsdk/H2EngineSDK.java           |  455 ++
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_checked.png                      |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_dropdown.png                     |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable/sdp_edittext_normal_bg.xml                     |    8 
 Project/xn_sdk/libs/jpush-android-3.1.3.jar                                                |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_progress_loading.png             |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable/sdp_button_sel.xml                             |   14 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_psbc.png                             |    0 
 Project/sd_sdk/libs/okhttp-3.9.0.jar                                                       |    0 
 Project/sd_sdk/src/game_sdgame/java/com/secondworld/univeralsdk/SDPlatformUtil.java        |  252 +
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_toolbaricon_paylog.png           |    0 
 Project/sd_sdk/src/main/AndroidManifest.xml                                                |  106 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_js_gray.png                          |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_abc_gray.png                         |    0 
 Project/sd_sdk/src/game_sdgame/res/layout/game_sdk_dialog_notice.xml                       |   28 
 Project/xn_sdk/src/main/res/values/jpush_style.xml                                         |   13 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_showicon.png                     |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_bohai_gray.png                       |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_hsbank.png                           |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_bg_logo.jpg                      |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_cib_gray.png                         |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable/sdp_edittext_focused_bg.xml                    |    8 
 Project/sd_sdk/libs/HeepayPlugin_v3.6.jar                                                  |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_check.png                        |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_inputbox_short_2.png             |    0 
 Project/sd_sdk/src/game_sdgame/res/layout/sdp_dialog_loading.xml                           |   45 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_background_toolbar.png           |    0 
 Project/sd_sdk/src/game_sdgame/res/layout/game_sdk_dialog_identity_auth.xml                |   84 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_gdb_gray.png                         |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable/game_sdk_countrylist.xml                       |    6 
 Project/yl_sdk/src/main/java/com/secondworld/univeralsdk/CodeU2A.java                      |    1 
 Project/sd_sdk/src/game_sdgame/res/drawable/game_sdk_payorder.xml                          |    6 
 Project/sd_sdk/src/game_sdgame/res/layout/game_sdk_dialog_one_register.xml                 |   72 
 Project/sd_sdk/src/main/res/drawable/web_btn_close_icon.png                                |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_toolbaricon_bg_right.png         |    0 
 Project/sp_sdk/src/game_spxjgame/java/com/secondworld/univeralsdk/H2EngineSDK.java         |    3 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_toolbaricon_manage.png           |    0 
 Project/yj_sdk/src/game_yj/java/com/secondworld/univeralsdk/YJPlatformUtil.java            |    3 
 Project/sd_sdk/src/game_sdgame/res/anim/game_sdk_anim.xml                                  |   11 
 Project/xn_sdk/libs/unity-classes.jar                                                      |    0 
 Project/xn_sdk/proguard-rules.pro                                                          |   49 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_sanxia.png                           |    0 
 Project/sd_sdk/src/main/java/com/secondworld/univeralsdk/WebViewUtil.java                  |  185 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_sft.png                              |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_gd_gray.png                          |    0 
 Project/sd_sdk/src/main/res/xml/file_paths.xml                                             |    5 
 Project/yl_sdk/src/game_ylgame/java/com/secondworld/univeralsdk/YLPlatformUtil.java        |   46 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_hxb.png                              |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable/game_sdk_shape.xml                             |   12 
 Project/sd_sdk/src/game_sdgame/res/layout/game_sdk_dialog_exit.xml                         |   74 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_toolbaricon_logo.png             |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_hkbea.png                            |    0 
 Project/sd_sdk/src/main/res/drawable-hdpi/jpush_ic_richpush_actionbar_back.png             |    0 
 ChannelDiff/Android/sdgame/libs/sd_sdk-game_sdgame-release.aar                             |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_toolbaricon_rightend.png         |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_czb.png                              |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_cmbc_gray.png                        |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable/game_sdk_white_base.xml                        |   10 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_toolbaricon_right.png            |    0 
 Project/xn_sdk/src/main/res/drawable-hdpi/jpush_richpush_progressbar.xml                   |   20 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_button_click.png                 |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_toolbaricon_left.png             |    0 
 Project/sp_sdk/src/main/java/com/secondworld/univeralsdk/CodeU2A.java                      |    1 
 Project/sd_sdk/src/game_sdgame/res/layout/activity_main_2.xml                              |   32 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_abc.png                              |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_ceb.png                              |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_icon0.jpg                        |    0 
 Project/sd_sdk/src/game_sdgame/res/values/game_sdk_drawables.xml                           |    7 
 Project/xn_sdk/src/main/java/com/secondworld/univeralsdk/CodeA2U.java                      |   59 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_icbc.png                             |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_hide_password.png                |    0 
 Project/sd_sdk/src/game_sdgame/res/layout/sdp_support_bank_list_item.xml                   |   64 
 Project/xn_sdk/src/main/java/com/secondworld/univeralsdk/CrashCatchUtil.java               |  233 +
 Project/sd_sdk/src/game_sdgame/res/layout/game_sdk_float_view.xml                          |   37 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_ic_launcher.png                  |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_icon_loading.png                 |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable/game_sdk_bbs.xml                               |    6 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_unchecked.png                    |    0 
 Project/sd_sdk/src/game_sdgame/res/anim/pop_hidden.xml                                     |    7 
 GradleDiff/sdgame/mainTemplate.gradle                                                      |   59 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_hxb_gray.png                         |    0 
 Project/sd_sdk/src/game_sdgame/res/values/game_sdk_string.xml                              |  160 
 Project/xn_sdk/src/main/res/values/strings.xml                                             |    3 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_close.png                        |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_midline.png                      |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_huishang.png                         |    0 
 Project/xn_sdk/libs/bugly_crash_release.jar                                                |    0 
 Project/xn_sdk/src/main/res/drawable/web_btn_close_icon.png                                |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_sns_gray.png                         |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/close_hover.png                           |    0 
 Project/sd_sdk/src/game_sdgame/res/values/game_sdk_colors.xml                              |   15 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_egbank.png                           |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_toolbaricon_end.png              |    0 
 Project/xn_sdk/src/main/java/com/secondworld/univeralsdk/UniqueID.java                     |  226 +
 Project/yj_sdk/src/main/java/com/secondworld/univeralsdk/CodeU2A.java                      |    1 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_downwindow.png                   |    0 
 Project/xn_sdk/src/main/res/drawable-hdpi/jpush_ic_richpush_actionbar_divider.png          |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable/game_sdk_button.xml                            |    7 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_more.png                         |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/circle_loading.png                        |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_warn.png                         |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_boc_gray.png                         |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_toolbaricon_iconleft_letter.png  |    0 
 Project/sd_sdk/src/main/java/com/secondworld/univeralsdk/MainActivity.java                 |  206 +
 Project/sd_sdk/src/game_sdgame/res/drawable/game_sdk_shape_bg_input.xml                    |   11 
 Project/sd_sdk/src/main/java/com/secondworld/univeralsdk/StaticDefine.java                 |   18 
 Project/sd_sdk/src/game_sdgame/res/drawable/protocol_show_normal.xml                       |    8 
 Project/sd_sdk/src/main/java/com/secondworld/univeralsdk/CodeA2U.java                      |   59 
 Project/sd_sdk/src/main/java/com/secondworld/univeralsdk/DebugUtil.java                    |   59 
 Project/sd_sdk/src/game_sdgame/res/anim/game_sdk_anim_out.xml                              |    7 
 Project/sd_sdk/src/game_sdgame/res/layout/sdp_dialog_cardnum_input.xml                     |   98 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_boc.png                              |    0 
 Project/sd_sdk/src/game_sdgame/res/layout/game_sdk_progress_dialog.xml                     |   36 
 Project/xn_sdk/src/main/res/drawable-hdpi/jpush_ic_richpush_actionbar_back.png             |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_shiming.png                          |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_cbhb.png                             |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_icbc_gray.png                        |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable/game_sdk_shape_bg_register.xml                 |    7 
 ChannelDiff/Android/xngame/libs/xn_sdk-game_xngame-release.aar                             |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_more_click.png                   |    0 
 Project/sd_sdk/src/game_sdgame/res/layout/activity_two.xml                                 |   31 
 Project/sd_sdk/libs/superdream_6.0.0.jar                                                   |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_icon1.png                        |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_uncheck.png                      |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_bg_tab.png                       |    0 
 Project/sd_sdk/src/game_sdgame/res/values/game_sdk_dimens.xml                              |    8 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_web_view_back.png                |    0 
 Project/sd_sdk/src/main/res/layout/activity_main_2thworld.xml                              |   30 
 Project/sd_sdk/src/game_sdgame/res/layout/activity_landscape.xml                           |    8 
 Project/sd_sdk/src/game_sdgame/res/layout/game_sdk_dialog_forget_password.xml              |   57 
 Project/sd_sdk/src/game_sdgame/res/drawable/sdp_dialog_loading_bg.xml                      |    5 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_huishang_gray.png                    |    0 
 ChannelDiff/Android/sdgame/AndroidManifest.xml                                             |  150 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_cib.png                              |    0 
 ChannelDiff/Android/xngame/AndroidManifest.xml                                             |  248 +
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_toolbaricon_click_left.png       |    0 
 Project/sd_sdk/src/game_sdgame/res/layout/sdp_dialog_card_unbind_list.xml                  |   61 
 Project/sd_sdk/libs/tbs_sdk_thirdapp_v3.5.0.1004.jar                                       |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_ccqtgb_gray.png                      |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_inputbox_short.png               |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_cmbc.png                             |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_paychecked.png                   |    0 
 Project/sd_sdk/src/game_sdgame/res/anim/game_sdk_anim_in.xml                               |    7 
 Project/sd_sdk/src/game_sdgame/res/anim/game_sdk_loading_rotate.xml                        |   12 
 Project/sd_sdk/src/game_sdgame/res/drawable/sdp_dialog_base_bg.xml                         |    5 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_background_bottom.png            |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_ccb.png                              |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_sanxia_gray.png                      |    0 
 Project/sd_sdk/src/game_sdgame/res/layout/sdp_dialog_normal.xml                            |   76 
 Project/sd_sdk/src/game_sdgame/res/layout/sdp_dialog_reinput_code_promp.xml                |   53 
 Project/sd_sdk/libs/sdp_merchant_pay-1.0.2.jar                                             |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable/sdp_unbind_sel.xml                             |    5 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/unsupport.png                             |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_egbank_gray.png                      |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_sft_gray.png                         |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable/game_sdk_accountlist.xml                       |    6 
 Project/sd_sdk/src/main/java/com/secondworld/univeralsdk/NotchPhoneUtil.java               |  347 +
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_js.png                               |    0 
 Project/sp_sdk/src/game_spxjgame/java/com/secondworld/univeralsdk/SpPlatformUtil.java      |    4 
 Project/xn_sdk/libs/buglyagent.jar                                                         |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_password.png                     |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable/game_sdk_bg_back.xml                           |    6 
 Project/xn_sdk/libs/jcore-android-1.2.1.jar                                                |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_ceb_gray.png                         |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_accountmanage_click.png          |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_toolbaricon_iconright_letter.png |    0 
 Project/sd_sdk/src/game_sdgame/res/layout/game_sdk_item_float_view_bar.xml                 |   29 
 Project/sd_sdk/src/main/res/layout/jpush_popwin_layout.xml                                 |   15 
 Project/sd_sdk/src/game_sdgame/res/values/dimens.xml                                       |   43 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_bos_gray.png                         |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable/game_sdk_moreapp.xml                           |    6 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_zheshang.png                         |    0 
 Project/sd_sdk/src/game_sdgame/res/layout/game_sdk_dialog_login_tip.xml                    |   72 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_password_click.png               |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_ccqtgb.png                           |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_bg_btnmenu.jpg                   |    0 
 Project/sd_sdk/src/game_sdgame/res/anim/game_sdk_ani_out.xml                               |   39 
 Project/sd_sdk/src/game_sdgame/res/layout/game_sdk_bind_tel.xml                            |  121 
 Project/sd_sdk/src/main/res/layout/jpush_webview_layout.xml                                |   59 
 Project/sd_sdk/src/game_sdgame/res/drawable/protocol_show_pressed.xml                      |    8 
 Project/xn_sdk/src/game_xngame/AndroidManifest.xml                                         |  129 
 Project/sd_sdk/src/game_sdgame/res/layout/game_sdk_softupdate_progress.xml                 |   22 
 Project/xn_sdk/src/game_xngame/java/com/secondworld/univeralsdk/XNPlatformUtil.java        |  231 +
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_bluebutton.png                   |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable/game_sdk_user.xml                              |    6 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_gdb.png                              |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable/sdp_edittext_bg.xml                            |    5 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_toolbaricon_pack.png             |    0 
 Project/xn_sdk/src/main/res/drawable-hdpi/jpush_richpush_btn_selector.xml                  |   21 
 Project/xn_sdk/src/main/res/xml/file_paths.xml                                             |    5 
 Project/sd_sdk/proguard-rules.pro                                                          |   78 
 Project/sd_sdk/libs/weiboSDKCore_3.1.4.jar                                                 |    0 
 Project/xn_sdk/src/main/java/com/secondworld/univeralsdk/WebViewUtil.java                  |  185 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_bos.png                              |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_spdb_gray.png                        |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_facebook.png                     |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_toolbaricon_bbs.png              |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/nav_back.png                              |    0 
 Project/sd_sdk/libs/buglyagent.jar                                                         |    0 
 Project/sd_sdk/src/game_sdgame/res/layout/sdp_card_list_item.xml                           |   21 
 Project/sd_sdk/src/game_sdgame/res/layout/sdp_dialog_succ.xml                              |   33 
 Project/sd_sdk/src/game_sdgame/res/values/colors.xml                                       |   45 
 Project/sd_sdk/src/game_sdgame/res/drawable/game_sdk_checkbox.xml                          |   12 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_cbhb_gray.png                        |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_hsbank_gray.png                      |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_toolbaricon_moreapp.png          |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_toolbaricon_iconright.png        |    0 
 Project/xn_sdk/src/main/java/com/secondworld/univeralsdk/FileUtil.java                     |  211 +
 Project/sd_sdk/src/main/java/com/secondworld/univeralsdk/CodeU2A.java                      |   85 
 Project/sd_sdk/src/game_sdgame/res/color/protocol_color.xml                                |    5 
 Project/sd_sdk/src/game_sdgame/res/layout/game_sdk_dialog_tel_register.xml                 |  111 
 Project/xn_sdk/src/main/java/com/secondworld/univeralsdk/MainActivity.java                 |  209 +
 Project/sd_sdk/src/game_sdgame/res/layout/pop_show_protocol.xml                            |   63 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_dlgbackup.png                    |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable/game_sdk_shape_bg_round.xml                    |    7 
 Project/xn_sdk/src/main/res/values/colors.xml                                              |    6 
 Project/sd_sdk/src/main/res/values/styles.xml                                              |    8 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_zheshang_gray.png                    |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_uparrow.png                      |    0 
 Project/xn_sdk/src/main/res/values/styles.xml                                              |    8 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_longbluebutton_disable.png       |    0 
 Project/sd_sdk/src/main/res/values/colors.xml                                              |    6 
 Project/sd_sdk/src/game_sdgame/res/drawable/game_sdk_shape_bg_login.xml                    |    7 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_shrcb.png                            |    0 
 Project/xn_sdk/src/main/java/com/secondworld/univeralsdk/UniversalUtil.java                |  401 ++
 Project/sd_sdk/src/game_sdgame/res/drawable/game_sdk_dash.xml                              |   10 
 Project/sd_sdk/src/game_sdgame/res/drawable/game_sdk_checkbox_pay.xml                      |   12 
 Project/sd_sdk/src/main/res/values/jpush_style.xml                                         |   13 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_longbluebutton_click.png         |    0 
 Project/sd_sdk/src/game_sdgame/res/layout/game_sdk_item_spinner_list.xml                   |   30 
 Project/sd_sdk/src/game_sdgame/res/values/styles.xml                                       |   67 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_comm.png                             |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable/game_sdk_login.xml                             |    6 
 Project/sd_sdk/libs/unity-classes.jar                                                      |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_dropdown_click.png               |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_citic_gray.png                       |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_weixin.png                       |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_other.png                            |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_toolbaricon_customer_service.png |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable/game_sdk_pop_dismiss.xml                       |    8 
 Project/xn_sdk/libs/android-support-v4.jar                                                 |    0 
 /dev/null                                                                                  |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_paysearch_click.png              |    0 
 Project/sd_sdk/src/game_sdgame/res/drawable/game_sdk_shape_bg_float_view_bar.xml           |    7 
 Project/sd_sdk/libs/okio-1.13.0.jar                                                        |    0 
 Project/xn_sdk/libs/petlibrary-release.aar                                                 |    0 
 Project/xn_sdk/src/main/java/com/secondworld/univeralsdk/JPushReceiver.java                |  147 
 Project/xn_sdk/src/main/res/drawable/app_icon.png                                          |    0 
 Project/xn_sdk/src/main/res/layout/jpush_webview_layout.xml                                |   59 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_sns.png                              |    0 
 Project/xn_sdk/src/main/res/layout/jpush_popwin_layout.xml                                 |   15 
 Project/sd_sdk/src/game_sdgame/res/layout/game_sdk_dialog_bind_tel.xml                     |  126 
 Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_back_click.png                   |    0 
 Project/sd_sdk/src/game_sdgame/AndroidManifest.xml                                         |   90 
 379 files changed, 11,672 insertions(+), 43 deletions(-)

diff --git a/ChannelDiff/Android/sdgame/AndroidManifest.xml b/ChannelDiff/Android/sdgame/AndroidManifest.xml
new file mode 100644
index 0000000..995e199
--- /dev/null
+++ b/ChannelDiff/Android/sdgame/AndroidManifest.xml
@@ -0,0 +1,150 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="com.secondworld.univeralsdk"
+    android:installLocation="auto"
+    android:versionCode="1"
+    android:versionName="1.1.0" >
+
+    <uses-sdk
+        android:minSdkVersion="16"
+        android:targetSdkVersion="22" />
+
+    <!-- Required -->
+    <uses-permission android:name="android.permission.INTERNET" />
+    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
+    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
+    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
+    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
+    <uses-permission android:name="android.permission.WAKE_LOCK" />
+    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
+    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
+    <uses-permission android:name="android.permission.CALL_PHONE" />
+    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
+    <uses-permission android:name="android.permission.GET_TASKS" />
+    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
+    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
+    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
+    <uses-permission android:name="android.permission.VIBRATE" />
+    <uses-permission android:name="android.permission.SYSTEM_OVERLAY_WINDOW" />
+    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
+    <uses-permission android:name="android.permission.READ_CONTACTS" />
+    <uses-permission android:name="android.permission.READ_LOGS" />
+
+    <!-- 涓嬮潰鏂板鏉冮檺 -->
+    <!-- 8.0 -->
+    <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
+    鈥�
+    <uses-permission android:name="android.permission.BLUETOOTH" />
+    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
+    <uses-permission android:name="android.permission.RECORD_AUDIO" />
+    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
+    <uses-permission android:name="android.permission.WRITE_SETTINGS" />
+    <uses-permission android:name="android.permission.RECEIVE_USER_PRESENT" />
+
+    <permission
+        android:name="android.permission.INTERACT_ACROSS_USERS_FULL"
+        android:protectionLevel="signature" />
+
+    <application
+        android:allowBackup="true"
+        android:hardwareAccelerated="false"
+        android:icon="@drawable/app_icon"
+        android:isGame="true"
+        android:label="@string/app_name"
+        android:theme="@android:style/Theme.Light.NoTitleBar.Fullscreen" >
+        <meta-data
+            android:name="SUPERDREAM_APPID"
+            android:value="21" />
+
+        <activity
+            android:name="com.yyjia.sdk.PayActivity"
+            android:configChanges="orientation|keyboardHidden|navigation|screenSize"
+            android:screenOrientation="behind"
+            android:theme="@android:style/Theme.Light.NoTitleBar" />
+        <activity
+            android:name="com.yyjia.sdk.HeePayActivity"
+            android:configChanges="orientation|keyboardHidden|navigation|screenSize"
+            android:theme="@android:style/Theme.Light.NoTitleBar" />
+        <activity
+            android:name="com.alipay.sdk.app.H5PayActivity"
+            android:configChanges="orientation|keyboardHidden|navigation"
+            android:exported="false"
+            android:screenOrientation="behind" />
+        <activity
+            android:name="com.alipay.sdk.auth.AuthActivity"
+            android:configChanges="orientation|keyboardHidden|navigation"
+            android:exported="false"
+            android:screenOrientation="behind" />
+        <activity
+            android:name="com.heepay.plugin.activity.WeChatNotityActivity"
+            android:configChanges="orientation|keyboardHidden|screenSize"
+            android:screenOrientation="behind"
+            android:theme="@android:style/Theme.NoDisplay" />
+        <activity
+            android:name="com.yyjia.sdk.LoginActivity"
+            android:configChanges="orientation|keyboardHidden|navigation|screenSize"
+            android:screenOrientation="behind"
+            android:theme="@style/game_sdk_activity_transparent" />
+
+        <service android:name="com.yyjia.sdk.util.FloatViewService" />
+        <service
+            android:name="com.yyjia.sdk.util.CxAccessService"
+            android:enabled="true"
+            android:exported="true"
+            android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE" >
+            <intent-filter>
+                <action android:name="android.accessibilityservice.AccessibilityService" />
+            </intent-filter>
+
+            <meta-data
+                android:name="android.accessibilityservice"
+                android:resource="@xml/game_sdk_accessible_service_config" />
+        </service>
+
+        <meta-data
+            android:name="android.max_aspect"
+            android:value="1075838976.000000" />
+        <meta-data
+            android:name="com.samsung.android.keepalive.density"
+            android:value="true" /> <!-- <meta-data -->
+        <!-- android:name="android.notch_support" -->
+        <!-- android:value="true" /> -->
+        <meta-data
+            android:name="notch.config"
+            android:value="none" />
+        <meta-data
+            android:name="android.vendor.full_screen"
+            android:value="true" />
+
+        <activity
+            android:name="com.secondworld.univeralsdk.MainActivity"
+            android:configChanges="mcc|mnc|locale|touchscreen|keyboard|keyboardHidden|navigation|orientation|screenLayout|uiMode|screenSize|smallestScreenSize|fontScale|layoutDirection"
+            android:label="@string/app_name"
+            android:launchMode="singleTask"
+            android:screenOrientation="sensorLandscape" >
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+
+                <category android:name="android.intent.category.LAUNCHER" />
+                <category android:name="android.intent.category.LEANBACK_LAUNCHER" />
+            </intent-filter>
+
+            <meta-data
+                android:name="unityplayer.UnityActivity"
+                android:value="true" />
+            <meta-data
+                android:name="unityplayer.SkipPermissionsDialog"
+                android:value="true" />
+            <meta-data
+                android:name="android.vendor.home_indicator"
+                android:value="hide" />
+            <meta-data
+                android:name="android.max_aspect"
+                android:value="1075419520.000000" />
+            <meta-data
+                android:name="com.samsung.android.keepalive.density"
+                android:value="true" />
+        </activity>
+    </application>
+
+</manifest>
\ No newline at end of file
diff --git a/ChannelDiff/Android/sdgame/libs/sd_sdk-game_sdgame-release.aar b/ChannelDiff/Android/sdgame/libs/sd_sdk-game_sdgame-release.aar
new file mode 100644
index 0000000..dc358f8
--- /dev/null
+++ b/ChannelDiff/Android/sdgame/libs/sd_sdk-game_sdgame-release.aar
Binary files differ
diff --git a/ChannelDiff/Android/xngame/AndroidManifest.xml b/ChannelDiff/Android/xngame/AndroidManifest.xml
new file mode 100644
index 0000000..eb3665f
--- /dev/null
+++ b/ChannelDiff/Android/xngame/AndroidManifest.xml
@@ -0,0 +1,248 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="com.secondworld.univeralsdk"
+    android:installLocation="auto"
+    android:versionCode="1"
+    android:versionName="1.1.0" >
+
+    <uses-sdk
+        android:minSdkVersion="16"
+        android:targetSdkVersion="27" />
+
+    <uses-permission android:name="android.permission.INTERNET" />
+    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
+    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
+    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
+    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
+    <uses-permission android:name="android.permission.RECORD_AUDIO" />
+    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
+    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
+    <uses-permission android:name="android.permission.WAKE_LOCK" />
+    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
+    <uses-permission android:name="android.permission.VIBRATE" />
+    <uses-permission android:name="android.permission.GET_TASKS" />
+    <uses-permission android:name="android.permission.WRITE_SETTINGS" />
+    <uses-permission android:name="android.permission.READ_LOGS" />
+    <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
+    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
+    <uses-permission android:name="android.permission.RECEIVE_USER_PRESENT" />
+    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
+    <uses-permission android:name="android.permission.CHANGE_CONFIGURATION" />
+    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
+    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
+
+    <permission
+        android:name="android.permission.INTERACT_ACROSS_USERS_FULL"
+        android:protectionLevel="signature" />
+    <!-- Required -->
+    <permission android:name="com.xiaoniu.snxx.permission.JPUSH_MESSAGE" />
+
+    <uses-permission android:name="com.xiaoniu.snxx.permission.JPUSH_MESSAGE" />
+
+    <application
+        android:allowBackup="true"
+        android:hardwareAccelerated="false"
+        android:icon="@drawable/app_icon"
+        android:isGame="true"
+        android:label="@string/app_name"
+        android:theme="@android:style/Theme.Light.NoTitleBar.Fullscreen" >
+        <meta-data
+            android:name="XnAppID"
+            android:value="34aee53ae588421a91f7eb297689b1f0" />
+        <meta-data
+            android:name="XnVersion"
+            android:value="1.3.3" />
+        <meta-data
+            android:name="XnTrackingKey"
+            android:value="f93e467aa05acc0266ab844cce9321b0" />
+        <meta-data
+            android:name="XnAppKey"
+            android:value="0ca9e17f7a6d45e58aa7d2755d0f16c2" />
+        <meta-data
+            android:name="android.max_aspect"
+            android:value="1075838976.000000" />
+        <meta-data
+            android:name="com.samsung.android.keepalive.density"
+            android:value="true" />
+
+        <!-- <meta-data -->
+        <!-- android:name="android.notch_support" -->
+        <!-- android:value="true" /> -->
+
+        <meta-data
+            android:name="notch.config"
+            android:value="none" />
+        <meta-data
+            android:name="android.vendor.full_screen"
+            android:value="true" />
+
+        <activity
+            android:name="com.secondworld.univeralsdk.MainActivity"
+            android:configChanges="mcc|mnc|locale|touchscreen|keyboard|keyboardHidden|navigation|orientation|screenLayout|uiMode|screenSize|smallestScreenSize|fontScale|layoutDirection"
+            android:label="@string/app_name"
+            android:launchMode="singleTask"
+            android:screenOrientation="sensorLandscape" >
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+
+                <category android:name="android.intent.category.LAUNCHER" />
+                <category android:name="android.intent.category.LEANBACK_LAUNCHER" />
+            </intent-filter>
+
+            <meta-data
+                android:name="unityplayer.UnityActivity"
+                android:value="true" />
+            <meta-data
+                android:name="unityplayer.SkipPermissionsDialog"
+                android:value="true" />
+            <meta-data
+                android:name="android.vendor.home_indicator"
+                android:value="hide" />
+            <meta-data
+                android:name="android.max_aspect"
+                android:value="1075419520.000000" />
+            <meta-data
+                android:name="com.samsung.android.keepalive.density"
+                android:value="true" />
+        </activity>
+
+        <!-- 閽堝7.0浠ヤ笂鐨刟pi寮�鏀剧殑鏂囦欢鏉冮檺 -->
+        <!-- <provider -->
+        <!-- android:name="android.support.v4.content.FileProvider" -->
+        <!-- android:authorities="${appId}.fileProvider" -->
+        <!-- android:grantUriPermissions="true" -->
+        <!-- android:exported="false"> -->
+        <!-- <meta-data -->
+        <!-- android:name="android.support.FILE_PROVIDER_PATHS" -->
+        <!-- android:resource="@xml/file_paths" /> -->
+        <!-- </provider> -->
+        <!-- 閽堝7.0浠ヤ笂鐨刟pi寮�鏀剧殑鏂囦欢鏉冮檺 -->
+        <!-- <provider -->
+        <!-- android:name="android.support.v4.content.FileProvider" -->
+        <!-- android:authorities="${appId}.fileProvider" -->
+        <!-- android:grantUriPermissions="true" -->
+        <!-- android:exported="false"> -->
+        <!-- <meta-data -->
+        <!-- android:name="android.support.FILE_PROVIDER_PATHS" -->
+        <!-- android:resource="@xml/file_paths" /> -->
+        <!-- </provider> -->
+        <!-- Required SDK 鏍稿績鍔熻兘 -->
+        <!-- 鍙厤缃產ndroid:process鍙傛暟灏哖ushService鏀惧湪鍏朵粬杩涚▼涓� -->
+        <service
+            android:name="cn.jpush.android.service.PushService"
+            android:exported="false"
+            android:process=":mult" >
+            <intent-filter>
+                <action android:name="cn.jpush.android.intent.REGISTER" />
+                <action android:name="cn.jpush.android.intent.REPORT" />
+                <action android:name="cn.jpush.android.intent.PushService" />
+                <action android:name="cn.jpush.android.intent.PUSH_TIME" />
+            </intent-filter>
+        </service> <!-- since 3.0.9 Required SDK 鏍稿績鍔熻兘 -->
+        <provider
+            android:name="cn.jpush.android.service.DataProvider"
+            android:authorities="com.xiaoniu.snxx.DataProvider"
+            android:exported="true" /> <!-- since 1.8.0 option 鍙�夐」銆傜敤浜庡悓涓�璁惧涓笉鍚屽簲鐢ㄧ殑JPush鏈嶅姟鐩镐簰鎷夎捣鐨勫姛鑳姐�� -->
+        <!-- 鑻ヤ笉鍚敤璇ュ姛鑳藉彲鍒犻櫎璇ョ粍浠讹紝灏嗕笉鎷夎捣鍏朵粬搴旂敤涔熶笉鑳借鍏朵粬搴旂敤鎷夎捣 -->
+        <service
+            android:name="cn.jpush.android.service.DaemonService"
+            android:enabled="true"
+            android:exported="true" >
+            <intent-filter>
+                <action android:name="cn.jpush.android.intent.DaemonService" />
+
+                <category android:name="com.xiaoniu.snxx" />
+            </intent-filter>
+        </service> <!-- since 3.1.0 Required SDK 鏍稿績鍔熻兘 -->
+        <provider
+            android:name="cn.jpush.android.service.DownloadProvider"
+            android:authorities="com.xiaoniu.snxx.DownloadProvider"
+            android:exported="true" /> <!-- Required SDK鏍稿績鍔熻兘 -->
+        <receiver
+            android:name="cn.jpush.android.service.PushReceiver"
+            android:enabled="true" >
+            <intent-filter android:priority="1000" >
+                <action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED_PROXY" />
+
+                <category android:name="com.xiaoniu.snxx" />
+            </intent-filter>
+            <intent-filter>
+                <action android:name="android.intent.action.USER_PRESENT" />
+                <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
+            </intent-filter>
+            <!-- Optional -->
+            <intent-filter>
+                <action android:name="android.intent.action.PACKAGE_ADDED" />
+                <action android:name="android.intent.action.PACKAGE_REMOVED" />
+
+                <data android:scheme="package" />
+            </intent-filter>
+        </receiver> <!-- Required SDK鏍稿績鍔熻兘 -->
+        <activity
+            android:name="cn.jpush.android.ui.PushActivity"
+            android:configChanges="orientation|keyboardHidden"
+            android:exported="false"
+            android:theme="@android:style/Theme.NoTitleBar" >
+            <intent-filter>
+                <action android:name="cn.jpush.android.ui.PushActivity" />
+
+                <category android:name="android.intent.category.DEFAULT" />
+                <category android:name="com.xiaoniu.snxx" />
+            </intent-filter>
+        </activity> <!-- SDK鏍稿績鍔熻兘 -->
+        <activity
+            android:name="cn.jpush.android.ui.PopWinActivity"
+            android:configChanges="orientation|keyboardHidden"
+            android:exported="false"
+            android:theme="@style/MyDialogStyle" >
+            <intent-filter>
+                <category android:name="android.intent.category.DEFAULT" />
+                <category android:name="com.xiaoniu.snxx" />
+            </intent-filter>
+        </activity> <!-- Required SDK鏍稿績鍔熻兘 -->
+        <service
+            android:name="cn.jpush.android.service.DownloadService"
+            android:enabled="true"
+            android:exported="false" /> <!-- Required SDK鏍稿績鍔熻兘 -->
+        <receiver android:name="cn.jpush.android.service.AlarmReceiver" /> <!-- Required since 3.0.7 -->
+        <!-- 鏂扮殑tag/alias鎺ュ彛缁撴灉杩斿洖闇�瑕佸紑鍙戣�呴厤缃竴涓嚜瀹氱殑骞挎挱 -->
+        <!-- 璇ュ箍鎾渶瑕佺户鎵縅Push鎻愪緵鐨凧PushMessageReceiver绫�, 骞跺涓嬫柊澧炰竴涓� Intent-Filter -->
+        <!-- <receiver -->
+        <!-- android:name="鑷畾涔� Receiver" -->
+        <!-- android:enabled="true" > -->
+        <!-- <intent-filter> -->
+        <!-- <action android:name="cn.jpush.android.intent.RECEIVE_MESSAGE" /> -->
+        <!-- <category android:name="鎮ㄥ簲鐢ㄧ殑鍖呭悕" /> -->
+        <!-- </intent-filter> -->
+        <!-- </receiver> -->
+        <!-- &lt;!&ndash; User defined. 鐢ㄦ埛鑷畾涔夌殑骞挎挱鎺ユ敹鍣�&ndash;&gt; -->
+        <receiver
+            android:name="com.secondworld.univeralsdk.JPushReceiver"
+            android:enabled="true" >
+            <intent-filter>
+
+                <!-- Required 鐢ㄦ埛娉ㄥ唽SDK鐨刬ntent -->
+                <action android:name="cn.jpush.android.intent.REGISTRATION" />
+                <!-- Required 鐢ㄦ埛鎺ユ敹SDK娑堟伅鐨刬ntent -->
+                <action android:name="cn.jpush.android.intent.MESSAGE_RECEIVED" />
+                <!-- Required 鐢ㄦ埛鎺ユ敹SDK閫氱煡鏍忎俊鎭殑intent -->
+                <action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED" />
+                <!-- 鎺ユ敹缃戠粶鍙樺寲 杩炴帴/鏂紑 since 1.6.3 -->
+                <action android:name="cn.jpush.android.intent.CONNECTION" />
+
+                <category android:name="com.xiaoniu.snxx" />
+            </intent-filter>
+        </receiver> <!-- Required. For publish channel feature -->
+        <!-- JPUSH_CHANNEL 鏄负浜嗘柟渚垮紑鍙戣�呯粺璁PK鍒嗗彂娓犻亾銆� -->
+        <!-- 渚嬪: -->
+        <!-- 鍙戝埌 Google Play 鐨凙PK鍙互璁剧疆涓� google-play; -->
+        <!-- 鍙戝埌鍏朵粬甯傚満鐨� APK 鍙互璁剧疆涓� xxx-market銆� -->
+        <meta-data
+            android:name="JPUSH_CHANNEL"
+            android:value="developer-default" /> <!-- Required. AppKey copied from Portal -->
+        <meta-data
+            android:name="JPUSH_APPKEY"
+            android:value="22186239fee975f883198cf4" />
+    </application>
+
+</manifest>
\ No newline at end of file
diff --git a/ChannelDiff/Android/xngame/libs/petlibrary-release.aar b/ChannelDiff/Android/xngame/libs/petlibrary-release.aar
new file mode 100644
index 0000000..b4bb11e
--- /dev/null
+++ b/ChannelDiff/Android/xngame/libs/petlibrary-release.aar
Binary files differ
diff --git a/ChannelDiff/Android/xngame/libs/xn_sdk-game_xngame-release.aar b/ChannelDiff/Android/xngame/libs/xn_sdk-game_xngame-release.aar
new file mode 100644
index 0000000..82ae6f5
--- /dev/null
+++ b/ChannelDiff/Android/xngame/libs/xn_sdk-game_xngame-release.aar
Binary files differ
diff --git a/ChannelDiff/Android/yilegame/libs/applog-release.aar b/ChannelDiff/Android/yilegame/libs/applog-release.aar
deleted file mode 100644
index 67c90d2..0000000
--- a/ChannelDiff/Android/yilegame/libs/applog-release.aar
+++ /dev/null
Binary files differ
diff --git a/GradleDiff/sdgame/mainTemplate.gradle b/GradleDiff/sdgame/mainTemplate.gradle
new file mode 100644
index 0000000..a845dc5
--- /dev/null
+++ b/GradleDiff/sdgame/mainTemplate.gradle
@@ -0,0 +1,59 @@
+// GENERATED BY UNITY. REMOVE THIS COMMENT TO PREVENT OVERWRITING WHEN EXPORTING AGAIN
+buildscript {
+	repositories {
+		jcenter()
+	}
+
+	dependencies {
+		classpath 'com.android.tools.build:gradle:2.1.0'
+	}
+}
+
+allprojects {
+   repositories {
+      flatDir {
+        dirs 'libs'
+      }
+   }
+}
+
+apply plugin: 'com.android.application'
+
+dependencies {
+	compile fileTree(dir: 'libs', include: ['*.jar'])
+**DEPS**}
+
+android {
+	compileSdkVersion **APIVERSION**
+	buildToolsVersion '**BUILDTOOLS**'
+
+	defaultConfig {
+		targetSdkVersion **TARGETSDKVERSION**
+		applicationId '**APPLICATIONID**'
+		ndk {
+            abiFilters **ABIFILTERS**
+        }
+	}
+
+	lintOptions {
+		abortOnError false
+	}
+
+	aaptOptions {
+		noCompress '.unity3d', '.ress', '.resource', '.obb'
+	}
+
+**SIGN**
+	buildTypes {
+		debug {
+			jniDebuggable true
+		}
+		release {
+			// Set minifyEnabled to true if you want to run ProGuard on your project
+			minifyEnabled false
+			proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-unity.txt'
+			**SIGNCONFIG**
+		}
+	}
+
+}
diff --git a/GradleDiff/xngame/mainTemplate.gradle b/GradleDiff/xngame/mainTemplate.gradle
new file mode 100644
index 0000000..a845dc5
--- /dev/null
+++ b/GradleDiff/xngame/mainTemplate.gradle
@@ -0,0 +1,59 @@
+// GENERATED BY UNITY. REMOVE THIS COMMENT TO PREVENT OVERWRITING WHEN EXPORTING AGAIN
+buildscript {
+	repositories {
+		jcenter()
+	}
+
+	dependencies {
+		classpath 'com.android.tools.build:gradle:2.1.0'
+	}
+}
+
+allprojects {
+   repositories {
+      flatDir {
+        dirs 'libs'
+      }
+   }
+}
+
+apply plugin: 'com.android.application'
+
+dependencies {
+	compile fileTree(dir: 'libs', include: ['*.jar'])
+**DEPS**}
+
+android {
+	compileSdkVersion **APIVERSION**
+	buildToolsVersion '**BUILDTOOLS**'
+
+	defaultConfig {
+		targetSdkVersion **TARGETSDKVERSION**
+		applicationId '**APPLICATIONID**'
+		ndk {
+            abiFilters **ABIFILTERS**
+        }
+	}
+
+	lintOptions {
+		abortOnError false
+	}
+
+	aaptOptions {
+		noCompress '.unity3d', '.ress', '.resource', '.obb'
+	}
+
+**SIGN**
+	buildTypes {
+		debug {
+			jniDebuggable true
+		}
+		release {
+			// Set minifyEnabled to true if you want to run ProGuard on your project
+			minifyEnabled false
+			proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-unity.txt'
+			**SIGNCONFIG**
+		}
+	}
+
+}
diff --git a/Project/sd_sdk/.gitignore b/Project/sd_sdk/.gitignore
new file mode 100644
index 0000000..796b96d
--- /dev/null
+++ b/Project/sd_sdk/.gitignore
@@ -0,0 +1 @@
+/build
diff --git a/Project/sd_sdk/build.gradle b/Project/sd_sdk/build.gradle
new file mode 100644
index 0000000..ee4e227
--- /dev/null
+++ b/Project/sd_sdk/build.gradle
@@ -0,0 +1,65 @@
+apply plugin: 'com.android.library'
+
+android {
+
+    compileSdkVersion 27
+
+    defaultConfig {
+        minSdkVersion 16
+        targetSdkVersion 22
+        versionCode 1
+        versionName "1.1.0"
+    }
+
+    buildTypes {
+        release {
+            //娣锋穯
+            minifyEnabled true
+            //瀵归綈
+            zipAlignEnabled true
+            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
+
+        }
+    }
+
+    flavorDimensions "default"
+    productFlavors {
+        // 鎬濈挒SDK
+        game_sdgame {
+            dimension "default"
+            manifestPlaceholders.put("appId", "com.xjaz.sp")
+            manifestPlaceholders.put("JpushAppKey", "22186239fee975f883198cf4")
+            manifestPlaceholders.put("SUPERDREAM_APPID", "21")
+        }
+    }
+}
+
+dependencies {
+    implementation files('libs/alipaySdk-20170710.jar')
+    implementation files('libs/android-support-v4.jar')
+    implementation files('libs/bugly_crash_release.jar')
+    implementation files('libs/buglyagent.jar')
+    implementation files('libs/HeepayPlugin_v3.6.jar')
+    implementation files('libs/okhttp-3.9.0.jar')
+    implementation files('libs/okio-1.13.0.jar')
+    implementation files('libs/sdp_merchant_pay-1.0.2.jar')
+    implementation files('libs/superdream_6.0.0.jar')
+    implementation files('libs/tbs_sdk_thirdapp_v3.5.0.1004.jar')
+    implementation files('libs/TenpayServiceSDK.jar')
+    compileOnly files('libs/unity-classes.jar')
+    implementation files('libs/weiboSDKCore_3.1.4.jar')
+}
+
+task autoCopy_sdgame_Manifest(type: Copy) {
+    dependsOn 'assembleGame_sdgameRelease'
+    from zipTree("build/outputs/aar/sd_sdk-game_sdgame-release.aar")
+    include "AndroidManifest.xml"
+    into "C:\\Unity3D_SDK\\ChannelDiff\\Android\\sdgame\\"
+}
+
+task autoCopy_sdgame(type: Copy) {
+    dependsOn autoCopy_sdgame_Manifest
+    from "build/outputs/aar/"
+    include "sd_sdk-game_sdgame-release.aar"
+    into "C:\\Unity3D_SDK\\ChannelDiff\\Android\\sdgame\\libs\\"
+}
diff --git a/Project/sd_sdk/libs/HeepayPlugin_v3.6.jar b/Project/sd_sdk/libs/HeepayPlugin_v3.6.jar
new file mode 100644
index 0000000..2b8b0fd
--- /dev/null
+++ b/Project/sd_sdk/libs/HeepayPlugin_v3.6.jar
Binary files differ
diff --git a/Project/sd_sdk/libs/TenpayServiceSDK.jar b/Project/sd_sdk/libs/TenpayServiceSDK.jar
new file mode 100644
index 0000000..e53a6b1
--- /dev/null
+++ b/Project/sd_sdk/libs/TenpayServiceSDK.jar
Binary files differ
diff --git a/Project/sd_sdk/libs/alipaySdk-20170710.jar b/Project/sd_sdk/libs/alipaySdk-20170710.jar
new file mode 100644
index 0000000..6db0cc8
--- /dev/null
+++ b/Project/sd_sdk/libs/alipaySdk-20170710.jar
Binary files differ
diff --git a/Project/sd_sdk/libs/android-support-v4.jar b/Project/sd_sdk/libs/android-support-v4.jar
new file mode 100644
index 0000000..aa0b1a5
--- /dev/null
+++ b/Project/sd_sdk/libs/android-support-v4.jar
Binary files differ
diff --git a/Project/sd_sdk/libs/bugly_crash_release.jar b/Project/sd_sdk/libs/bugly_crash_release.jar
new file mode 100644
index 0000000..9d49864
--- /dev/null
+++ b/Project/sd_sdk/libs/bugly_crash_release.jar
Binary files differ
diff --git a/Project/sd_sdk/libs/buglyagent.jar b/Project/sd_sdk/libs/buglyagent.jar
new file mode 100644
index 0000000..b3d5fcf
--- /dev/null
+++ b/Project/sd_sdk/libs/buglyagent.jar
Binary files differ
diff --git a/Project/sd_sdk/libs/okhttp-3.9.0.jar b/Project/sd_sdk/libs/okhttp-3.9.0.jar
new file mode 100644
index 0000000..58ad4be
--- /dev/null
+++ b/Project/sd_sdk/libs/okhttp-3.9.0.jar
Binary files differ
diff --git a/Project/sd_sdk/libs/okio-1.13.0.jar b/Project/sd_sdk/libs/okio-1.13.0.jar
new file mode 100644
index 0000000..02c302f
--- /dev/null
+++ b/Project/sd_sdk/libs/okio-1.13.0.jar
Binary files differ
diff --git a/Project/sd_sdk/libs/sdp_merchant_pay-1.0.2.jar b/Project/sd_sdk/libs/sdp_merchant_pay-1.0.2.jar
new file mode 100644
index 0000000..0929f59
--- /dev/null
+++ b/Project/sd_sdk/libs/sdp_merchant_pay-1.0.2.jar
Binary files differ
diff --git a/Project/sd_sdk/libs/superdream_6.0.0.jar b/Project/sd_sdk/libs/superdream_6.0.0.jar
new file mode 100644
index 0000000..a4df688
--- /dev/null
+++ b/Project/sd_sdk/libs/superdream_6.0.0.jar
Binary files differ
diff --git a/Project/sd_sdk/libs/tbs_sdk_thirdapp_v3.5.0.1004.jar b/Project/sd_sdk/libs/tbs_sdk_thirdapp_v3.5.0.1004.jar
new file mode 100644
index 0000000..db28d3e
--- /dev/null
+++ b/Project/sd_sdk/libs/tbs_sdk_thirdapp_v3.5.0.1004.jar
Binary files differ
diff --git a/Project/sd_sdk/libs/unity-classes.jar b/Project/sd_sdk/libs/unity-classes.jar
new file mode 100644
index 0000000..3c32bf7
--- /dev/null
+++ b/Project/sd_sdk/libs/unity-classes.jar
Binary files differ
diff --git a/Project/sd_sdk/libs/weiboSDKCore_3.1.4.jar b/Project/sd_sdk/libs/weiboSDKCore_3.1.4.jar
new file mode 100644
index 0000000..b2d7906
--- /dev/null
+++ b/Project/sd_sdk/libs/weiboSDKCore_3.1.4.jar
Binary files differ
diff --git a/Project/sd_sdk/proguard-rules.pro b/Project/sd_sdk/proguard-rules.pro
new file mode 100644
index 0000000..3bb5a06
--- /dev/null
+++ b/Project/sd_sdk/proguard-rules.pro
@@ -0,0 +1,78 @@
+# Add project specific ProGuard rules here.
+# You can control the set of applied configuration files using the
+# proguardFiles setting in build.gradle.
+#
+# For more details, see
+#   http://developer.android.com/guide/developing/tools/proguard.html
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+#   public *;
+#}
+
+# Uncomment this to preserve the line number information for
+# debugging stack traces.
+#-keepattributes SourceFile,LineNumberTable
+
+# If you keep the line number information, uncomment this to
+# hide the original source file name.
+#-renamesourcefileattribute SourceFile
+
+-dontwarn okio.**
+-keep class okio.** { *;}
+-dontwarn com.squareup.okhttp.**
+-keep class com.squareup.okhttp.** { *;}
+-dontwarn cn.jpush.**
+-keep class cn.jpush.** { *; }
+-keep class * extends cn.jpush.android.helpers.JPushMessageReceiver { *; }
+-dontwarn cn.jiguang.**
+-keep class cn.jiguang.** { *; }
+-dontwarn cn.jiguang.android.service.**
+-keep class cn.jiguang.android.service.** { *;}
+-dontwarn com.google.gson.**
+-keep class com.google.gson.** { *;}
+-dontwarn com.tencent.bugly.**
+-keep class com.tencent.bugly.** { *;}
+-dontwarn android.support.**
+-keep class android.support.** { *;}
+-dontwarn com.reyun.tracking.**
+-keep class com.reyun.tracking.** { *;}
+-dontwarn com.ss.**
+-keep class com.ss.tracking.** { *;}
+-dontwarn com.bytedance.**
+-keep class com.bytedance.** { *;}
+
+-dontwarn com.secondworld.univeralsdk.**
+-keep class com.secondworld.univeralsdk.** { *;}
+
+-dontwarn com.alipay.**
+-keep class com.alipay.** { *;}
+-dontwarn org.json.alipay.**
+-keep class org.json.alipay.** { *;}
+-dontwarn heepay.plugin.**
+-keep class heepay.plugin.** { *;}
+-dontwarn heepay.plugin.**
+-keep class heepay.plugin.** { *;}
+-dontwarn okhttp3.**
+-keep class okhttp3.** { *;}
+-dontwarn com.android.internal.telephony.**
+-keep class com.android.internal.telephony.** { *;}
+-dontwarn com.shengpay.sdpmerchantpaysdk.**
+-keep class com.shengpay.sdpmerchantpaysdk.** { *;}
+-dontwarn com.snda.**
+-keep class com.snda.** { *;}
+
+-dontwarn baiwen.mandaring.base64.**
+-keep class baiwen.mandaring.base64.** { *;}
+-dontwarn com.yyjia.sdk.**
+-keep class com.yyjia.sdk.** { *;}
+-dontwarn com.tencent.**
+-keep class com.tencent.** { *;}
+-dontwarn MTT.**
+-keep class MTT.** { *;}
+-dontwarn com.tenpay.android.service.**
+-keep class com.tenpay.android.service.** { *;}
+-dontwarn com.sina.**
+-keep class com.sina.** { *;}
\ No newline at end of file
diff --git a/Project/sd_sdk/src/game_sdgame/AndroidManifest.xml b/Project/sd_sdk/src/game_sdgame/AndroidManifest.xml
new file mode 100644
index 0000000..87ef6f6
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/AndroidManifest.xml
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="com.secondworld.univeralsdk">
+
+    <!-- Required -->
+    <uses-permission android:name="android.permission.INTERNET" />
+    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
+    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
+    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
+    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
+    <uses-permission android:name="android.permission.WAKE_LOCK" />
+    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
+    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
+    <uses-permission android:name="android.permission.CALL_PHONE" />
+    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
+    <uses-permission android:name="android.permission.GET_TASKS" />
+    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
+    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
+    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
+    <uses-permission android:name="android.permission.VIBRATE" />
+    <uses-permission android:name="android.permission.SYSTEM_OVERLAY_WINDOW" />
+    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
+    <uses-permission android:name="android.permission.READ_CONTACTS" />
+    <uses-permission android:name="android.permission.READ_LOGS" />
+
+    <!--涓嬮潰鏂板鏉冮檺-->
+    <!--8.0-->
+    <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES"/>
+    鈥�
+    <uses-permission android:name="android.permission.BLUETOOTH"/>
+    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
+
+    <application
+        android:allowBackup="true"
+        android:icon="@drawable/app_icon"
+        android:label="@string/app_name"
+        android:theme="@android:style/Theme.Light.NoTitleBar.Fullscreen">
+
+        <meta-data
+            android:name="SUPERDREAM_APPID"
+            android:value="${SUPERDREAM_APPID}" />
+
+        <activity
+            android:name="com.yyjia.sdk.PayActivity"
+            android:configChanges="orientation|keyboardHidden|navigation|screenSize"
+            android:screenOrientation="behind"
+            android:theme="@android:style/Theme.Light.NoTitleBar" />
+        <activity
+            android:name="com.yyjia.sdk.HeePayActivity"
+            android:configChanges="orientation|keyboardHidden|navigation|screenSize"
+            android:theme="@android:style/Theme.Light.NoTitleBar" />
+        <activity
+            android:name="com.alipay.sdk.app.H5PayActivity"
+            android:configChanges="orientation|keyboardHidden|navigation"
+            android:exported="false"
+            android:screenOrientation="behind" />
+        <activity
+            android:name="com.alipay.sdk.auth.AuthActivity"
+            android:configChanges="orientation|keyboardHidden|navigation"
+            android:exported="false"
+            android:screenOrientation="behind" />
+        <activity
+            android:name="com.heepay.plugin.activity.WeChatNotityActivity"
+            android:configChanges="orientation|keyboardHidden|screenSize"
+            android:screenOrientation="behind"
+            android:theme="@android:style/Theme.NoDisplay" />
+        <activity
+            android:name="com.yyjia.sdk.LoginActivity"
+            android:configChanges="orientation|keyboardHidden|navigation|screenSize"
+            android:screenOrientation="behind"
+            android:theme="@style/game_sdk_activity_transparent" />
+
+        <service android:name="com.yyjia.sdk.util.FloatViewService" />
+        <service
+            android:name="com.yyjia.sdk.util.CxAccessService"
+            android:enabled="true"
+            android:exported="true"
+            android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE">
+            <intent-filter>
+                <action android:name="android.accessibilityservice.AccessibilityService" />
+            </intent-filter>
+
+            <meta-data
+                android:name="android.accessibilityservice"
+                android:resource="@xml/game_sdk_accessible_service_config" />
+        </service>
+
+    </application>
+
+</manifest>
\ No newline at end of file
diff --git a/Project/sd_sdk/src/game_sdgame/java/com/secondworld/univeralsdk/H2EngineSDK.java b/Project/sd_sdk/src/game_sdgame/java/com/secondworld/univeralsdk/H2EngineSDK.java
new file mode 100644
index 0000000..c2c163e
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/java/com/secondworld/univeralsdk/H2EngineSDK.java
@@ -0,0 +1,455 @@
+package com.secondworld.univeralsdk;
+
+import android.app.Activity;
+import android.app.AlertDialog;
+import android.content.ClipData;
+import android.content.ClipboardManager;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.content.res.Configuration;
+import android.net.Uri;
+import android.os.Bundle;
+import android.os.Environment;
+import android.provider.Settings;
+import android.widget.Toast;
+
+import com.unity3d.player.UnityPlayer;
+import com.yyjia.sdk.center.GMcenter;
+
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import java.io.File;
+import java.util.HashMap;
+import java.util.Map;
+
+public class H2EngineSDK
+{
+    private static final String TAG = "H2EngineSDK";
+    private static String APP_ID = "";
+
+    private static boolean PushEnable = true;
+
+    public static void HandleUnityMessage(String json)
+    {
+        LogUtil.i(TAG, "鏀跺埌Unity鍙戞潵鐨勪俊鎭�: " + json);
+        Activity _activity = UnityPlayer.currentActivity;
+        try
+        {
+            JSONObject _json = new JSONObject(json);
+
+            int _code = _json.getInt("code");
+
+            switch (_code)
+            {
+                case CodeU2A.Init:
+                    APP_ID = _json.getString("appID");
+                    init(_activity);
+                    break;
+                case CodeU2A.AssetCopy:
+                    FileUtil.copyAssets(_activity);
+                    break;
+                case CodeU2A.CopyOneAsset:
+                    FileUtil.copy(_activity, _json.getString("fileName"));
+                    break;
+                case CodeU2A.BatteryListenStart:
+                    BatteryUtil.getInstance().start(_activity);
+                    break;
+                case CodeU2A.BatteryListenStop:
+                    BatteryUtil.getInstance().stop(_activity);
+                    break;
+                case CodeU2A.UniqueID:
+                    break;
+                case CodeU2A.CopyContent:
+                    CopyContent(_activity, _json.getString("content"));
+                    break;
+                case CodeU2A.OpenWebView:
+                    WebViewUtil.OpenWebView(_activity, _json.getString("url"));
+                    break;
+                case CodeU2A.RestartApp:
+                    RestartApp(_activity);
+                    break;
+                case CodeU2A.InstallAPK:
+                    InstallApp(_activity, _json.getString("path"));
+                    break;
+                case CodeU2A.ExteneralStorage:
+                    GetExternalStorage();
+                    break;
+                case CodeU2A.RequestPermission:
+                    break;
+                case CodeU2A.RequestManifestPermissions:
+                    break;
+                case CodeU2A.FreePlatformInit:
+                    SDPlatformUtil.getInstance().init(_activity);
+                    break;
+                case CodeU2A.FreePlatformLogin:
+                    SDPlatformUtil.getInstance().login(_activity);
+                    break;
+                case CodeU2A.FreePlatformSwitchAccount:
+                    break;
+                case CodeU2A.FreePlatformLogout:
+                    SDPlatformUtil.getInstance().logout(_activity);
+                    break;
+                case CodeU2A.FreePlatformPay:
+
+                    JSONObject _extraData = new JSONObject();
+                    _extraData.put("appid", APP_ID);
+                    _extraData.put("cpinfo", _json.getString("cpInfo"));
+                    _extraData.put("cporderid", _json.getString("orderId"));
+
+                    SDPlatformUtil.getInstance().pay(_activity,
+                                                     _json.getString("orderId"),
+                                                     _json.getInt("mount"),
+                                                     _json.getString("title"),
+                                                     _extraData.toString(),
+                                                     _json.getString("roleID"),
+                                                     _json.getString("sid"));
+
+                    SDPlatformUtil.getInstance().payProcessing = true;
+                    break;
+                case CodeU2A.PayFinished:
+                    SDPlatformUtil.getInstance().payProcessing = false;
+                    break;
+                case CodeU2A.CreateRole:
+                    SDPlatformUtil.getInstance().createRole(_activity,
+                                                            _json.getString("roleID"),
+                                                            _json.getString(
+                                                                     "roleName").trim().replace(" ",
+                                                                                                ""),
+                                                            _json.getString("sid"),
+                                                            _json.getString("serverName"),
+                                                            _json.getString("level"),
+                                                            _json.getString("createTime"));
+                    break;
+                case CodeU2A.RoleLogin:
+                    SDPlatformUtil.getInstance().enterWorld(_activity,
+                                                            _json.getString("roleID"),
+                                                            _json.getString(
+                                                                     "roleName").trim().replace(" ",
+                                                                                                ""),
+                                                            _json.getString("sid"),
+                                                            _json.getString("serverName"),
+                                                            _json.getString("level"));
+                    break;
+                case CodeU2A.RoleLevelUp:
+                    SDPlatformUtil.getInstance().levelUp(_activity,
+                                                         _json.getString("roleID"),
+                                                         _json.getString(
+                                                                  "roleName").trim().replace(" ",
+                                                                                             ""),
+                                                         _json.getString("sid"),
+                                                         _json.getString("serverName"),
+                                                         _json.getString("level"));
+                    break;
+                case CodeU2A.ClientPackage:
+                    break;
+                case CodeU2A.JPushAddLocalMessage:
+                    addLocalNotification(_activity,
+                                         _json.getInt("id"),
+                                         _json.getString("title"),
+                                         _json.getString("content"),
+                                         _json.getLong("fireTime"));
+                    break;
+                case CodeU2A.JPushRemoveLocalMessage:
+                    removeNotification(_activity, _json.getInt("id"));
+                    break;
+                case CodeU2A.SendRegistEvent:
+                    SDPlatformUtil.getInstance().SendRegisterEvent();
+                    break;
+            }
+
+        } catch (JSONException e)
+        {
+            e.printStackTrace();
+        }
+    }
+
+    // 鏈湴鎺ㄩ��
+    public static void addLocalNotification(Activity activity, int id, String title, String content,
+                                            long fireTime)
+    {
+        if (PushEnable)
+        {
+//            try
+//            {
+//                JPushLocalNotification ln = new JPushLocalNotification();
+//                ln.setBuilderId(0);// 璁剧疆鏍峰紡
+//                ln.setNotificationId(id);// id
+//                ln.setTitle(title);// 鏍囬
+//
+//                ln.setContent(content);// 鍐呭
+//                ln.setBroadcastTime(fireTime);// 绛夊緟鏃堕棿
+//                JPushInterface.addLocalNotification(activity, ln);
+//            } catch (Exception e)
+//            {
+//                e.printStackTrace();
+//            }
+        }
+    }
+
+    public static void removeNotification(Activity activity, int id)
+    {
+        if (PushEnable)
+        {
+            //JPushInterface.removeLocalNotification(activity, id);
+        }
+    }
+
+    public static void GetExternalStorage()
+    {
+        Map<String, Object> _msg = new HashMap<>();
+        _msg.put("code", CodeA2U.ExternalStorage);
+        _msg.put("path", Environment.getExternalStorageDirectory().getAbsolutePath());
+        UniversalUtil.sendMessageToUnity(_msg);
+    }
+
+    public static void InstallApp(Activity activity, String path)
+    {
+        File _file = new File(path);
+
+        if (_file == null)
+        {
+            LogUtil.i(TAG, "鎵句笉鍒扮粰瀹氬湴鍧�鐨刟pk: " + path);
+            return;
+        }
+
+        try
+        {
+            Intent _intent = new Intent(Intent.ACTION_VIEW);
+
+//            if (Build.VERSION.SDK_INT >= 23)
+//            {
+//                _intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
+//                Uri _contentUri = FileProvider.getUriForFile(activity,
+//                                                             "com.shandangceshi.snxxz.fileProvider",
+//                                                             _file);
+//                _intent.setDataAndType(_contentUri, "application/vnd.android.package-archive");
+//
+//            }
+//            else
+//            {
+            _intent.setDataAndType(Uri.fromFile(_file),
+                                   "application/vnd.android.package-archive");
+            _intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+
+//            }
+
+            activity.startActivity(_intent);
+
+        } catch (Exception e)
+        {
+            e.printStackTrace();
+            Toast.makeText(activity, "娌℃湁鎵惧埌鎵撳紑姝ょ被鏂囦欢鐨勭▼搴�", Toast.LENGTH_SHORT).show();
+        }
+    }
+
+    public static void CopyContent(final Activity activity, final String content)
+    {
+        activity.runOnUiThread(new Runnable()
+        {
+            @Override
+            public void run()
+            {
+                ClipboardManager _mgr = (ClipboardManager) activity.getSystemService(
+                        Context.CLIPBOARD_SERVICE);
+                ClipData _data = ClipData.newPlainText("playerId", content);
+                _mgr.setPrimaryClip(_data);
+            }
+        });
+    }
+
+    public static void RestartApp(final Activity activity)
+    {
+        activity.runOnUiThread(new Runnable()
+        {
+            @Override
+            public void run()
+            {
+                new Thread()
+                {
+                    public void run()
+                    {
+                        String _pn = activity.getPackageName();
+                        PackageManager _pm = activity.getPackageManager();
+                        Intent _l = _pm.getLaunchIntentForPackage(_pn);
+                        _l.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
+                        activity.startActivity(_l);
+                        android.os.Process.killProcess(android.os.Process.myPid());
+                    }
+                }.start();
+                activity.finish();
+            }
+        });
+    }
+
+    public static void init(final Activity activity)
+    {
+        final int _memoryTotal = (int) (UniversalUtil.getMemTotal() / 1024);
+        if (_memoryTotal < 1024)
+        {
+            LogUtil.i(TAG, "妫�娴嬭澶囧唴瀛樹笉婊¤冻杩愯绋嬪簭鏍囧噯");
+            AlertDialog.Builder _builder = new AlertDialog.Builder(activity);
+            _builder.setIcon(R.drawable.app_icon);
+            _builder.setTitle("璀﹀憡");
+            _builder.setMessage("鎮ㄧ殑鎵嬫満鍐呭瓨涓嶈冻,鏃犳硶姝e父杩愯娓告垙");
+            _builder.setPositiveButton("纭畾", new DialogInterface.OnClickListener()
+            {
+                @Override
+                public void onClick(DialogInterface dialogInterface, int i)
+                {
+                    android.os.Process.killProcess(android.os.Process.myPid());
+                }
+            });
+            _builder.show();
+            return;
+        }
+
+        PushEnable = false;// activity.getPackageName().equals("com.lingleigame.shaonianqixiachuan");
+
+        new Thread(new Runnable()
+        {
+            @Override
+            public void run()
+            {
+                LogUtil.i(TAG, "寮�濮嬫墽琛屽垵濮嬪寲");
+
+                GetExternalStorage();
+
+                // ------------------------------- 璁惧淇℃伅 -------------------------------
+                Map<String, Object> _msgStruct = new HashMap<>();
+                _msgStruct.put("code", CodeA2U.DeviceInfo);
+                _msgStruct.put("userAgent", System.getProperty("http.agent"));
+                _msgStruct.put("mac", UniqueID.getLocalMac(activity));
+                _msgStruct.put("imei", UniqueID.getDeviceId(activity));
+                _msgStruct.put("android_id",
+                               Settings.System.getString(activity.getContentResolver(),
+                                                         Settings.System.ANDROID_ID));
+                _msgStruct.put("unique_id", UniqueID.get(activity));
+                _msgStruct.put("memoryTotal", _memoryTotal);
+                UniversalUtil.sendMessageToUnity(_msgStruct);
+
+                // ------------------------------- 鏋佸厜鎺ㄩ�� -------------------------------
+                String _registrationID = "0";
+                if (PushEnable)
+                {
+//                    JPushInterface.setDebugMode(true);
+//                    JPushInterface.init(activity);
+//
+//                    final long _waitingTime = System.currentTimeMillis();
+//
+//                    while (true)
+//                    {
+//                        // 绛夊緟鑾峰彇鏋佸厜registrationID
+//                        if (!JPushInterface.getRegistrationID(activity).equals(""))
+//                        {
+//                            _registrationID = JPushInterface.getRegistrationID(activity);
+//                            break;
+//                        }
+//
+//                        long _escapeTime = System.currentTimeMillis() - _waitingTime;
+//
+//                        if (_escapeTime > 3000)
+//                        {
+//                            LogUtil.w(TAG, "绛夊緟鑾峰彇鏋佸厜鎺ㄩ�乺egistrationID瓒呮椂: 3绉�");
+//                            break;
+//                        }
+//                    }
+                }
+
+                _msgStruct.clear();
+                _msgStruct.put("code", CodeA2U.PushClientID);
+                _msgStruct.put("clientID", _registrationID);
+                UniversalUtil.sendMessageToUnity(_msgStruct);
+
+                _msgStruct.clear();
+                _msgStruct.put("code", CodeA2U.SdkInitComplete);
+                _msgStruct.put("channelPlatform", "cjm");
+                _msgStruct.put("cjmappid","21");
+                UniversalUtil.sendMessageToUnity(_msgStruct);
+
+                LogUtil.i(TAG, "鍒濆鍖栨墽琛屽畬姣�");
+            }
+
+        }).start();
+    }
+
+    public static void onCreate(Activity activity, Bundle savedInstanceState)
+    {
+        SDPlatformUtil.getInstance().init(activity);
+
+        GMcenter.getInstance(activity).onCreate(activity);
+    }
+
+    private static boolean m_IsFocus = true;
+
+    public static void onWindowFocusChanged(boolean b)
+    {
+        if (SDPlatformUtil.getInstance().payProcessing)
+        {
+            if (b)
+            {
+                Map<String, Object> _msgStruct = new HashMap<>();
+                _msgStruct.put("code", CodeA2U.FreePlatformPayCancel);
+                UniversalUtil.sendMessageToUnity(_msgStruct);
+                SDPlatformUtil.getInstance().payProcessing = false;
+            }
+        }
+    }
+
+    public static void onNewIntent(final Activity activity, final Intent intent)
+    {
+    }
+
+    public static void onActivityResult(int requestCode,
+                                        int resultCode,
+                                        final Intent data,
+                                        final Activity activity)
+    {
+        GMcenter.getInstance(activity).onActivityResult(activity, requestCode, resultCode, data);
+    }
+
+    public static void onConfigurationChanged(final Configuration newConfig)
+    {
+    }
+
+    public static void onRestart(final Activity activity)
+    {
+        GMcenter.getInstance(activity).onRestart(activity);
+    }
+
+    public static void onStart(final Activity activity)
+    {
+        GMcenter.getInstance(activity).onStart(activity);
+    }
+
+    public static void onPause(final Activity activity)
+    {
+        GMcenter.getInstance(activity).hideFloatingView(activity);
+    }
+
+    public static void onResume(final Activity activity)
+    {
+        GMcenter.getInstance(activity).onResume(activity);
+        GMcenter.getInstance(activity).showFloatingView(activity);
+        if (SDPlatformUtil.getInstance().payProcessing)
+        {
+            Map<String, Object> _msgStruct = new HashMap<>();
+            _msgStruct.put("code", CodeA2U.FreePlatformPayCancel);
+            UniversalUtil.sendMessageToUnity(_msgStruct);
+            SDPlatformUtil.getInstance().payProcessing = false;
+        }
+    }
+
+    public static void onStop(final Activity activity)
+    {
+        GMcenter.getInstance(activity).onStop(activity);
+    }
+
+    public static void onDestroy(final Activity activity)
+    {
+        GMcenter.getInstance(activity).onDestroy(activity);
+    }
+}
+
diff --git a/Project/sd_sdk/src/game_sdgame/java/com/secondworld/univeralsdk/SDPlatformUtil.java b/Project/sd_sdk/src/game_sdgame/java/com/secondworld/univeralsdk/SDPlatformUtil.java
new file mode 100644
index 0000000..a158eef
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/java/com/secondworld/univeralsdk/SDPlatformUtil.java
@@ -0,0 +1,252 @@
+package com.secondworld.univeralsdk;
+
+import android.app.Activity;
+
+import com.yyjia.sdk.center.GMcenter;
+import com.yyjia.sdk.data.Information;
+import com.yyjia.sdk.listener.ExitGameListener;
+import com.yyjia.sdk.listener.InitListener;
+import com.yyjia.sdk.listener.LoginListener;
+import com.yyjia.sdk.listener.PayListener;
+
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * Created by Administrator on 2018/9/3 0003.
+ */
+
+public class SDPlatformUtil
+{
+    private static final String TAG = "SDPlatformUtil";
+
+    private boolean m_Init = false;
+
+    private static SDPlatformUtil s_Instance;
+
+    public static SDPlatformUtil getInstance()
+    {
+        if (s_Instance == null)
+        {
+            s_Instance = new SDPlatformUtil();
+        }
+        return s_Instance;
+    }
+
+    public boolean payProcessing = false;
+
+    private Map<String, Object> m_Message = new HashMap<>();
+
+    public void init(final Activity activity)
+    {
+        if (m_Init)
+        {
+            return;
+        }
+
+        GMcenter.getInstance(activity).setInitListener(new InitListener()
+        {
+            @Override
+            public void onSuccess(int i)
+            {
+                m_Init = true;
+                m_Message.put("code", CodeA2U.FreePlatformInitOk);
+                UniversalUtil.sendMessageToUnity(m_Message);
+            }
+
+            @Override
+            public void onFailure(int i, String s)
+            {
+                //鍒濆鍖栧け璐�  msg 閿欒淇℃伅
+                m_Message.clear();
+                m_Message.put("code", CodeA2U.FreePlatformInitFail);
+                UniversalUtil.sendMessageToUnity(m_Message);
+            }
+        });
+
+        GMcenter.getInstance(activity).setLoginListener(new LoginListener()
+        {
+            @Override
+            public void loginSuccessed(String s)
+            {
+                if (s == Information.LOGIN_SUSECCEDS)
+                {
+                    //鐧诲綍鎴愬姛  uuid:鐢ㄦ埛id锛宮sg:鏍¢獙id
+                    try
+                    {
+                        m_Message.clear();
+                        JSONObject _info = new JSONObject();
+                        _info.put("account", GMcenter.getInstance(activity).getUid());
+                        _info.put("token", GMcenter.getInstance(activity).getSid());
+                        _info.put("account_id", GMcenter.getInstance(activity).getUid());
+                        m_Message.put("code", CodeA2U.FreePlatformLoginOk);
+                        m_Message.put("info", _info);
+                        UniversalUtil.sendMessageToUnity(m_Message);
+                    } catch (JSONException e)
+                    {
+                        e.printStackTrace();
+                    }
+                }
+                else
+                {
+                    LogUtil.e(TAG, "鐧诲綍澶辫触  " + s);
+                    m_Message.clear();
+                    m_Message.put("code", CodeA2U.FreePlatformLoginFail);
+                    UniversalUtil.sendMessageToUnity(m_Message);
+                }
+            }
+
+            @Override
+            public void logoutSuccessed(String s)
+            {
+                if (s == Information.LOGOUT_SUSECCED)
+                {
+                    m_Message.clear();
+                    m_Message.put("code", CodeA2U.FreePlatformLogoutOk);
+                    UniversalUtil.sendMessageToUnity(m_Message);
+                }
+                else
+                {
+                    m_Message.clear();
+                    m_Message.put("code", CodeA2U.FreePlatformLogoutFail);
+                    UniversalUtil.sendMessageToUnity(m_Message);
+                }
+            }
+
+            @Override
+            public void logcancelSuccessed(String s)
+            {
+                if (s == Information.LOGCANCEL_SUSECCED)
+                {
+                    LogUtil.e(TAG, "鐧婚檰鍙栨秷鎴愬姛  " + s);
+                    m_Message.clear();
+                    m_Message.put("code", CodeA2U.FreePlatformLoginFail);
+                    UniversalUtil.sendMessageToUnity(m_Message);
+                }
+            }
+        });
+
+        GMcenter.getInstance(activity).setExitGameListener(new ExitGameListener()
+        {
+            @Override
+            public void onSuccess()
+            {
+                LogUtil.i(TAG, "閫�鍑烘父鎴忔垚鍔�...");
+            }
+
+            @Override
+            public void onFailure()
+            {
+                LogUtil.i(TAG, "閫�鍑烘父鎴忓け璐�...");
+            }
+
+            @Override
+            public void onCancel()
+            {
+                LogUtil.i(TAG, "閫�鍑烘父鎴忓彇娑�...");
+            }
+        });
+    }
+
+    public void login(Activity activity)
+    {
+        GMcenter.getInstance(activity).checkLogin();
+    }
+
+    public void logout(final Activity activity)
+    {
+        GMcenter.getInstance(activity).logout();
+    }
+
+    public void pay(final Activity activity,
+                    String orderID,
+                    float amount,
+                    String title,
+                    String extraData,
+                    String roleId,
+                    String sid)
+    {
+        GMcenter.getInstance(activity).pay(activity,
+                                           amount,
+                                           title,
+                                           sid,
+                                           roleId,
+                                           orderID,
+                                           extraData,
+                                           new PayListener()
+                                           {
+                                               @Override
+                                               public void paySuccessed(String code,
+                                                                        String cporderid)
+                                               {
+                                                   if (code == Information.PAY_SUSECCED)
+                                                   {
+                                                       m_Message.clear();
+                                                       m_Message.put("code", CodeA2U.FreePlatformPayOk);
+                                                       UniversalUtil.sendMessageToUnity(m_Message);
+                                                       payProcessing = false;
+                                                   }
+                                                   else
+                                                   {
+                                                       //code:鏀粯澶辫触閿欒鐮侊紝msg:鏀粯澶辫触閿欒淇℃伅
+                                                       m_Message.clear();
+                                                       m_Message.put("code", CodeA2U.FreePlatformPayFail);
+                                                       UniversalUtil.sendMessageToUnity(m_Message);
+                                                       payProcessing = false;
+                                                   }
+                                               }
+
+                                               @Override
+                                               public void payGoBack()
+                                               {
+                                                   m_Message.clear();
+                                                   m_Message.put("code", CodeA2U.FreePlatformPayCancel);
+                                                   UniversalUtil.sendMessageToUnity(m_Message);
+                                                   payProcessing = false;
+                                               }
+
+                                           });
+
+    }
+
+    public void enterWorld(final Activity activity,
+                           String roleID,
+                           String roleName,
+                           String sid,
+                           String serverName,
+                           String roleLevel)
+    {
+        GMcenter.getInstance(activity).submitRoleInfo(sid, serverName,
+                                                      roleID, roleName, roleLevel,"");
+    }
+
+    public void createRole(final Activity activity,
+                           String roleID,
+                           String roleName,
+                           String sid,
+                           String serverName,
+                           String roleLevel,
+                           String createTime)
+    {
+        GMcenter.getInstance(activity).submitRoleInfo(sid, serverName,
+                                                      roleID, roleName, roleLevel,createTime);
+    }
+
+    public void levelUp(final Activity activity,
+                        String roleID,
+                        String roleName,
+                        String sid,
+                        String serverName,
+                        String roleLevel)
+    {
+        GMcenter.getInstance(activity).submitRoleInfo(sid, serverName,
+                                                      roleID, roleName, roleLevel,"");
+    }
+
+    public void SendRegisterEvent()
+    {
+    }
+}
diff --git a/Project/sd_sdk/src/game_sdgame/res/anim/game_sdk_ani_in.xml b/Project/sd_sdk/src/game_sdgame/res/anim/game_sdk_ani_in.xml
new file mode 100644
index 0000000..41d1af2
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/anim/game_sdk_ani_in.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<set xmlns:android="http://schemas.android.com/apk/res/android">  
+<translate android:interpolator="@android:anim/accelerate_decelerate_interpolator"  
+  
+       android:fromYDelta="-100"  
+  
+       android:toYDelta="0"  
+  
+       android:duration="50"  
+  
+       android:fillEnabled="true"
+  
+       android:fillAfter="true"  >
+       
+    <scale android:fromXScale="0.6" android:toXScale="1.0"  
+  
+                android:fromYScale="0.6" android:toYScale="1.0" android:pivotX="50%"  
+  
+                android:pivotY="50%" android:duration="50" />  
+  
+        <alpha android:interpolator="@android:anim/decelerate_interpolator"  
+  
+                android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="50" />  
+    
+
+</translate>
+</set>  
diff --git a/Project/sd_sdk/src/game_sdgame/res/anim/game_sdk_ani_out.xml b/Project/sd_sdk/src/game_sdgame/res/anim/game_sdk_ani_out.xml
new file mode 100644
index 0000000..7f36b67
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/anim/game_sdk_ani_out.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>  
+  
+<set xmlns:android="http://schemas.android.com/apk/res/android"  
+  
+    android:oneshot="true"  
+  
+    >  
+  
+    <translate android:interpolator="@android:anim/accelerate_decelerate_interpolator"  
+  
+       android:fromYDelta="0"  
+  
+       android:toYDelta="-100"  
+  
+       android:duration="50"  
+  
+       android:fillEnabled="true"  
+  
+       android:fillAfter="true"  
+  
+       />  
+  
+               <scale android:fromXScale="1.0" android:toXScale="0.4"  
+  
+                android:fromYScale="1.0" android:toYScale="0.4" android:pivotX="50%"  
+  
+                android:pivotY="50%" android:duration="50" />  
+  
+    <alpha android:interpolator="@android:anim/decelerate_interpolator"  
+  
+       android:fromAlpha="1.0"   
+  
+       android:toAlpha="0.0"   
+  
+       android:duration="50"   
+  
+       />  
+  
+</set>  
\ No newline at end of file
diff --git a/Project/sd_sdk/src/game_sdgame/res/anim/game_sdk_anim.xml b/Project/sd_sdk/src/game_sdgame/res/anim/game_sdk_anim.xml
new file mode 100644
index 0000000..36810c8
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/anim/game_sdk_anim.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+<translate xmlns:android="http://schemas.android.com/apk/res/android"
+    android:duration="50"
+    android:fillAfter="true"
+    android:fromXDelta="0"
+    android:fromYDelta="0"
+    android:toXDelta="200"
+    android:toYDelta="600">
+
+
+</translate>
diff --git a/Project/sd_sdk/src/game_sdgame/res/anim/game_sdk_anim_in.xml b/Project/sd_sdk/src/game_sdgame/res/anim/game_sdk_anim_in.xml
new file mode 100644
index 0000000..fc91d31
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/anim/game_sdk_anim_in.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<translate android:duration="50" xmlns:android="http://schemas.android.com/apk/res/android"
+    android:fromXDelta="600"
+    android:toXDelta="0">
+    
+
+</translate>
diff --git a/Project/sd_sdk/src/game_sdgame/res/anim/game_sdk_anim_out.xml b/Project/sd_sdk/src/game_sdgame/res/anim/game_sdk_anim_out.xml
new file mode 100644
index 0000000..fde1d57
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/anim/game_sdk_anim_out.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<translate android:duration="50" xmlns:android="http://schemas.android.com/apk/res/android"
+    android:fromXDelta="0"
+    android:toXDelta="600">
+    
+
+</translate>
diff --git a/Project/sd_sdk/src/game_sdgame/res/anim/game_sdk_loading_rotate.xml b/Project/sd_sdk/src/game_sdgame/res/anim/game_sdk_loading_rotate.xml
new file mode 100644
index 0000000..c210bb4
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/anim/game_sdk_loading_rotate.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<rotate xmlns:android="http://schemas.android.com/apk/res/android"
+    android:duration="800"
+    android:fromDegrees="0"
+    android:interpolator="@android:anim/linear_interpolator"
+    android:pivotX="50%"
+    android:pivotY="50%"
+    android:repeatCount="infinite"
+    android:repeatMode="restart"
+    android:toDegrees="+360" >
+
+</rotate>
\ No newline at end of file
diff --git a/Project/sd_sdk/src/game_sdgame/res/anim/pop_hidden.xml b/Project/sd_sdk/src/game_sdgame/res/anim/pop_hidden.xml
new file mode 100644
index 0000000..73f4f8a
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/anim/pop_hidden.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<set xmlns:android="http://schemas.android.com/apk/res/android">
+    <translate
+        android:duration="300"
+        android:fromYDelta="0"
+        android:toYDelta="100%p"/>
+</set>
\ No newline at end of file
diff --git a/Project/sd_sdk/src/game_sdgame/res/anim/pop_show.xml b/Project/sd_sdk/src/game_sdgame/res/anim/pop_show.xml
new file mode 100644
index 0000000..893368c
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/anim/pop_show.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<set xmlns:android="http://schemas.android.com/apk/res/android">
+    <translate
+        android:duration="300"
+        android:fromYDelta="100%p"
+        android:toYDelta="0" />
+</set>
\ No newline at end of file
diff --git a/Project/sd_sdk/src/game_sdgame/res/color/protocol_color.xml b/Project/sd_sdk/src/game_sdgame/res/color/protocol_color.xml
new file mode 100644
index 0000000..b7fbbc0
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/color/protocol_color.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:color="#18A3C0" android:state_pressed="true"/>
+    <item android:color="#34c8e6"/>
+</selector>
\ No newline at end of file
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_abc.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_abc.png
new file mode 100644
index 0000000..3aa4892
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_abc.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_abc_gray.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_abc_gray.png
new file mode 100644
index 0000000..177bd38
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_abc_gray.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_bccb.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_bccb.png
new file mode 100644
index 0000000..9135614
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_bccb.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_bccb_gray.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_bccb_gray.png
new file mode 100644
index 0000000..198da35
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_bccb_gray.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_boc.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_boc.png
new file mode 100644
index 0000000..a406248
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_boc.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_boc_gray.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_boc_gray.png
new file mode 100644
index 0000000..14423b4
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_boc_gray.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_bohai.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_bohai.png
new file mode 100644
index 0000000..7a61e88
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_bohai.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_bohai_gray.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_bohai_gray.png
new file mode 100644
index 0000000..2b7cd3a
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_bohai_gray.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_bos.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_bos.png
new file mode 100644
index 0000000..0f91d9f
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_bos.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_bos_gray.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_bos_gray.png
new file mode 100644
index 0000000..a910f37
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_bos_gray.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_cbhb.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_cbhb.png
new file mode 100644
index 0000000..7a61e88
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_cbhb.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_cbhb_gray.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_cbhb_gray.png
new file mode 100644
index 0000000..2b7cd3a
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_cbhb_gray.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_ccb.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_ccb.png
new file mode 100644
index 0000000..bb45785
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_ccb.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_ccb_gray.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_ccb_gray.png
new file mode 100644
index 0000000..f7eb80b
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_ccb_gray.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_ccqtgb.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_ccqtgb.png
new file mode 100644
index 0000000..2c73d4d
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_ccqtgb.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_ccqtgb_gray.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_ccqtgb_gray.png
new file mode 100644
index 0000000..4cec7a7
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_ccqtgb_gray.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_ceb.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_ceb.png
new file mode 100644
index 0000000..d3aaa0b
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_ceb.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_ceb_gray.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_ceb_gray.png
new file mode 100644
index 0000000..47adac0
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_ceb_gray.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_cib.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_cib.png
new file mode 100644
index 0000000..1cd4f83
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_cib.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_cib_gray.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_cib_gray.png
new file mode 100644
index 0000000..bc0d14c
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_cib_gray.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_citic.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_citic.png
new file mode 100644
index 0000000..4361efd
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_citic.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_citic_gray.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_citic_gray.png
new file mode 100644
index 0000000..d870f9f
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_citic_gray.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_cmb.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_cmb.png
new file mode 100644
index 0000000..310d769
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_cmb.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_cmb_gray.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_cmb_gray.png
new file mode 100644
index 0000000..2fe94b5
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_cmb_gray.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_cmbc.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_cmbc.png
new file mode 100644
index 0000000..7c5c127
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_cmbc.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_cmbc_gray.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_cmbc_gray.png
new file mode 100644
index 0000000..f83e769
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_cmbc_gray.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_comm.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_comm.png
new file mode 100644
index 0000000..3f025b0
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_comm.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_comm_gray.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_comm_gray.png
new file mode 100644
index 0000000..79e0a92
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_comm_gray.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_czb.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_czb.png
new file mode 100644
index 0000000..895daf9
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_czb.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_czb_gray.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_czb_gray.png
new file mode 100644
index 0000000..dbba556
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_czb_gray.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_egbank.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_egbank.png
new file mode 100644
index 0000000..9d6a2be
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_egbank.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_egbank_gray.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_egbank_gray.png
new file mode 100644
index 0000000..9b2be93
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_egbank_gray.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_gd.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_gd.png
new file mode 100644
index 0000000..f22e166
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_gd.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_gd_gray.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_gd_gray.png
new file mode 100644
index 0000000..82c25c2
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_gd_gray.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_gdb.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_gdb.png
new file mode 100644
index 0000000..8efe593
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_gdb.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_gdb_gray.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_gdb_gray.png
new file mode 100644
index 0000000..214ffeb
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_gdb_gray.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_hengfeng.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_hengfeng.png
new file mode 100644
index 0000000..9d6a2be
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_hengfeng.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_hengfeng_gray.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_hengfeng_gray.png
new file mode 100644
index 0000000..9b2be93
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_hengfeng_gray.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_hkbea.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_hkbea.png
new file mode 100644
index 0000000..97586d9
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_hkbea.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_hkbea_gray.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_hkbea_gray.png
new file mode 100644
index 0000000..d2afca8
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_hkbea_gray.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_hsbank.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_hsbank.png
new file mode 100644
index 0000000..86eb0b7
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_hsbank.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_hsbank_gray.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_hsbank_gray.png
new file mode 100644
index 0000000..1c3b8bf
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_hsbank_gray.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_huishang.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_huishang.png
new file mode 100644
index 0000000..86eb0b7
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_huishang.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_huishang_gray.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_huishang_gray.png
new file mode 100644
index 0000000..1c3b8bf
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_huishang_gray.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_hxb.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_hxb.png
new file mode 100644
index 0000000..e5d90c6
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_hxb.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_hxb_gray.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_hxb_gray.png
new file mode 100644
index 0000000..b5329df
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_hxb_gray.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_icbc.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_icbc.png
new file mode 100644
index 0000000..2b404e3
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_icbc.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_icbc_gray.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_icbc_gray.png
new file mode 100644
index 0000000..f4dc6c6
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_icbc_gray.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_js.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_js.png
new file mode 100644
index 0000000..ca86494
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_js.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_js_gray.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_js_gray.png
new file mode 100644
index 0000000..0a5c727
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_js_gray.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_njcb.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_njcb.png
new file mode 100644
index 0000000..2a2434c
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_njcb.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_njcb_67.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_njcb_67.png
new file mode 100644
index 0000000..4dbf86f
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_njcb_67.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_njcb_gray.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_njcb_gray.png
new file mode 100644
index 0000000..900d9fb
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_njcb_gray.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_other.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_other.png
new file mode 100644
index 0000000..47cb323
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_other.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_other_gray.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_other_gray.png
new file mode 100644
index 0000000..74281cb
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_other_gray.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_psbc.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_psbc.png
new file mode 100644
index 0000000..6198fd1
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_psbc.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_psbc_gray.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_psbc_gray.png
new file mode 100644
index 0000000..60610fc
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_psbc_gray.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_sanxia.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_sanxia.png
new file mode 100644
index 0000000..2c73d4d
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_sanxia.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_sanxia_gray.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_sanxia_gray.png
new file mode 100644
index 0000000..4cec7a7
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_sanxia_gray.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_sft.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_sft.png
new file mode 100644
index 0000000..b1cd799
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_sft.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_sft_gray.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_sft_gray.png
new file mode 100644
index 0000000..2b121d3
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_sft_gray.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_shiming.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_shiming.png
new file mode 100644
index 0000000..fee9d47
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_shiming.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_shrcb.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_shrcb.png
new file mode 100644
index 0000000..a5d135b
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_shrcb.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_shrcb_gray.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_shrcb_gray.png
new file mode 100644
index 0000000..221ffa3
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_shrcb_gray.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_shuoming.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_shuoming.png
new file mode 100644
index 0000000..4e46c2a
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_shuoming.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_sns.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_sns.png
new file mode 100644
index 0000000..a5d135b
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_sns.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_sns_gray.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_sns_gray.png
new file mode 100644
index 0000000..221ffa3
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_sns_gray.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_spdb.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_spdb.png
new file mode 100644
index 0000000..5335ed9
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_spdb.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_spdb_gray.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_spdb_gray.png
new file mode 100644
index 0000000..a0a2692
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_spdb_gray.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_szpab.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_szpab.png
new file mode 100644
index 0000000..d8398b9
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_szpab.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_szpab_gray.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_szpab_gray.png
new file mode 100644
index 0000000..efbfb72
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_szpab_gray.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_zheshang.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_zheshang.png
new file mode 100644
index 0000000..895daf9
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_zheshang.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_zheshang_gray.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_zheshang_gray.png
new file mode 100644
index 0000000..dbba556
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/bank_zheshang_gray.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/circle_loading.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/circle_loading.png
new file mode 100644
index 0000000..6247ae3
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/circle_loading.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/close_hover.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/close_hover.png
new file mode 100644
index 0000000..5eeffcd
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/close_hover.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_accountmanage.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_accountmanage.png
new file mode 100644
index 0000000..22c180d
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_accountmanage.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_accountmanage_click.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_accountmanage_click.png
new file mode 100644
index 0000000..dd30040
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_accountmanage_click.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_back.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_back.png
new file mode 100644
index 0000000..5595a31
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_back.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_back_click.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_back_click.png
new file mode 100644
index 0000000..a3f33df
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_back_click.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_background.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_background.png
new file mode 100644
index 0000000..507cc42
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_background.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_background_bottom.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_background_bottom.png
new file mode 100644
index 0000000..5a0d31a
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_background_bottom.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_background_toolbar.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_background_toolbar.png
new file mode 100644
index 0000000..04d973a
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_background_toolbar.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_bg_btnmenu.jpg b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_bg_btnmenu.jpg
new file mode 100644
index 0000000..835edd1
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_bg_btnmenu.jpg
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_bg_logo.jpg b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_bg_logo.jpg
new file mode 100644
index 0000000..2836017
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_bg_logo.jpg
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_bg_tab.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_bg_tab.png
new file mode 100644
index 0000000..c97e5ae
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_bg_tab.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_bluebutton.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_bluebutton.png
new file mode 100644
index 0000000..c82aa5a
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_bluebutton.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_bluebutton_click.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_bluebutton_click.png
new file mode 100644
index 0000000..d0730db
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_bluebutton_click.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_button.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_button.png
new file mode 100644
index 0000000..c82aa5a
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_button.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_button_click.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_button_click.png
new file mode 100644
index 0000000..d0730db
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_button_click.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_check.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_check.png
new file mode 100644
index 0000000..c4defec
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_check.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_checked.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_checked.png
new file mode 100644
index 0000000..123d99d
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_checked.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_clearicon.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_clearicon.png
new file mode 100644
index 0000000..9975b05
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_clearicon.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_close.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_close.png
new file mode 100644
index 0000000..e6b3117
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_close.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_close_click.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_close_click.png
new file mode 100644
index 0000000..d3b9321
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_close_click.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_community.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_community.png
new file mode 100644
index 0000000..6aa8b50
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_community.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_community_click.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_community_click.png
new file mode 100644
index 0000000..e0a8e87
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_community_click.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_dlgbackup.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_dlgbackup.png
new file mode 100644
index 0000000..ef0c0e4
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_dlgbackup.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_downarrow.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_downarrow.png
new file mode 100644
index 0000000..b0a9d9f
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_downarrow.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_downwindow.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_downwindow.png
new file mode 100644
index 0000000..3dd2913
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_downwindow.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_downwindow_line.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_downwindow_line.png
new file mode 100644
index 0000000..63f8753
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_downwindow_line.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_dropdown.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_dropdown.png
new file mode 100644
index 0000000..ade1b38
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_dropdown.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_dropdown_click.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_dropdown_click.png
new file mode 100644
index 0000000..33380df
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_dropdown_click.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_facebook.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_facebook.png
new file mode 100644
index 0000000..69d5df0
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_facebook.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_google.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_google.png
new file mode 100644
index 0000000..010abac
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_google.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_hdyx.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_hdyx.png
new file mode 100644
index 0000000..9fc4e7e
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_hdyx.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_hide_password.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_hide_password.png
new file mode 100644
index 0000000..1af5c65
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_hide_password.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_ic_launcher.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_ic_launcher.png
new file mode 100644
index 0000000..288b665
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_ic_launcher.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_icon0.jpg b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_icon0.jpg
new file mode 100644
index 0000000..e89e134
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_icon0.jpg
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_icon1.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_icon1.png
new file mode 100644
index 0000000..9903133
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_icon1.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_icon_loading.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_icon_loading.png
new file mode 100644
index 0000000..181226e
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_icon_loading.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_identifying_code.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_identifying_code.png
new file mode 100644
index 0000000..c2f3826
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_identifying_code.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_identifying_code_click.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_identifying_code_click.png
new file mode 100644
index 0000000..d581b75
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_identifying_code_click.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_img.jpg b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_img.jpg
new file mode 100644
index 0000000..9b890d8
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_img.jpg
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_img2.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_img2.png
new file mode 100644
index 0000000..767baf0
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_img2.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_inputbox.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_inputbox.png
new file mode 100644
index 0000000..647ad14
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_inputbox.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_inputbox2.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_inputbox2.png
new file mode 100644
index 0000000..a0fe428
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_inputbox2.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_inputbox2_click.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_inputbox2_click.png
new file mode 100644
index 0000000..a0fe428
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_inputbox2_click.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_inputbox_short.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_inputbox_short.png
new file mode 100644
index 0000000..46a1283
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_inputbox_short.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_inputbox_short_2.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_inputbox_short_2.png
new file mode 100644
index 0000000..d1dca90
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_inputbox_short_2.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_line.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_line.png
new file mode 100644
index 0000000..c9e5f3d
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_line.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_longbluebutton.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_longbluebutton.png
new file mode 100644
index 0000000..59341fb
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_longbluebutton.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_longbluebutton_click.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_longbluebutton_click.png
new file mode 100644
index 0000000..664edcb
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_longbluebutton_click.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_longbluebutton_disable.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_longbluebutton_disable.png
new file mode 100644
index 0000000..0518a43
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_longbluebutton_disable.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_midline.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_midline.png
new file mode 100644
index 0000000..e5af94f
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_midline.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_more.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_more.png
new file mode 100644
index 0000000..e87a17b
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_more.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_more_click.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_more_click.png
new file mode 100644
index 0000000..d30a4b5
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_more_click.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_password.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_password.png
new file mode 100644
index 0000000..482b74b
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_password.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_password_click.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_password_click.png
new file mode 100644
index 0000000..517323d
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_password_click.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_paychecked.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_paychecked.png
new file mode 100644
index 0000000..bf163f8
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_paychecked.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_paysearch.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_paysearch.png
new file mode 100644
index 0000000..ef248d3
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_paysearch.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_paysearch_click.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_paysearch_click.png
new file mode 100644
index 0000000..3198258
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_paysearch_click.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_progress_loading.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_progress_loading.png
new file mode 100644
index 0000000..07d305e
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_progress_loading.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_qq.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_qq.png
new file mode 100644
index 0000000..16de4ac
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_qq.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_rightarrow.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_rightarrow.png
new file mode 100644
index 0000000..362ab76
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_rightarrow.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_show_password.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_show_password.png
new file mode 100644
index 0000000..9c27994
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_show_password.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_showicon.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_showicon.png
new file mode 100644
index 0000000..ffce081
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_showicon.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_sina.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_sina.png
new file mode 100644
index 0000000..0a9018c
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_sina.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_toastbackground.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_toastbackground.png
new file mode 100644
index 0000000..fe4997e
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_toastbackground.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_toolbaricon.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_toolbaricon.png
new file mode 100644
index 0000000..197c0aa
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_toolbaricon.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_toolbaricon_bbs.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_toolbaricon_bbs.png
new file mode 100644
index 0000000..2d6621a
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_toolbaricon_bbs.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_toolbaricon_bg.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_toolbaricon_bg.png
new file mode 100644
index 0000000..f802acb
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_toolbaricon_bg.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_toolbaricon_bg_left.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_toolbaricon_bg_left.png
new file mode 100644
index 0000000..ad1c5a6
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_toolbaricon_bg_left.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_toolbaricon_bg_right.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_toolbaricon_bg_right.png
new file mode 100644
index 0000000..9922852
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_toolbaricon_bg_right.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_toolbaricon_click.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_toolbaricon_click.png
new file mode 100644
index 0000000..197c0aa
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_toolbaricon_click.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_toolbaricon_click_left.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_toolbaricon_click_left.png
new file mode 100644
index 0000000..d34ad6b
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_toolbaricon_click_left.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_toolbaricon_click_right.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_toolbaricon_click_right.png
new file mode 100644
index 0000000..3880d3f
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_toolbaricon_click_right.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_toolbaricon_customer_service.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_toolbaricon_customer_service.png
new file mode 100644
index 0000000..4262261
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_toolbaricon_customer_service.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_toolbaricon_end.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_toolbaricon_end.png
new file mode 100644
index 0000000..0050072
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_toolbaricon_end.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_toolbaricon_iconleft.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_toolbaricon_iconleft.png
new file mode 100644
index 0000000..526be13
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_toolbaricon_iconleft.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_toolbaricon_iconleft_letter.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_toolbaricon_iconleft_letter.png
new file mode 100644
index 0000000..6e787f8
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_toolbaricon_iconleft_letter.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_toolbaricon_iconright.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_toolbaricon_iconright.png
new file mode 100644
index 0000000..7b8317d
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_toolbaricon_iconright.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_toolbaricon_iconright_letter.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_toolbaricon_iconright_letter.png
new file mode 100644
index 0000000..551f114
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_toolbaricon_iconright_letter.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_toolbaricon_left.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_toolbaricon_left.png
new file mode 100644
index 0000000..a832c7d
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_toolbaricon_left.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_toolbaricon_logo.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_toolbaricon_logo.png
new file mode 100644
index 0000000..197c0aa
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_toolbaricon_logo.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_toolbaricon_manage.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_toolbaricon_manage.png
new file mode 100644
index 0000000..54f3828
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_toolbaricon_manage.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_toolbaricon_manage_letter.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_toolbaricon_manage_letter.png
new file mode 100644
index 0000000..f96d662
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_toolbaricon_manage_letter.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_toolbaricon_moreapp.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_toolbaricon_moreapp.png
new file mode 100644
index 0000000..b3a9876
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_toolbaricon_moreapp.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_toolbaricon_pack.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_toolbaricon_pack.png
new file mode 100644
index 0000000..a3b300e
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_toolbaricon_pack.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_toolbaricon_paylog.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_toolbaricon_paylog.png
new file mode 100644
index 0000000..9795838
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_toolbaricon_paylog.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_toolbaricon_right.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_toolbaricon_right.png
new file mode 100644
index 0000000..e86d00a
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_toolbaricon_right.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_toolbaricon_rightend.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_toolbaricon_rightend.png
new file mode 100644
index 0000000..8aa28fd
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_toolbaricon_rightend.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_uncheck.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_uncheck.png
new file mode 100644
index 0000000..1ca6e7b
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_uncheck.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_unchecked.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_unchecked.png
new file mode 100644
index 0000000..87262ea
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_unchecked.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_unpaychecked.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_unpaychecked.png
new file mode 100644
index 0000000..ccd9cb3
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_unpaychecked.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_uparrow.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_uparrow.png
new file mode 100644
index 0000000..c0a67d8
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_uparrow.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_warn.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_warn.png
new file mode 100644
index 0000000..0d490f2
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_warn.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_web_view_back.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_web_view_back.png
new file mode 100644
index 0000000..6d0ee9e
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_web_view_back.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_weixin.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_weixin.png
new file mode 100644
index 0000000..f253919
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_weixin.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_yk.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_yk.png
new file mode 100644
index 0000000..031de25
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/game_sdk_yk.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/icon_gray_logo.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/icon_gray_logo.png
new file mode 100644
index 0000000..9b3f747
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/icon_gray_logo.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/icon_gray_succ.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/icon_gray_succ.png
new file mode 100644
index 0000000..6b7bab0
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/icon_gray_succ.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/icon_left_arrow.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/icon_left_arrow.png
new file mode 100644
index 0000000..773d4dd
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/icon_left_arrow.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/nav_back.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/nav_back.png
new file mode 100644
index 0000000..3dd9bb8
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/nav_back.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/support.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/support.png
new file mode 100644
index 0000000..1a8270e
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/support.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/unsupport.png b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/unsupport.png
new file mode 100644
index 0000000..9bed494
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable-hdpi/unsupport.png
Binary files differ
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable/game_sdk_accountlist.xml b/Project/sd_sdk/src/game_sdgame/res/drawable/game_sdk_accountlist.xml
new file mode 100644
index 0000000..c43f022
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable/game_sdk_accountlist.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android" >
+    <item android:state_pressed="true" android:drawable="@drawable/game_sdk_dropdown_click"></item>
+    <item android:drawable="@drawable/game_sdk_dropdown"></item>
+
+</selector>
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable/game_sdk_base_white.xml b/Project/sd_sdk/src/game_sdgame/res/drawable/game_sdk_base_white.xml
new file mode 100644
index 0000000..e782c73
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable/game_sdk_base_white.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <item android:state_checked="true" android:color="@color/game_sdk_wt"/>
+    <item android:state_selected="true" android:color="@color/game_sdk_wt"/>
+    <item android:state_pressed="true" android:color="@color/game_sdk_wt"/>
+    <item android:state_focused="true" android:color="@color/game_sdk_wt"/>
+    <item android:color="@color/game_sdk_base_color"/>
+
+</selector>
\ No newline at end of file
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable/game_sdk_bbs.xml b/Project/sd_sdk/src/game_sdgame/res/drawable/game_sdk_bbs.xml
new file mode 100644
index 0000000..ef9018a
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable/game_sdk_bbs.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android" >
+    <item android:state_pressed="true" android:drawable="@drawable/game_sdk_community_click"></item>
+    <item android:drawable="@drawable/game_sdk_community"></item>
+
+</selector>
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable/game_sdk_bg.xml b/Project/sd_sdk/src/game_sdgame/res/drawable/game_sdk_bg.xml
new file mode 100644
index 0000000..44ee976
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable/game_sdk_bg.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android" >
+    <item android:state_pressed="true" android:drawable="@drawable/game_sdk_toolbaricon_click"></item>
+    <item android:drawable="@drawable/game_sdk_toolbaricon"></item>
+
+</selector>
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable/game_sdk_bg_back.xml b/Project/sd_sdk/src/game_sdgame/res/drawable/game_sdk_bg_back.xml
new file mode 100644
index 0000000..0995ef9
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable/game_sdk_bg_back.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android" >
+    <item android:state_pressed="true" android:drawable="@drawable/game_sdk_one"></item>
+    <item android:drawable="@drawable/game_sdk_two"></item>
+
+</selector>
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable/game_sdk_bg_pay.xml b/Project/sd_sdk/src/game_sdgame/res/drawable/game_sdk_bg_pay.xml
new file mode 100644
index 0000000..bad7743
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable/game_sdk_bg_pay.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android" >
+    <item android:state_pressed="true" android:drawable="@drawable/game_sdk_one"></item>
+    <item android:state_pressed="false" android:drawable="@drawable/game_sdk_two"></item>
+
+</selector>
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable/game_sdk_bt_back.xml b/Project/sd_sdk/src/game_sdgame/res/drawable/game_sdk_bt_back.xml
new file mode 100644
index 0000000..9f74845
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable/game_sdk_bt_back.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android" >
+    <item android:state_pressed="true" android:drawable="@drawable/game_sdk_back_click"></item>
+    <item android:drawable="@drawable/game_sdk_back"></item>
+
+</selector>
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable/game_sdk_button.xml b/Project/sd_sdk/src/game_sdgame/res/drawable/game_sdk_button.xml
new file mode 100644
index 0000000..a9c2094
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable/game_sdk_button.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android" >
+    <item android:state_pressed="true" android:drawable="@drawable/game_sdk_longbluebutton_click"></item>
+    <item android:drawable="@drawable/game_sdk_longbluebutton" android:state_enabled="true" ></item>
+    <item android:state_enabled="false"  android:drawable="@drawable/game_sdk_longbluebutton_disable"></item>
+
+</selector>
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable/game_sdk_checkbox.xml b/Project/sd_sdk/src/game_sdgame/res/drawable/game_sdk_checkbox.xml
new file mode 100644
index 0000000..be634ff
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable/game_sdk_checkbox.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android" >
+    <item android:state_enabled="true"
+          android:state_checked="true"
+          android:drawable="@drawable/game_sdk_checked"></item>
+    
+    
+    <item android:drawable="@drawable/game_sdk_unchecked"
+        android:state_enabled="true"
+        android:state_checked="false"></item>
+
+</selector>
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable/game_sdk_checkbox_pay.xml b/Project/sd_sdk/src/game_sdgame/res/drawable/game_sdk_checkbox_pay.xml
new file mode 100644
index 0000000..f34eca0
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable/game_sdk_checkbox_pay.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android" >
+    <item android:state_enabled="true"
+          android:state_checked="true"
+          android:drawable="@drawable/game_sdk_paychecked"></item>
+    
+    
+    <item android:drawable="@drawable/game_sdk_unpaychecked"
+        android:state_enabled="true"
+        android:state_checked="false"></item>
+
+</selector>
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable/game_sdk_clear.xml b/Project/sd_sdk/src/game_sdgame/res/drawable/game_sdk_clear.xml
new file mode 100644
index 0000000..2e1f16e
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable/game_sdk_clear.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <item android:drawable="@drawable/game_sdk_close" android:state_pressed="true"></item>
+    <item android:drawable="@drawable/game_sdk_close" android:state_focused="true"></item>
+    <item android:drawable="@drawable/game_sdk_close_click"></item>
+
+</selector>
\ No newline at end of file
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable/game_sdk_countrylist.xml b/Project/sd_sdk/src/game_sdgame/res/drawable/game_sdk_countrylist.xml
new file mode 100644
index 0000000..c43f022
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable/game_sdk_countrylist.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android" >
+    <item android:state_pressed="true" android:drawable="@drawable/game_sdk_dropdown_click"></item>
+    <item android:drawable="@drawable/game_sdk_dropdown"></item>
+
+</selector>
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable/game_sdk_dash.xml b/Project/sd_sdk/src/game_sdgame/res/drawable/game_sdk_dash.xml
new file mode 100644
index 0000000..7123aac
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable/game_sdk_dash.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="line">
+
+    <stroke
+        android:width="1dp"
+        android:color="@color/game_sdk_common_text_color"
+        android:dashGap="5dp"
+        android:dashWidth="5dp" />
+</shape>
\ No newline at end of file
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable/game_sdk_login.xml b/Project/sd_sdk/src/game_sdgame/res/drawable/game_sdk_login.xml
new file mode 100644
index 0000000..2d45fe9
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable/game_sdk_login.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android" >
+    <item android:state_pressed="true" android:drawable="@drawable/game_sdk_bluebutton_click"></item>
+    <item android:drawable="@drawable/game_sdk_bluebutton"></item>
+
+</selector>
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable/game_sdk_moreapp.xml b/Project/sd_sdk/src/game_sdgame/res/drawable/game_sdk_moreapp.xml
new file mode 100644
index 0000000..98a837e
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable/game_sdk_moreapp.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android" >
+    <item android:state_pressed="true" android:drawable="@drawable/game_sdk_more_click"></item>
+    <item android:drawable="@drawable/game_sdk_more"></item>
+
+</selector>
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable/game_sdk_payorder.xml b/Project/sd_sdk/src/game_sdgame/res/drawable/game_sdk_payorder.xml
new file mode 100644
index 0000000..06808f4
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable/game_sdk_payorder.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android" >
+    <item android:state_pressed="true" android:drawable="@drawable/game_sdk_paysearch_click"></item>
+    <item android:drawable="@drawable/game_sdk_paysearch"></item>
+
+</selector>
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable/game_sdk_pop_dismiss.xml b/Project/sd_sdk/src/game_sdgame/res/drawable/game_sdk_pop_dismiss.xml
new file mode 100644
index 0000000..4a4716d
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable/game_sdk_pop_dismiss.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <item android:drawable="@drawable/game_sdk_close_click" android:state_pressed="true"></item>
+    <item android:drawable="@drawable/game_sdk_close_click" android:state_focused="true"></item>
+    <item android:drawable="@drawable/game_sdk_close"></item>
+
+</selector>
\ No newline at end of file
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable/game_sdk_sha_bg_rectangle.xml b/Project/sd_sdk/src/game_sdgame/res/drawable/game_sdk_sha_bg_rectangle.xml
new file mode 100644
index 0000000..486102c
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable/game_sdk_sha_bg_rectangle.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+
+    <stroke
+        android:width="1dp"
+        android:color="#dcdcdc" />
+    <solid android:color="@android:color/white" />
+</shape>
\ No newline at end of file
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable/game_sdk_shape.xml b/Project/sd_sdk/src/game_sdgame/res/drawable/game_sdk_shape.xml
new file mode 100644
index 0000000..22e5a1e
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable/game_sdk_shape.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+    <item>
+        <shape>
+            <solid android:color="#ffffff" />
+            <corners android:topLeftRadius="5dp" android:topRightRadius="5dp"
+                android:bottomRightRadius="5dp" android:bottomLeftRadius="5dp" />
+            <stroke android:width="0dp" android:color="#ffa8abad" />
+        </shape>
+    </item>
+
+</layer-list>
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable/game_sdk_shape_bg_float_view_bar.xml b/Project/sd_sdk/src/game_sdgame/res/drawable/game_sdk_shape_bg_float_view_bar.xml
new file mode 100644
index 0000000..0eed28c
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable/game_sdk_shape_bg_float_view_bar.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+
+    <corners android:radius="120dp" />
+    <solid android:color="@color/game_sdk_float_view_bar_bg_color" />
+</shape>
\ No newline at end of file
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable/game_sdk_shape_bg_input.xml b/Project/sd_sdk/src/game_sdgame/res/drawable/game_sdk_shape_bg_input.xml
new file mode 100644
index 0000000..d9b723f
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable/game_sdk_shape_bg_input.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+
+    <corners android:radius="5dp" />
+    <solid android:color="@android:color/white" />
+    <stroke
+        android:width="1dp"
+        android:color="#dcdcdc" />
+
+</shape>
\ No newline at end of file
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable/game_sdk_shape_bg_login.xml b/Project/sd_sdk/src/game_sdgame/res/drawable/game_sdk_shape_bg_login.xml
new file mode 100644
index 0000000..6247518
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable/game_sdk_shape_bg_login.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+
+    <solid android:color="#2299F3" />
+    <corners android:radius="5dp" />
+</shape>
\ No newline at end of file
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable/game_sdk_shape_bg_register.xml b/Project/sd_sdk/src/game_sdgame/res/drawable/game_sdk_shape_bg_register.xml
new file mode 100644
index 0000000..a2d3d1e
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable/game_sdk_shape_bg_register.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+
+    <solid android:color="#1AAB6E" />
+    <corners android:radius="5dp" />
+</shape>
\ No newline at end of file
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable/game_sdk_shape_bg_round.xml b/Project/sd_sdk/src/game_sdgame/res/drawable/game_sdk_shape_bg_round.xml
new file mode 100644
index 0000000..59d013d
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable/game_sdk_shape_bg_round.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+
+    <solid android:color="@android:color/white" />
+    <corners android:radius="15dp" />
+</shape>
\ No newline at end of file
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable/game_sdk_user.xml b/Project/sd_sdk/src/game_sdgame/res/drawable/game_sdk_user.xml
new file mode 100644
index 0000000..b69f165
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable/game_sdk_user.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android" >
+    <item android:state_pressed="true" android:drawable="@drawable/game_sdk_accountmanage_click"></item>
+    <item android:drawable="@drawable/game_sdk_accountmanage"></item>
+
+</selector>
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable/game_sdk_white_base.xml b/Project/sd_sdk/src/game_sdgame/res/drawable/game_sdk_white_base.xml
new file mode 100644
index 0000000..ff2106a
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable/game_sdk_white_base.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <item android:state_checked="true" android:color="@color/game_sdk_base_color"/>
+    <item android:state_selected="true" android:color="@color/game_sdk_base_color"/>
+    <item android:state_pressed="true" android:color="@color/game_sdk_base_color"/>
+    <item android:state_focused="true" android:color="@color/game_sdk_base_color"/>
+    <item android:color="@color/game_sdk_wt"/>
+
+</selector>
\ No newline at end of file
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable/protocol_show_bg.xml b/Project/sd_sdk/src/game_sdgame/res/drawable/protocol_show_bg.xml
new file mode 100644
index 0000000..486f2ef
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable/protocol_show_bg.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:drawable="@drawable/protocol_show_pressed"
+        android:state_selected="true" />
+    <item android:drawable="@drawable/protocol_show_pressed"
+        android:state_pressed="true" />
+    <item android:drawable="@drawable/protocol_show_normal"/>
+</selector>
\ No newline at end of file
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable/protocol_show_normal.xml b/Project/sd_sdk/src/game_sdgame/res/drawable/protocol_show_normal.xml
new file mode 100644
index 0000000..9270156
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable/protocol_show_normal.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle" >
+    <gradient android:startColor="#ffffff"
+        android:centerColor="#ffffff"
+        android:endColor="#ffffff"
+        />
+</shape>
\ No newline at end of file
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable/protocol_show_pressed.xml b/Project/sd_sdk/src/game_sdgame/res/drawable/protocol_show_pressed.xml
new file mode 100644
index 0000000..6e483b1
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable/protocol_show_pressed.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle" >
+    <gradient android:startColor="#f0f8ff"
+        android:centerColor="#f0f8ff"
+        android:endColor="#f0f8ff"
+        />
+</shape>
\ No newline at end of file
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable/sdp_button_bg.xml b/Project/sd_sdk/src/game_sdgame/res/drawable/sdp_button_bg.xml
new file mode 100644
index 0000000..3b9c6f9
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable/sdp_button_bg.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+    <solid android:color="#8CBAE5"/>
+</shape>
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable/sdp_button_sel.xml b/Project/sd_sdk/src/game_sdgame/res/drawable/sdp_button_sel.xml
new file mode 100644
index 0000000..103a2db
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable/sdp_button_sel.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <!-- 鏈偣鍑绘寜閽� -->
+    <item android:state_enabled="true" android:state_pressed="false"
+        android:drawable="@color/sdp_button_normal_background_color"/>
+
+    <!-- 鐐瑰嚮鎸夐挳 -->
+    <item android:state_enabled="true" android:state_pressed="true"
+        android:drawable="@color/sdp_button_pressed_background_color"/>
+
+    <!-- 鎸夐挳涓嶅彲鐢� -->
+    <item android:state_enabled="false"
+        android:drawable="@color/sdp_button_unable_background_color"/>
+</selector>
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable/sdp_dialog_base_bg.xml b/Project/sd_sdk/src/game_sdgame/res/drawable/sdp_dialog_base_bg.xml
new file mode 100644
index 0000000..ff8af38
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable/sdp_dialog_base_bg.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+    <corners android:radius="@dimen/sdp_dialog_base_corners_radius"/>
+    <solid android:color="#FFFFFF"/>
+</shape>
\ No newline at end of file
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable/sdp_dialog_loading_bg.xml b/Project/sd_sdk/src/game_sdgame/res/drawable/sdp_dialog_loading_bg.xml
new file mode 100644
index 0000000..b381682
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable/sdp_dialog_loading_bg.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+    <corners android:radius="@dimen/sdp_dialog_loading_corners_radius"/>
+    <solid android:color="#80000000"/>
+</shape>
\ No newline at end of file
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable/sdp_edittext_bg.xml b/Project/sd_sdk/src/game_sdgame/res/drawable/sdp_edittext_bg.xml
new file mode 100644
index 0000000..8df3c04
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable/sdp_edittext_bg.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:state_window_focused="false" android:drawable="@drawable/sdp_edittext_normal_bg" />
+    <item android:state_focused="true" android:drawable="@drawable/sdp_edittext_focused_bg" />
+</selector>
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable/sdp_edittext_focused_bg.xml b/Project/sd_sdk/src/game_sdgame/res/drawable/sdp_edittext_focused_bg.xml
new file mode 100644
index 0000000..5ed94e0
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable/sdp_edittext_focused_bg.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+    <solid android:color="#ffffff" />
+    <!--<corners android:radius="3dip"/>-->
+    <stroke
+        android:width="1dip"
+        android:color="#e2e2e2" />
+</shape>
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable/sdp_edittext_normal_bg.xml b/Project/sd_sdk/src/game_sdgame/res/drawable/sdp_edittext_normal_bg.xml
new file mode 100644
index 0000000..5ed94e0
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable/sdp_edittext_normal_bg.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+    <solid android:color="#ffffff" />
+    <!--<corners android:radius="3dip"/>-->
+    <stroke
+        android:width="1dip"
+        android:color="#e2e2e2" />
+</shape>
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable/sdp_support_bank_list_bg.xml b/Project/sd_sdk/src/game_sdgame/res/drawable/sdp_support_bank_list_bg.xml
new file mode 100644
index 0000000..7104ac7
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable/sdp_support_bank_list_bg.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+    <solid android:color="#ffffff" />
+    <stroke
+        android:width="1dp"
+        android:color="#cccccc" />
+</shape>
diff --git a/Project/sd_sdk/src/game_sdgame/res/drawable/sdp_unbind_sel.xml b/Project/sd_sdk/src/game_sdgame/res/drawable/sdp_unbind_sel.xml
new file mode 100644
index 0000000..374cf69
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/drawable/sdp_unbind_sel.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:color="@color/LightBlue" android:state_pressed="true" />
+    <item android:color="@color/DarkBlue" />
+</selector>
diff --git a/Project/sd_sdk/src/game_sdgame/res/layout/activity_landscape.xml b/Project/sd_sdk/src/game_sdgame/res/layout/activity_landscape.xml
new file mode 100644
index 0000000..bfb774c
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/layout/activity_landscape.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    tools:context="com.yyjia.sdk.demo.test.LandscapeActivity">
+
+</android.support.constraint.ConstraintLayout>
diff --git a/Project/sd_sdk/src/game_sdgame/res/layout/activity_main.xml b/Project/sd_sdk/src/game_sdgame/res/layout/activity_main.xml
new file mode 100644
index 0000000..5910919
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/layout/activity_main.xml
@@ -0,0 +1,76 @@
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:background="@android:color/black"
+                android:fitsSystemWindows="true"
+                android:paddingBottom="@dimen/activity_vertical_margin"
+                android:paddingLeft="@dimen/activity_horizontal_margin"
+                android:paddingRight="@dimen/activity_horizontal_margin"
+                android:paddingTop="@dimen/activity_vertical_margin">
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:layout_alignParentLeft="true"
+        android:layout_alignParentStart="true"
+        android:layout_alignParentTop="true">
+
+        <Button
+            android:id="@+id/logout"
+            style="?android:attr/buttonStyleSmall"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="LOGOUT"/>
+
+        <Button
+            android:id="@+id/btnLogin"
+            style="?android:attr/buttonStyleSmall"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="LOGIN"/>
+
+        <Button
+            android:id="@+id/btn_toPay_oneyuan"
+            style="?android:attr/buttonStyleSmall"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_toLeftOf="@id/logout"
+            android:text="PAY 锟�1"/>
+
+        <Button
+            android:id="@+id/btn_toPay_twoyuan"
+            style="?android:attr/buttonStyleSmall"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_toLeftOf="@id/logout"
+            android:text="PAY 锟�2.00"/>
+
+        <Button
+            android:id="@+id/btn_create_role"
+            style="?android:attr/buttonStyleSmall"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_toLeftOf="@id/btn_toPay_twoyuan"
+            android:text="Create Role"
+            android:visibility="visible"/>
+
+        <Button
+            android:id="@+id/btn_update_role"
+            style="?android:attr/buttonStyleSmall"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_toLeftOf="@id/btn_toPay_twoyuan"
+            android:text="Update Role"
+            android:visibility="visible"/>
+
+        <Button
+            android:id="@+id/btn_exit_game"
+            style="?android:attr/buttonStyleSmall"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_toLeftOf="@id/btn_toPay_twoyuan"
+            android:text="Exit Game"
+            android:visibility="visible"/>
+    </LinearLayout>
+
+</RelativeLayout>
\ No newline at end of file
diff --git a/Project/sd_sdk/src/game_sdgame/res/layout/activity_main_2.xml b/Project/sd_sdk/src/game_sdgame/res/layout/activity_main_2.xml
new file mode 100644
index 0000000..5ccf0c0
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/layout/activity_main_2.xml
@@ -0,0 +1,32 @@
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:paddingBottom="@dimen/activity_vertical_margin"
+    android:paddingLeft="@dimen/activity_horizontal_margin"
+    android:paddingRight="@dimen/activity_horizontal_margin"
+    android:paddingTop="@dimen/activity_vertical_margin"
+    >
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent" >
+
+        <Button
+            android:id="@+id/btn_toPay_oneyuan"
+            style="?android:attr/buttonStyleSmall"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_toLeftOf="@id/logout"
+            android:text="鍏呭��1鍏�" />
+
+        <Button
+            android:id="@+id/btn_toPay_twoyuan"
+            style="?android:attr/buttonStyleSmall"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_toLeftOf="@id/logout"
+            android:text="鍏呭��2鍏�" />
+    </LinearLayout>
+
+</RelativeLayout>
\ No newline at end of file
diff --git a/Project/sd_sdk/src/game_sdgame/res/layout/activity_protocol.xml b/Project/sd_sdk/src/game_sdgame/res/layout/activity_protocol.xml
new file mode 100644
index 0000000..d356c84
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/layout/activity_protocol.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:orientation="vertical"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    >
+    <RelativeLayout
+        android:layout_width="match_parent"
+        android:layout_height="44dp"
+        android:background="#0285f0"
+        >
+        <ImageView
+            android:layout_width="44dp"
+            android:layout_height="match_parent"
+            android:padding="10dp"
+            android:layout_centerVertical="true"
+            android:src="@drawable/nav_back"
+            android:scaleType="centerInside"
+            android:onClick="backClick"
+            />
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="鍗忚"
+            android:textSize="20sp"
+            android:textColor="@color/sdp_white_color"
+            android:textStyle="bold"
+            android:layout_centerInParent="true"/>
+    </RelativeLayout>
+
+    <WebView android:id="@+id/protocol_webview"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        />
+</LinearLayout>
\ No newline at end of file
diff --git a/Project/sd_sdk/src/game_sdgame/res/layout/activity_sign_pay.xml b/Project/sd_sdk/src/game_sdgame/res/layout/activity_sign_pay.xml
new file mode 100644
index 0000000..923634c
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/layout/activity_sign_pay.xml
@@ -0,0 +1,264 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:id="@+id/activity_sign_pay"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical"
+    android:background="@color/sdp_activity_background"
+    tools:context="com.shengpay.sdpmerchantpaysdk.ui.SDPSignPayActivity">
+
+    <RelativeLayout
+        android:layout_width="match_parent"
+        android:layout_height="44dp">
+        <ImageView
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:background="#0285f0"/>
+
+        <ImageButton
+            android:id="@+id/backButton"
+            android:layout_gravity="left|center"
+            android:gravity="left"
+            android:layout_width="40dp"
+            android:layout_height="40dp"
+            android:layout_centerVertical="true"
+            android:background="@android:color/transparent"
+            android:src="@drawable/nav_back" />
+
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="绛剧害浠樻"
+            android:textSize="20sp"
+            android:textColor="@color/sdp_white_color"
+            android:textStyle="bold"
+            android:layout_centerInParent="true"/>
+    </RelativeLayout>
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:orientation="vertical"
+        android:paddingBottom="@dimen/activity_vertical_margin"
+        android:paddingLeft="@dimen/activity_horizontal_margin"
+        android:paddingRight="@dimen/activity_horizontal_margin"
+        android:paddingTop="@dimen/activity_vertical_margin">
+
+        <TextView
+            android:id="@+id/prodNameTextView"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:paddingTop="10dp"
+            android:textSize="16sp"
+            android:text="鍟嗗搧"
+            android:gravity="center_vertical|center_horizontal"
+            android:textColor="@color/sdp_text_gray_color" />
+
+        <TextView
+            android:id="@+id/prodAmountTextView"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:gravity="center_vertical|center_horizontal"
+            android:paddingTop="10dp"
+            android:textSize="22sp"
+            android:textStyle="bold"
+            android:text="浠锋牸"
+            android:textColor="@color/sdp_text_black"
+            />
+
+        <ImageView
+            android:layout_width="match_parent"
+            android:layout_height="1dp"
+            android:layout_marginLeft="10dp"
+            android:layout_marginRight="10dp"
+            android:layout_marginTop="15dp"
+            android:src="#B0B0B0" />
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:gravity="left|center_vertical"
+            android:orientation="horizontal"
+            android:padding="5dp">
+
+            <ImageView
+                android:id="@+id/bankIconImageView"
+                android:layout_width="@dimen/sdp_bank_icon_width"
+                android:layout_height="@dimen/sdp_bank_icon_height"
+                android:src="@drawable/bank_boc" />
+
+            <TextView
+                android:id="@+id/bankInfoTextView"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:textColor="@color/sdp_text_gray_color"
+                android:text="涓浗閾惰鍊熻鍗�(7677)" />
+
+        </LinearLayout>
+
+        <EditText
+            android:id="@+id/cardHolderNameEditText"
+            android:layout_width="match_parent"
+            android:layout_height="@dimen/sdp_sign_edittext_height"
+            android:layout_marginLeft="10dp"
+            android:layout_marginRight="10dp"
+            android:layout_marginTop="5dp"
+            android:background="@drawable/sdp_edittext_bg"
+            android:hint="杈撳叆鎸佸崱浜哄鍚�"
+            android:singleLine="true"
+            android:maxLines="1"
+            android:textColor="@color/sdp_text_gray_color"
+            android:textColorHint="@color/sdp_text_gray_color"
+            android:paddingLeft="10dp"
+            android:textSize="14sp" />
+
+        <EditText
+            android:id="@+id/identityEditText"
+            android:layout_width="match_parent"
+            android:layout_height="@dimen/sdp_sign_edittext_height"
+            android:layout_marginLeft="10dp"
+            android:layout_marginRight="10dp"
+            android:layout_marginTop="10dp"
+            android:background="@drawable/sdp_edittext_bg"
+            android:hint="杈撳叆鎸佸崱浜鸿韩浠借瘉鍙�"
+            android:textColor="@color/sdp_text_gray_color"
+            android:textColorHint="@color/sdp_text_gray_color"
+            android:digits="0123456789Xx"
+            android:maxLines="1"
+            android:paddingLeft="10dp"
+            android:textSize="14sp" />
+
+        <EditText
+            android:id="@+id/mobileNumEditText"
+            android:layout_width="match_parent"
+            android:layout_height="@dimen/sdp_sign_edittext_height"
+            android:layout_marginLeft="10dp"
+            android:layout_marginRight="10dp"
+            android:layout_marginTop="10dp"
+            android:background="@drawable/sdp_edittext_bg"
+            android:hint="杈撳叆鎸佸崱浜洪鐣欐墜鏈哄彿"
+            android:inputType="number"
+            android:textColor="@color/sdp_text_gray_color"
+            android:textColorHint="@color/sdp_text_gray_color"
+            android:maxLength="11"
+            android:maxLines="1"
+            android:paddingLeft="10dp"
+            android:textSize="14sp" />
+
+        <LinearLayout android:id="@+id/cvv2EditLayout"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginLeft="10dp"
+            android:layout_marginRight="10dp"
+            android:layout_marginTop="10dp"
+            >
+
+            <EditText
+                android:id="@+id/cvv2EditText"
+                android:layout_width="0dp"
+                android:layout_height="@dimen/sdp_sign_edittext_height"
+                android:layout_weight="1"
+                android:background="@drawable/sdp_edittext_bg"
+                android:hint="CVV2"
+                android:inputType="number"
+                android:maxLength="3"
+                android:textColor="@color/sdp_text_gray_color"
+                android:textColorHint="@color/sdp_text_gray_color"
+                android:maxLines="1"
+                android:paddingLeft="10dp"
+                android:textSize="14sp" />
+
+            <EditText
+                android:id="@+id/validDateEditText"
+                android:layout_width="0dp"
+                android:layout_height="@dimen/sdp_sign_edittext_height"
+                android:layout_marginLeft="5dp"
+                android:layout_weight="1"
+                android:background="@drawable/sdp_edittext_bg"
+                android:hint="鏈夋晥鏈�(鏍煎紡1208)"
+                android:textColor="@color/sdp_text_gray_color"
+                android:textColorHint="@color/sdp_text_gray_color"
+                android:inputType="number"
+                android:maxLength="4"
+                android:maxLines="1"
+                android:paddingLeft="10dp"
+                android:textSize="14sp" />
+        </LinearLayout>
+
+        <LinearLayout
+            android:id="@+id/credit_card_info"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginLeft="10dp"
+            android:layout_marginRight="10dp"
+            android:layout_marginTop="10dp"
+            android:orientation="horizontal">
+
+            <EditText
+                android:id="@+id/verifyCodeEditText"
+                android:layout_width="0dp"
+                android:layout_height="@dimen/sdp_sign_edittext_height"
+                android:layout_weight="5"
+                android:background="@drawable/sdp_edittext_bg"
+                android:hint="楠岃瘉鐮�"
+                android:textColor="@color/sdp_text_gray_color"
+                android:textColorHint="@color/sdp_text_gray_color"
+                android:inputType="number"
+                android:maxLength="6"
+                android:maxLines="1"
+                android:paddingLeft="10dp"
+                android:textSize="14sp"/>
+
+            <com.shengpay.sdpmerchantpaysdk.widget.MmsVerifyButton
+                android:id="@+id/sendValidCodeButton"
+                android:layout_width="0dp"
+                android:layout_height="42dp"
+                android:layout_weight="3"
+                android:background="@drawable/sdp_button_sel"
+                android:elevation="15dp"
+                android:paddingLeft="10dp"
+                android:paddingRight="10dp"
+                android:textSize="14sp"
+                android:text="鍙戦�侀獙璇佺爜"
+                android:textColor="#FFFFFF" />
+        </LinearLayout>
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginLeft="10dp"
+            android:layout_marginRight="10dp"
+            android:layout_marginTop="20dp"
+            android:orientation="horizontal">
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="鍚屾剰"
+                android:textColor="#b6b6b6"
+                />
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="銆婃湇鍔″崗璁��"
+                android:layout_marginLeft="4dp"
+                android:textColor="@color/protocol_color"
+                android:onClick="protocolClick"
+                />
+        </LinearLayout>
+
+        <Button
+            android:id="@+id/confirmPayButton"
+            android:layout_width="match_parent"
+            android:layout_height="45dp"
+            android:layout_marginLeft="10dp"
+            android:layout_marginRight="10dp"
+            android:layout_marginTop="10dp"
+            android:background="@drawable/sdp_button_sel"
+            android:elevation="15dp"
+            android:text="纭浠樻"
+            android:textColor="#FFFFFF" />
+    </LinearLayout>
+</LinearLayout>
diff --git a/Project/sd_sdk/src/game_sdgame/res/layout/activity_two.xml b/Project/sd_sdk/src/game_sdgame/res/layout/activity_two.xml
new file mode 100644
index 0000000..adebb57
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/layout/activity_two.xml
@@ -0,0 +1,31 @@
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:paddingBottom="@dimen/activity_vertical_margin"
+    android:paddingLeft="@dimen/activity_horizontal_margin"
+    android:paddingRight="@dimen/activity_horizontal_margin"
+    android:paddingTop="@dimen/activity_vertical_margin"
+    tools:context="com.yyjia.sdk.demo.test.MainActivity">
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent">
+
+        <Button
+            android:id="@+id/btn_logout"
+            style="?android:attr/buttonStyleSmall"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="LOGOUT" />
+
+        <Button
+            android:id="@+id/btn_login"
+            style="?android:attr/buttonStyleSmall"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="LOGIN" />
+
+    </LinearLayout>
+
+</RelativeLayout>
\ No newline at end of file
diff --git a/Project/sd_sdk/src/game_sdgame/res/layout/game_sdk_bind_tel.xml b/Project/sd_sdk/src/game_sdgame/res/layout/game_sdk_bind_tel.xml
new file mode 100644
index 0000000..e65dfe2
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/layout/game_sdk_bind_tel.xml
@@ -0,0 +1,121 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:background="@drawable/game_sdk_shape_bg_round"
+    android:orientation="vertical">
+
+    <ImageView
+        android:id="@+id/iv_back"
+        style="@style/game_sdk_dialog_title_back"
+        android:visibility="visible" />
+
+    <ImageView
+        android:id="@+id/iv_dismiss"
+        style="@style/game_sdk_dialog_title_dismiss"
+        android:layout_alignParentEnd="true"
+        android:layout_alignParentRight="true"
+        android:layout_alignTop="@+id/iv_back"
+        android:visibility="visible" />
+
+    <TextView
+        android:id="@+id/tv_title"
+        style="@style/game_sdk_dialog_tile_text" />
+
+    <TextView
+        android:id="@+id/tv_account"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_below="@+id/tv_title"
+        android:layout_marginLeft="@dimen/game_sdk_dialog_weight_padding"
+        android:layout_marginRight="@dimen/game_sdk_dialog_weight_padding"
+        android:textColor="@color/game_sdk_common_text_color"
+        android:textSize="14sp" />
+
+    <LinearLayout
+        android:id="@+id/ll_area"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_below="@+id/tv_account"
+        android:layout_marginLeft="@dimen/game_sdk_dialog_weight_padding"
+        android:layout_marginTop="@dimen/game_sdk_dialog_weight_padding"
+        android:background="@drawable/game_sdk_shape_bg_input"
+        android:gravity="center_vertical"
+        android:orientation="horizontal">
+
+        <TextView
+            android:id="@+id/tv_area"
+            android:layout_width="68dp"
+            android:layout_height="@dimen/game_sdk_dialog_weight_height"
+            android:gravity="center_vertical"
+            android:paddingLeft="10dp"
+            android:textColor="@color/game_sdk_input_text_color"
+            android:textSize="18sp" />
+
+        <ImageView
+            android:id="@+id/iv_area_list"
+            android:layout_width="@dimen/game_sdk_dialog_weight_height"
+            android:layout_height="@dimen/game_sdk_dialog_weight_height"
+            android:background="@drawable/game_sdk_accountlist" />
+    </LinearLayout>
+
+    <EditText
+        android:id="@+id/et_tel"
+        style="@style/game_sdk_dialog_edit_text"
+        android:layout_alignTop="@+id/ll_area"
+        android:layout_marginLeft="7dp"
+        android:layout_marginRight="@dimen/game_sdk_dialog_weight_padding"
+        android:layout_toRightOf="@+id/ll_area"
+        android:background="@drawable/game_sdk_shape_bg_input"
+        android:paddingLeft="5dp" />
+
+    <EditText
+        android:id="@+id/et_identifying_code"
+        style="@style/game_sdk_dialog_edit_text"
+        android:layout_alignTop="@+id/btn_send_code"
+        android:layout_below="@+id/ll_area"
+        android:layout_marginLeft="@dimen/game_sdk_dialog_weight_padding"
+        android:layout_marginRight="0dp"
+        android:layout_toLeftOf="@+id/btn_send_code"
+        android:background="@drawable/game_sdk_shape_bg_input"
+        android:paddingLeft="5dp" />
+
+    <Button
+        android:id="@+id/btn_send_code"
+        style="@style/game_sdk_dialog_btn"
+        android:layout_width="110dp"
+        android:layout_alignParentRight="true"
+        android:layout_below="@+id/ll_area"
+        android:layout_marginLeft="5dp"
+        android:layout_marginTop="@dimen/game_sdk_dialog_weight_top" />
+
+    <Button
+        android:id="@+id/btn_next"
+        style="@style/game_sdk_dialog_btn"
+        android:layout_below="@+id/btn_send_code"
+        android:layout_marginTop="@dimen/game_sdk_dialog_weight_top" />
+
+    <TextView
+        android:id="@+id/tv_notice"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_alignLeft="@+id/btn_next"
+        android:layout_alignStart="@+id/btn_next"
+        android:layout_below="@+id/btn_next"
+        android:layout_marginRight="@dimen/game_sdk_dialog_weight_padding"
+        android:layout_marginTop="@dimen/game_sdk_dialog_weight_padding"
+        android:gravity="center_horizontal"
+        android:textColor="@color/game_sdk_common_text_color"
+        android:textSize="14sp" />
+
+    <ListView
+        android:id="@+id/lv_area_list"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:layout_alignLeft="@+id/ll_area"
+        android:layout_alignRight="@+id/ll_area"
+        android:layout_below="@+id/ll_area"
+        android:divider="@null"
+        android:scrollbars="none"
+        android:visibility="gone" />
+</RelativeLayout>
\ No newline at end of file
diff --git a/Project/sd_sdk/src/game_sdgame/res/layout/game_sdk_dialog_bind_tel.xml b/Project/sd_sdk/src/game_sdgame/res/layout/game_sdk_dialog_bind_tel.xml
new file mode 100644
index 0000000..5b1d884
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/layout/game_sdk_dialog_bind_tel.xml
@@ -0,0 +1,126 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:background="@drawable/game_sdk_shape_bg_round"
+    android:orientation="vertical">
+
+    <ImageView
+        android:id="@+id/iv_back"
+        style="@style/game_sdk_dialog_title_back"
+        android:visibility="visible" />
+
+    <ImageView
+        android:id="@+id/iv_dismiss"
+        style="@style/game_sdk_dialog_title_dismiss"
+        android:layout_alignParentEnd="true"
+        android:layout_alignParentRight="true"
+        android:layout_alignTop="@+id/iv_back"
+        android:visibility="visible" />
+
+    <TextView
+        android:id="@+id/tv_title"
+        style="@style/game_sdk_dialog_tile_text"
+        android:text="@string/game_sdk_win_account_secset" />
+
+    <TextView
+        android:id="@+id/tv_account"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_below="@+id/tv_title"
+        android:layout_marginLeft="@dimen/game_sdk_dialog_weight_padding"
+        android:layout_marginRight="@dimen/game_sdk_dialog_weight_padding"
+        android:textColor="@color/game_sdk_common_text_color"
+        android:textSize="14sp" />
+
+    <LinearLayout
+        android:id="@+id/ll_area"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_below="@+id/tv_account"
+        android:layout_marginLeft="@dimen/game_sdk_dialog_weight_padding"
+        android:layout_marginTop="@dimen/game_sdk_dialog_weight_padding"
+        android:background="@drawable/game_sdk_shape_bg_input"
+        android:gravity="center_vertical"
+        android:orientation="horizontal">
+
+        <TextView
+            android:id="@+id/tv_area"
+            android:layout_width="68dp"
+            android:layout_height="@dimen/game_sdk_dialog_weight_height"
+            android:gravity="center_vertical"
+            android:paddingLeft="10dp"
+            android:textColor="@color/game_sdk_input_text_color"
+            android:textSize="18sp" />
+
+        <ImageView
+            android:id="@+id/iv_area_list"
+            style="@style/game_sdk_edit_text_icon_spinner"
+            android:background="@drawable/game_sdk_accountlist" />
+    </LinearLayout>
+
+    <EditText
+        android:id="@+id/et_tel"
+        style="@style/game_sdk_dialog_edit_text"
+        android:layout_alignTop="@+id/ll_area"
+        android:layout_marginLeft="7dp"
+        android:layout_marginRight="@dimen/game_sdk_dialog_weight_padding"
+        android:layout_toRightOf="@+id/ll_area"
+        android:background="@drawable/game_sdk_shape_bg_input"
+        android:hint="@string/game_sdk_win_account_inpphone"
+        android:paddingLeft="5dp" />
+
+    <EditText
+        android:id="@+id/et_identifying_code"
+        style="@style/game_sdk_dialog_edit_text"
+        android:layout_alignTop="@+id/btn_send_code"
+        android:layout_below="@+id/ll_area"
+        android:layout_marginLeft="@dimen/game_sdk_dialog_weight_padding"
+        android:layout_marginRight="0dp"
+        android:layout_toLeftOf="@+id/btn_send_code"
+        android:background="@drawable/game_sdk_shape_bg_input"
+        android:hint="@string/game_sdk_win_account_inpcode"
+        android:paddingLeft="5dp" />
+
+    <Button
+        android:id="@+id/btn_send_code"
+        style="@style/game_sdk_dialog_btn"
+        android:layout_width="110dp"
+        android:layout_alignParentRight="true"
+        android:layout_below="@+id/ll_area"
+        android:layout_marginLeft="5dp"
+        android:layout_marginTop="@dimen/game_sdk_dialog_weight_top"
+        android:text="@string/game_sdk_win_account_getcode" />
+
+    <Button
+        android:id="@+id/btn_next"
+        style="@style/game_sdk_dialog_btn"
+        android:layout_below="@+id/btn_send_code"
+        android:layout_marginTop="@dimen/game_sdk_dialog_weight_top"
+        android:text="@string/game_sdk_win_account_checkover" />
+
+    <TextView
+        android:id="@+id/tv_notice"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_alignLeft="@+id/btn_next"
+        android:layout_alignStart="@+id/btn_next"
+        android:layout_below="@+id/btn_next"
+        android:layout_marginRight="@dimen/game_sdk_dialog_weight_padding"
+        android:layout_marginTop="@dimen/game_sdk_dialog_weight_padding"
+        android:gravity="center_horizontal"
+        android:text="@string/game_sdk_win_account_mailinfo"
+        android:textColor="@color/game_sdk_common_text_color"
+        android:textSize="14sp" />
+
+    <ListView
+        android:id="@+id/lv_area_list"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:layout_alignLeft="@+id/ll_area"
+        android:layout_alignRight="@+id/ll_area"
+        android:layout_below="@+id/ll_area"
+        android:divider="@null"
+        android:scrollbars="none"
+        android:visibility="gone" />
+</RelativeLayout>
\ No newline at end of file
diff --git a/Project/sd_sdk/src/game_sdgame/res/layout/game_sdk_dialog_common_register.xml b/Project/sd_sdk/src/game_sdgame/res/layout/game_sdk_dialog_common_register.xml
new file mode 100644
index 0000000..64d70aa
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/layout/game_sdk_dialog_common_register.xml
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:background="@drawable/game_sdk_shape_bg_round">
+
+    <ImageView
+        android:id="@+id/iv_back"
+        style="@style/game_sdk_dialog_title_back"
+        android:visibility="visible" />
+
+    <ImageView
+        android:id="@+id/iv_dismiss"
+        style="@style/game_sdk_dialog_title_dismiss"
+        android:visibility="gone" />
+
+    <TextView
+        android:id="@+id/tv_title"
+        style="@style/game_sdk_dialog_tile_text"
+        android:text="@string/game_sdk_win_login_fastregister" />
+
+    <LinearLayout
+        android:id="@+id/ll_account"
+        style="@style/game_sdk_layout_input"
+        android:layout_below="@+id/tv_title">
+
+        <ImageView
+            style="@style/game_sdk_edit_text_icon"
+            android:src="@drawable/game_sdk_accountmanage" />
+
+        <com.yyjia.sdk.widget.ClearEditText
+            android:id="@+id/et_account"
+            style="@style/game_sdk_dialog_edit_text"
+            android:hint="@string/game_sdk_win_account_inpuser" />
+    </LinearLayout>
+
+    <LinearLayout
+        android:id="@+id/ll_password"
+        style="@style/game_sdk_layout_input"
+        android:layout_below="@+id/ll_account"
+        android:layout_marginTop="@dimen/game_sdk_dialog_weight_padding">
+
+        <ImageView
+            style="@style/game_sdk_edit_text_icon"
+            android:src="@drawable/game_sdk_password" />
+
+        <com.yyjia.sdk.widget.ClearEditText
+            android:id="@+id/et_password"
+            style="@style/game_sdk_dialog_edit_text"
+            android:hint="@string/game_sdk_win_account_inppass"
+            android:inputType="textPassword" />
+    </LinearLayout>
+
+    <LinearLayout
+        android:id="@+id/ll_repeat_password"
+        style="@style/game_sdk_layout_input"
+        android:layout_below="@+id/ll_password"
+        android:layout_marginTop="@dimen/game_sdk_dialog_weight_padding">
+
+        <ImageView
+            style="@style/game_sdk_edit_text_icon"
+            android:src="@drawable/game_sdk_password" />
+
+        <com.yyjia.sdk.widget.ClearEditText
+            android:id="@+id/et_repeat_password"
+            style="@style/game_sdk_dialog_edit_text"
+            android:hint="@string/game_sdk_win_account_inpsurepass"
+            android:inputType="textPassword" />
+    </LinearLayout>
+
+    <Button
+        android:id="@+id/btn_register"
+        style="@style/game_sdk_dialog_btn"
+        android:layout_below="@+id/ll_repeat_password"
+        android:layout_marginTop="@dimen/game_sdk_dialog_weight_top"
+        android:text="@string/game_sdk_win_register_register" />
+</RelativeLayout>
\ No newline at end of file
diff --git a/Project/sd_sdk/src/game_sdgame/res/layout/game_sdk_dialog_exit.xml b/Project/sd_sdk/src/game_sdgame/res/layout/game_sdk_dialog_exit.xml
new file mode 100644
index 0000000..8e6cdf4
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/layout/game_sdk_dialog_exit.xml
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:background="@android:color/transparent"
+    android:clickable="true">
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_alignParentBottom="true"
+        android:background="@android:color/white"
+        android:orientation="vertical">
+
+        <TextView
+            android:id="@+id/game_sdk_dialog_title"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_gravity="center"
+            android:gravity="center"
+            android:padding="5dp"
+            android:text="@string/game_sdk_win_dialog_exit_title"
+            android:textColor="@android:color/black"
+            android:textSize="20sp"
+            android:textStyle="bold" />
+
+        <TextView
+            android:id="@+id/game_sdk_dialog_message"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_gravity="center"
+            android:gravity="center"
+            android:padding="10dp"
+            android:text="@string/game_sdk_win_dialog_exit_message"
+            android:textColor="@android:color/black"
+            android:textSize="14sp" />
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:orientation="horizontal"
+            android:weightSum="2">
+
+            <TextView
+                android:id="@+id/game_sdk_dialog_negativeButton"
+                android:layout_width="0dp"
+                android:layout_height="wrap_content"
+                android:layout_margin="5dp"
+                android:layout_weight="1"
+                android:background="@android:color/holo_orange_light"
+                android:gravity="center"
+                android:padding="10dp"
+                android:text="@string/game_sdk_win_alert_cancel"
+                android:textColor="@android:color/white"
+                android:textSize="16sp"
+                android:textStyle="bold" />
+
+            <TextView
+                android:id="@+id/game_sdk_dialog_positiveButton"
+                android:layout_width="0dp"
+                android:layout_height="wrap_content"
+                android:layout_margin="5dp"
+                android:layout_weight="1"
+                android:background="@android:color/holo_blue_light"
+                android:gravity="center"
+                android:padding="10dp"
+                android:text="@string/game_sdk_win_alert_sure"
+                android:textColor="@android:color/white"
+                android:textSize="16sp"
+                android:textStyle="bold" />
+        </LinearLayout>
+    </LinearLayout>
+
+</RelativeLayout>
\ No newline at end of file
diff --git a/Project/sd_sdk/src/game_sdgame/res/layout/game_sdk_dialog_exit_game.xml b/Project/sd_sdk/src/game_sdgame/res/layout/game_sdk_dialog_exit_game.xml
new file mode 100644
index 0000000..848ff5a
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/layout/game_sdk_dialog_exit_game.xml
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:background="@android:color/transparent"
+    android:clickable="true" >
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_alignParentBottom="true"
+        android:background="@android:color/white"
+        android:orientation="vertical" >
+
+        <TextView
+            android:id="@+id/game_sdk_dialog_title"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_gravity="center"
+            android:gravity="center"
+            android:padding="5dp"
+            android:textSize="20sp" />
+
+        <TextView
+            android:id="@+id/game_sdk_dialog_message"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_gravity="center"
+            android:gravity="center"
+            android:padding="10dp"
+            android:textSize="16sp" />
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:orientation="horizontal"
+            android:weightSum="2" >
+
+            <TextView
+                android:id="@+id/game_sdk_dialog_negativeButton"
+                android:layout_width="0dp"
+                android:layout_height="wrap_content"
+                android:layout_margin="5dp"
+                android:layout_weight="1"
+                android:gravity="center"
+                android:padding="10dp"
+                android:textSize="16sp" />
+
+            <TextView
+                android:id="@+id/game_sdk_dialog_positiveButton"
+                android:layout_width="0dp"
+                android:layout_height="wrap_content"
+                android:layout_margin="5dp"
+                android:layout_weight="1"
+                android:gravity="center"
+                android:padding="10dp"
+                android:textSize="16sp" />
+        </LinearLayout>
+    </LinearLayout>
+
+</RelativeLayout>
\ No newline at end of file
diff --git a/Project/sd_sdk/src/game_sdgame/res/layout/game_sdk_dialog_forget_password.xml b/Project/sd_sdk/src/game_sdgame/res/layout/game_sdk_dialog_forget_password.xml
new file mode 100644
index 0000000..3354fd7
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/layout/game_sdk_dialog_forget_password.xml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:background="@drawable/game_sdk_shape_bg_round">
+
+    <ImageView
+        android:id="@+id/iv_back"
+        style="@style/game_sdk_dialog_title_back"
+        android:visibility="visible" />
+
+    <ImageView
+        android:id="@+id/iv_dismiss"
+        style="@style/game_sdk_dialog_title_dismiss"
+        android:visibility="visible" />
+
+    <TextView
+        android:id="@+id/tv_title"
+        style="@style/game_sdk_dialog_tile_text"
+        android:text="@string/game_sdk_win_pass_findpass" />
+
+    <LinearLayout
+        android:id="@+id/ll_bind_address"
+        style="@style/game_sdk_layout_input"
+        android:layout_below="@+id/tv_title"
+        android:orientation="horizontal">
+
+        <ImageView
+            android:layout_width="30dp"
+            android:layout_height="30dp"
+            android:scaleType="fitXY"
+            android:src="@drawable/game_sdk_accountmanage" />
+
+        <com.yyjia.sdk.widget.ClearEditText
+            android:id="@+id/et_bind_address"
+            style="@style/game_sdk_dialog_edit_text"
+            android:hint="@string/game_sdk_win_account_inpmail" />
+    </LinearLayout>
+
+    <Button
+        android:id="@+id/btn_next"
+        style="@style/game_sdk_dialog_btn"
+        android:layout_below="@+id/ll_bind_address"
+        android:layout_marginTop="@dimen/game_sdk_dialog_weight_top"
+        android:text="@string/game_sdk_win_account_getcode" />
+
+    <TextView
+        android:id="@+id/tv_customer_service"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_below="@+id/btn_next"
+        android:layout_marginLeft="@dimen/game_sdk_dialog_weight_padding"
+        android:layout_marginRight="@dimen/game_sdk_dialog_weight_padding"
+        android:layout_marginTop="30dp"
+        android:textColor="@color/game_sdk_common_text_color"
+        android:textSize="14sp" />
+</RelativeLayout>
\ No newline at end of file
diff --git a/Project/sd_sdk/src/game_sdgame/res/layout/game_sdk_dialog_identity_auth.xml b/Project/sd_sdk/src/game_sdgame/res/layout/game_sdk_dialog_identity_auth.xml
new file mode 100644
index 0000000..03d9c68
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/layout/game_sdk_dialog_identity_auth.xml
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:background="@drawable/game_sdk_shape_bg_round">
+
+    <ImageView
+        android:id="@+id/iv_back"
+        style="@style/game_sdk_dialog_title_back"
+        android:visibility="gone" />
+
+    <ImageView
+        android:id="@+id/iv_dismiss"
+        style="@style/game_sdk_dialog_title_dismiss"
+        android:visibility="visible" />
+
+    <TextView
+        android:id="@+id/tv_title"
+        style="@style/game_sdk_dialog_tile_text"
+        android:text="@string/game_sdk_win_account_shiming" />
+
+    <TextView
+        android:id="@+id/tv_notice"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_below="@+id/tv_title"
+        android:layout_marginLeft="@dimen/game_sdk_dialog_weight_padding"
+        android:layout_marginRight="@dimen/game_sdk_dialog_weight_padding"
+        android:text="@string/game_sdk_win_account_shiming_tips"
+        android:textColor="@color/game_sdk_common_text_color"
+        android:textSize="12sp" />
+
+    <com.yyjia.sdk.widget.ClearEditText
+        android:id="@+id/et_name"
+        style="@style/game_sdk_dialog_edit_text"
+        android:layout_below="@+id/tv_notice"
+        android:layout_marginLeft="@dimen/game_sdk_dialog_weight_padding"
+        android:layout_marginRight="@dimen/game_sdk_dialog_weight_padding"
+        android:layout_marginTop="@dimen/game_sdk_dialog_weight_padding"
+        android:background="@drawable/game_sdk_shape_bg_input"
+        android:hint="@string/game_sdk_win_account_inpname" />
+
+    <com.yyjia.sdk.widget.ClearEditText
+        android:id="@+id/et_id_number"
+        style="@style/game_sdk_dialog_edit_text"
+        android:layout_below="@+id/et_name"
+        android:layout_marginLeft="@dimen/game_sdk_dialog_weight_padding"
+        android:layout_marginRight="@dimen/game_sdk_dialog_weight_padding"
+        android:layout_marginTop="@dimen/game_sdk_dialog_weight_padding"
+        android:background="@drawable/game_sdk_shape_bg_input"
+        android:hint="@string/game_sdk_win_account_inpsfz" />
+
+    <Button
+        android:id="@+id/btn_identity_auth"
+        style="@style/game_sdk_dialog_btn"
+        android:layout_below="@+id/et_id_number"
+        android:layout_marginTop="@dimen/game_sdk_dialog_weight_padding"
+        android:text="@string/game_sdk_win_account_shiming" />
+
+    <LinearLayout
+        android:id="@+id/ll_is_notice"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_alignParentRight="true"
+        android:layout_below="@+id/btn_identity_auth"
+        android:layout_marginRight="@dimen/game_sdk_dialog_weight_padding"
+        android:layout_marginTop="8dp"
+        android:gravity="center"
+        android:orientation="horizontal">
+
+        <ImageView
+            android:id="@+id/iv_is_notice"
+            android:layout_width="25dp"
+            android:layout_height="25dp" />
+
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_below="@+id/tv_safe_content"
+            android:layout_marginLeft="5dp"
+            android:text="@string/game_sdk_win_login_notip"
+            android:textColor="@color/game_sdk_common_text_color" />
+    </LinearLayout>
+</RelativeLayout>
diff --git a/Project/sd_sdk/src/game_sdgame/res/layout/game_sdk_dialog_login.xml b/Project/sd_sdk/src/game_sdgame/res/layout/game_sdk_dialog_login.xml
new file mode 100644
index 0000000..9758e55
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/layout/game_sdk_dialog_login.xml
@@ -0,0 +1,304 @@
+<?xml version="1.0" encoding="utf-8"?>
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:background="@drawable/game_sdk_shape_bg_round"
+    android:orientation="vertical">
+
+    <RelativeLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content">
+
+        <ImageView
+            android:id="@+id/iv_back"
+            style="@style/game_sdk_dialog_title_back"
+            android:visibility="gone" />
+
+        <ImageView
+            android:id="@+id/iv_dismiss"
+            style="@style/game_sdk_dialog_title_dismiss"
+            android:visibility="visible" />
+
+        <TextView
+            android:id="@+id/tv_title"
+            style="@style/game_sdk_dialog_tile_text"
+            android:text="@string/game_sdk_win_login_loginacc" />
+
+        <LinearLayout
+            android:id="@+id/ll_account"
+            style="@style/game_sdk_layout_input"
+            android:layout_below="@+id/tv_title">
+
+            <ImageView
+                style="@style/game_sdk_edit_text_icon"
+                android:src="@drawable/game_sdk_accountmanage" />
+
+            <EditText
+                android:id="@+id/et_account"
+                style="@style/game_sdk_dialog_edit_text"
+                android:layout_width="0dp"
+                android:layout_alignTop="@+id/iv_account_list"
+                android:layout_marginLeft="0dp"
+                android:layout_marginRight="0dp"
+                android:layout_toLeftOf="@+id/iv_account_list"
+                android:layout_weight="1"
+                android:hint="@string/game_sdk_win_login_account" />
+
+            <ImageView
+                android:id="@+id/iv_account_list"
+                style="@style/game_sdk_edit_text_icon_spinner"
+                android:src="@drawable/game_sdk_accountlist" />
+        </LinearLayout>
+
+        <LinearLayout
+            android:id="@+id/ll_password"
+            style="@style/game_sdk_layout_input"
+            android:layout_below="@+id/ll_account"
+            android:layout_marginTop="@dimen/game_sdk_dialog_weight_top">
+
+            <ImageView
+                style="@style/game_sdk_edit_text_icon"
+                android:src="@drawable/game_sdk_password" />
+
+            <EditText
+                android:id="@+id/et_password"
+                style="@style/game_sdk_dialog_edit_text"
+                android:layout_width="0dp"
+                android:layout_weight="1"
+                android:hint="@string/game_sdk_win_login_pass"
+                android:inputType="textPassword" />
+
+            <ImageView
+                android:id="@+id/iv_show_password"
+                style="@style/game_sdk_edit_text_icon_spinner"
+                android:src="@drawable/game_sdk_hide_password" />
+        </LinearLayout>
+
+        <LinearLayout
+            android:id="@+id/ll_auto_login"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_below="@+id/ll_password"
+            android:layout_marginLeft="@dimen/game_sdk_dialog_weight_padding"
+            android:layout_marginTop="8dp"
+            android:gravity="center"
+            android:orientation="horizontal">
+
+            <ImageView
+                android:id="@+id/iv_auto_login"
+                android:layout_width="16dp"
+                android:layout_height="16dp"
+                android:scaleType="fitXY"
+                android:src="@drawable/game_sdk_check" />
+
+            <TextView
+                style="@style/game_sdk_dialog_comment_text"
+                android:layout_marginLeft="5dp"
+                android:text="@string/game_sdk_win_dialog_auto_login" />
+        </LinearLayout>
+
+        <TextView
+            android:id="@+id/tv_forget_password"
+            style="@style/game_sdk_dialog_comment_text"
+            android:layout_alignParentRight="true"
+            android:layout_alignTop="@+id/ll_auto_login"
+            android:layout_marginRight="@dimen/game_sdk_dialog_weight_padding"
+            android:text="@string/game_sdk_win_login_forgetpassandacc" />
+
+        <LinearLayout
+            android:id="@+id/ll_login"
+            android:layout_width="match_parent"
+            android:layout_height="@dimen/game_sdk_dialog_weight_height"
+            android:layout_alignLeft="@+id/ll_password"
+            android:layout_alignStart="@+id/ll_password"
+            android:layout_below="@+id/tv_forget_password"
+            android:layout_marginRight="@dimen/game_sdk_dialog_weight_padding"
+            android:layout_marginTop="8dp"
+            android:orientation="horizontal">
+
+            <Button
+                android:id="@+id/tv_register_now"
+                style="@style/game_sdk_dialog_btn"
+                android:layout_width="0dp"
+                android:layout_height="match_parent"
+                android:layout_below="@+id/ll_login"
+                android:layout_marginLeft="0dp"
+                android:layout_marginRight="15dp"
+                android:layout_weight="1"
+                android:background="@drawable/game_sdk_shape_bg_register"
+                android:text="@string/game_sdk_win_login_fastregister"
+                android:textColor="@android:color/white" />
+
+            <Button
+                android:id="@+id/btn_login"
+                style="@style/game_sdk_dialog_btn"
+                android:layout_width="0dp"
+                android:layout_height="match_parent"
+                android:layout_marginLeft="0dp"
+                android:layout_marginRight="0dp"
+                android:layout_weight="1"
+                android:text="@string/game_sdk_win_login_login" />
+        </LinearLayout>
+
+        <LinearLayout
+            android:id="@+id/ll_separate"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_below="@+id/ll_login"
+            android:layout_marginTop="15dp"
+            android:orientation="horizontal"
+            android:visibility="gone">
+
+            <View
+                android:layout_width="0dp"
+                android:layout_height="5dp"
+                android:layout_marginTop="5dp"
+                android:layout_weight="1"
+                android:background="@drawable/game_sdk_dash"
+                android:layerType="software" />
+
+            <TextView
+                style="@style/game_sdk_dialog_comment_text"
+                android:layout_marginLeft="2dp"
+                android:layout_marginRight="2dp"
+                android:text="@string/game_sdk_win_dialog_quick_login" />
+
+            <View
+                android:layout_width="0dp"
+                android:layout_height="5dp"
+                android:layout_marginTop="5dp"
+                android:layout_weight="1"
+                android:background="@drawable/game_sdk_dash"
+                android:layerType="software" />
+        </LinearLayout>
+
+        <TextView
+            android:id="@+id/tv_one_register"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_alignTop="@+id/tv_forget_password"
+            android:layout_below="@+id/ll_login"
+            android:layout_marginRight="10dp"
+            android:textColor="@android:color/white" />
+
+        <LinearLayout
+            android:id="@+id/ll_third_party_login"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_below="@+id/ll_separate"
+            android:layout_marginTop="15dp"
+            android:gravity="center"
+            android:orientation="horizontal">
+
+            <LinearLayout
+                android:id="@+id/ll_wechat_login"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:gravity="center"
+                android:orientation="vertical"
+                android:paddingLeft="15dp"
+                android:paddingRight="15dp">
+
+                <ImageView
+                    android:id="@+id/iv_wechat_login"
+                    android:layout_width="28dp"
+                    android:layout_height="28dp"
+                    android:layout_toRightOf="@+id/iv_sina_login"
+                    android:scaleType="fitXY"
+                    android:src="@drawable/game_sdk_weixin"
+                    android:tint="#1AAB6E" />
+
+                <TextView
+                    style="@style/game_sdk_dialog_comment_text"
+                    android:layout_marginTop="2dp"
+                    android:text="@string/game_sdk_win_dialog_wechat"
+                    android:textSize="14sp" />
+            </LinearLayout>
+
+            <LinearLayout
+                android:id="@+id/ll_sina_login"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:gravity="center"
+                android:orientation="vertical"
+                android:paddingLeft="15dp"
+                android:paddingRight="15dp">
+
+                <ImageView
+                    android:id="@+id/iv_sina_login"
+                    android:layout_width="28dp"
+                    android:layout_height="28dp"
+                    android:layout_toRightOf="@+id/iv_qq_login"
+                    android:scaleType="fitXY"
+                    android:src="@drawable/game_sdk_sina"
+                    android:tint="#EA5D5C" />
+
+                <TextView
+                    style="@style/game_sdk_dialog_comment_text"
+                    android:layout_marginTop="2dp"
+                    android:text="@string/game_sdk_win_dialog_sina"
+                    android:textSize="14sp" />
+            </LinearLayout>
+
+            <LinearLayout
+                android:id="@+id/ll_tourist_login"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:gravity="center"
+                android:orientation="vertical"
+                android:paddingLeft="15dp"
+                android:paddingRight="15dp">
+
+                <ImageView
+                    android:id="@+id/iv_tourist_login"
+                    android:layout_width="28dp"
+                    android:layout_height="28dp"
+                    android:layout_toRightOf="@+id/iv_qq_login"
+                    android:scaleType="fitXY"
+                    android:src="@drawable/game_sdk_yk" />
+
+                <TextView
+                    style="@style/game_sdk_dialog_comment_text"
+                    android:layout_marginTop="2dp"
+                    android:text="@string/game_sdk_win_dialog_tourist"
+                    android:textSize="14sp" />
+            </LinearLayout>
+
+            <LinearLayout
+                android:id="@+id/ll_qq_login"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:gravity="center"
+                android:orientation="vertical"
+                android:paddingLeft="15dp"
+                android:paddingRight="15dp">
+
+                <ImageView
+                    android:id="@+id/iv_qq_login"
+                    android:layout_width="28dp"
+                    android:layout_height="28dp"
+                    android:scaleType="fitXY"
+                    android:src="@drawable/game_sdk_qq"
+                    android:tint="#2299F3" />
+
+                <TextView
+                    style="@style/game_sdk_dialog_comment_text"
+                    android:layout_marginTop="2dp"
+                    android:text="@string/game_sdk_win_dialog_qq"
+                    android:textSize="14sp" />
+            </LinearLayout>
+        </LinearLayout>
+
+        <ListView
+            android:id="@+id/lv_account_list"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:layout_alignRight="@+id/ll_account"
+            android:layout_below="@+id/ll_account"
+            android:layout_marginLeft="@dimen/game_sdk_dialog_weight_padding"
+            android:divider="@color/game_sdk_common_text_color"
+            android:scrollbars="none"
+            android:visibility="gone" />
+    </RelativeLayout>
+
+</FrameLayout>
\ No newline at end of file
diff --git a/Project/sd_sdk/src/game_sdgame/res/layout/game_sdk_dialog_login_tip.xml b/Project/sd_sdk/src/game_sdgame/res/layout/game_sdk_dialog_login_tip.xml
new file mode 100644
index 0000000..098d8e3
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/layout/game_sdk_dialog_login_tip.xml
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:background="@drawable/game_sdk_shape_bg_round">
+
+    <ImageView
+        android:id="@+id/iv_back"
+        style="@style/game_sdk_dialog_title_back"
+        android:visibility="gone" />
+
+    <ImageView
+        android:id="@+id/iv_dismiss"
+        style="@style/game_sdk_dialog_title_dismiss"
+        android:visibility="visible" />
+
+    <TextView
+        android:id="@+id/tv_title"
+        style="@style/game_sdk_dialog_tile_text"
+        android:text="@string/game_sdk_win_login_tiptitle" />
+
+    <TextView
+        android:id="@+id/tv_safe_content"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_below="@+id/tv_title"
+        android:layout_marginLeft="@dimen/game_sdk_dialog_weight_padding"
+        android:layout_marginRight="@dimen/game_sdk_dialog_weight_padding"
+        android:text="@string/game_sdk_win_login_tips"
+        android:textColor="@color/game_sdk_common_text_color" />
+
+    <ImageView
+        android:id="@+id/iv_warn"
+        android:layout_width="106.4dp"
+        android:layout_height="84dp"
+        android:layout_below="@+id/tv_safe_content"
+        android:layout_centerHorizontal="true"
+        android:layout_marginTop="@dimen/game_sdk_dialog_weight_top"
+        android:src="@drawable/game_sdk_warn" />
+
+    <Button
+        android:id="@+id/btn_bind_tel"
+        style="@style/game_sdk_dialog_btn"
+        android:layout_below="@+id/iv_warn"
+        android:layout_marginTop="@dimen/game_sdk_dialog_weight_top"
+        android:text="@string/game_sdk_win_account_gobind" />
+
+    <LinearLayout
+        android:id="@+id/ll_is_notice"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_alignParentRight="true"
+        android:layout_below="@+id/btn_bind_tel"
+        android:layout_marginRight="@dimen/game_sdk_dialog_weight_padding"
+        android:layout_marginTop="8dp"
+        android:gravity="center"
+        android:orientation="horizontal">
+
+        <ImageView
+            android:id="@+id/iv_is_notice"
+            android:layout_width="25dp"
+            android:layout_height="25dp" />
+
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_below="@+id/tv_safe_content"
+            android:layout_marginLeft="5dp"
+            android:text="@string/game_sdk_win_login_notip"
+            android:textColor="@color/game_sdk_common_text_color" />
+    </LinearLayout>
+</RelativeLayout>
diff --git a/Project/sd_sdk/src/game_sdgame/res/layout/game_sdk_dialog_notice.xml b/Project/sd_sdk/src/game_sdgame/res/layout/game_sdk_dialog_notice.xml
new file mode 100644
index 0000000..584a6ff
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/layout/game_sdk_dialog_notice.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:background="@android:color/transparent">
+
+    <ImageView
+        android:id="@+id/iv_back"
+        style="@style/game_sdk_dialog_title_back"
+        android:visibility="gone" />
+
+    <ImageView
+        android:id="@+id/iv_dismiss"
+        style="@style/game_sdk_dialog_title_dismiss"
+        android:visibility="gone" />
+
+    <TextView
+        android:id="@+id/tv_title"
+        style="@style/game_sdk_dialog_tile_text"
+        android:visibility="gone" />
+
+    <WebView
+        android:id="@+id/web_view"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:layout_centerInParent="true"
+        android:scrollbars="none" />
+</RelativeLayout>
\ No newline at end of file
diff --git a/Project/sd_sdk/src/game_sdgame/res/layout/game_sdk_dialog_one_register.xml b/Project/sd_sdk/src/game_sdgame/res/layout/game_sdk_dialog_one_register.xml
new file mode 100644
index 0000000..701c9b7
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/layout/game_sdk_dialog_one_register.xml
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:background="@drawable/game_sdk_shape_bg_round"
+    android:orientation="vertical">
+
+    <ImageView
+        android:id="@+id/iv_back"
+        style="@style/game_sdk_dialog_title_back"
+        android:visibility="visible" />
+
+    <ImageView
+        android:id="@+id/iv_dismiss"
+        style="@style/game_sdk_dialog_title_dismiss"
+        android:visibility="gone" />
+
+    <TextView
+        android:id="@+id/tv_title"
+        style="@style/game_sdk_dialog_tile_text"
+        android:text="@string/game_sdk_win_login_oneregister" />
+
+    <TextView
+        android:id="@+id/tv_notice"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_below="@+id/tv_title"
+        android:layout_marginLeft="@dimen/game_sdk_dialog_weight_padding"
+        android:layout_marginRight="@dimen/game_sdk_dialog_weight_padding"
+        android:textColor="@color/game_sdk_common_text_color"
+        android:textSize="12sp" />
+
+    <LinearLayout
+        android:id="@+id/ll_user_name"
+        style="@style/game_sdk_layout_input"
+        android:layout_below="@+id/tv_notice"
+        android:layout_marginTop="8dp">
+
+        <ImageView
+            style="@style/game_sdk_edit_text_icon"
+            android:src="@drawable/game_sdk_accountmanage" />
+
+        <com.yyjia.sdk.widget.ClearEditText
+            android:id="@+id/et_user_name"
+            style="@style/game_sdk_dialog_edit_text"
+            android:hint="@string/game_sdk_win_account_inpuser" />
+    </LinearLayout>
+
+    <LinearLayout
+        android:id="@+id/ll_password"
+        style="@style/game_sdk_layout_input"
+        android:layout_below="@+id/ll_user_name"
+        android:layout_marginTop="@dimen/game_sdk_dialog_weight_top">
+
+        <ImageView
+            style="@style/game_sdk_edit_text_icon"
+            android:src="@drawable/game_sdk_password" />
+
+        <com.yyjia.sdk.widget.ClearEditText
+            android:id="@+id/et_password"
+            style="@style/game_sdk_dialog_edit_text"
+            android:hint="@string/game_sdk_win_account_inppass"
+            android:inputType="textPassword" />
+    </LinearLayout>
+
+    <Button
+        android:id="@+id/btn_register"
+        style="@style/game_sdk_dialog_btn"
+        android:layout_below="@+id/ll_password"
+        android:layout_marginTop="30dp"
+        android:text="@string/game_sdk_win_register_register" />
+</RelativeLayout>
\ No newline at end of file
diff --git a/Project/sd_sdk/src/game_sdgame/res/layout/game_sdk_dialog_reset_password.xml b/Project/sd_sdk/src/game_sdgame/res/layout/game_sdk_dialog_reset_password.xml
new file mode 100644
index 0000000..594040c
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/layout/game_sdk_dialog_reset_password.xml
@@ -0,0 +1,99 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:background="@drawable/game_sdk_shape_bg_round">
+
+    <ImageView
+        android:id="@+id/iv_back"
+        style="@style/game_sdk_dialog_title_back"
+        android:visibility="visible" />
+
+    <ImageView
+        android:id="@+id/iv_dismiss"
+        style="@style/game_sdk_dialog_title_dismiss"
+        android:visibility="gone" />
+
+    <TextView
+        android:id="@+id/tv_title"
+        style="@style/game_sdk_dialog_tile_text"
+        android:text="@string/game_sdk_win_pass_reset" />
+
+    <TextView
+        android:id="@+id/tv_account"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_below="@+id/tv_title"
+        android:layout_marginLeft="@dimen/game_sdk_dialog_weight_padding"
+        android:layout_marginRight="@dimen/game_sdk_dialog_weight_padding"
+        android:textColor="@color/game_sdk_common_text_color"
+        android:textSize="14sp" />
+
+    <LinearLayout
+        android:id="@+id/ll_identifying_code"
+        style="@style/game_sdk_layout_input"
+        android:layout_below="@+id/tv_account"
+        android:layout_marginTop="12dp"
+        android:background="@drawable/game_sdk_shape_bg_input">
+
+        <ImageView
+            style="@style/game_sdk_edit_text_icon"
+            android:src="@drawable/game_sdk_identifying_code" />
+
+        <com.yyjia.sdk.widget.ClearEditText
+            android:id="@+id/et_identifying_code"
+            style="@style/game_sdk_dialog_edit_text"
+            android:hint="@string/game_sdk_win_account_inpcode" />
+    </LinearLayout>
+
+    <LinearLayout
+        android:id="@+id/ll_password"
+        style="@style/game_sdk_layout_input"
+        android:layout_below="@+id/ll_identifying_code"
+        android:layout_marginTop="12dp"
+        android:background="@drawable/game_sdk_shape_bg_input">
+
+        <ImageView
+            style="@style/game_sdk_edit_text_icon"
+            android:src="@drawable/game_sdk_password" />
+
+        <com.yyjia.sdk.widget.ClearEditText
+            android:id="@+id/et_password"
+            style="@style/game_sdk_dialog_edit_text"
+            android:hint="@string/game_sdk_win_pass_inpnewpass"
+            android:inputType="textPassword" />
+    </LinearLayout>
+
+    <LinearLayout
+        android:id="@+id/ll_repeat_password"
+        style="@style/game_sdk_layout_input"
+        android:layout_below="@+id/ll_password"
+        android:layout_marginTop="12dp"
+        android:background="@drawable/game_sdk_shape_bg_input">
+
+        <ImageView
+            style="@style/game_sdk_edit_text_icon"
+            android:src="@drawable/game_sdk_password" />
+
+        <com.yyjia.sdk.widget.ClearEditText
+            android:id="@+id/et_repeat_password"
+            style="@style/game_sdk_dialog_edit_text"
+            android:hint="@string/game_sdk_win_pass_inpsurenewpass"
+            android:inputType="textPassword" />
+    </LinearLayout>
+
+    <Button
+        android:id="@+id/btn_save"
+        style="@style/game_sdk_dialog_btn"
+        android:layout_below="@+id/ll_repeat_password"
+        android:layout_marginTop="@dimen/game_sdk_dialog_weight_top"
+        android:text="@string/game_sdk_win_pass_save" />
+
+    <Button
+        android:id="@+id/btn_regain_code"
+        style="@style/game_sdk_dialog_btn"
+        android:layout_below="@+id/btn_save"
+        android:layout_marginTop="12dp"
+        android:text="@string/game_sdk_win_pass_resendcode" />
+
+</RelativeLayout>
\ No newline at end of file
diff --git a/Project/sd_sdk/src/game_sdgame/res/layout/game_sdk_dialog_tel_register.xml b/Project/sd_sdk/src/game_sdgame/res/layout/game_sdk_dialog_tel_register.xml
new file mode 100644
index 0000000..37e3703
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/layout/game_sdk_dialog_tel_register.xml
@@ -0,0 +1,111 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:background="@drawable/game_sdk_shape_bg_round"
+    android:orientation="vertical">
+
+    <ImageView
+        android:id="@+id/iv_back"
+        style="@style/game_sdk_dialog_title_back"
+        android:visibility="visible" />
+
+    <ImageView
+        android:id="@+id/iv_dismiss"
+        style="@style/game_sdk_dialog_title_dismiss"
+        android:visibility="gone" />
+
+    <TextView
+        android:id="@+id/tv_title"
+        style="@style/game_sdk_dialog_tile_text"
+        android:text="@string/game_sdk_win_login_fastregister" />
+
+    <LinearLayout
+        android:id="@+id/ll_area"
+        android:layout_width="wrap_content"
+        android:layout_height="@dimen/game_sdk_dialog_weight_height"
+        android:layout_below="@+id/tv_title"
+        android:layout_marginLeft="@dimen/game_sdk_dialog_weight_padding"
+        android:layout_marginRight="5dp"
+        android:background="@drawable/game_sdk_shape_bg_input"
+        android:orientation="horizontal">
+
+        <TextView
+            android:id="@+id/tv_area"
+            android:layout_width="68dp"
+            android:layout_height="match_parent"
+            android:gravity="center_vertical"
+            android:paddingLeft="15dp"
+            android:textColor="@color/game_sdk_input_text_color"
+            android:textSize="18sp" />
+
+        <ImageView
+            android:id="@+id/iv_area_list"
+            style="@style/game_sdk_edit_text_icon_spinner"
+            android:layout_alignTop="@+id/ll_area"
+            android:layout_toRightOf="@+id/ll_area"
+            android:background="@drawable/game_sdk_accountlist" />
+    </LinearLayout>
+
+    <EditText
+        android:id="@+id/et_tel"
+        style="@style/game_sdk_dialog_edit_text"
+        android:layout_alignTop="@+id/ll_area"
+        android:layout_marginRight="@dimen/game_sdk_dialog_weight_padding"
+        android:layout_toRightOf="@+id/ll_area"
+        android:background="@drawable/game_sdk_shape_bg_input"
+        android:hint="@string/game_sdk_win_account_inpphone"
+        android:paddingLeft="5dp" />
+
+    <EditText
+        android:id="@+id/et_identifying_code"
+        style="@style/game_sdk_dialog_edit_text"
+        android:layout_alignTop="@+id/btn_send_code"
+        android:layout_below="@+id/ll_area"
+        android:layout_marginLeft="@dimen/game_sdk_dialog_weight_padding"
+        android:layout_marginRight="0dp"
+        android:layout_toLeftOf="@+id/btn_send_code"
+        android:background="@drawable/game_sdk_shape_bg_input"
+        android:hint="@string/game_sdk_win_account_inpcode"
+        android:paddingLeft="5dp" />
+
+    <Button
+        android:id="@+id/btn_send_code"
+        style="@style/game_sdk_dialog_btn"
+        android:layout_width="110dp"
+        android:layout_alignParentRight="true"
+        android:layout_below="@+id/ll_area"
+        android:layout_marginLeft="5dp"
+        android:layout_marginTop="@dimen/game_sdk_dialog_weight_top"
+        android:text="@string/game_sdk_win_account_getcode" />
+
+    <EditText
+        android:id="@+id/et_password"
+        style="@style/game_sdk_dialog_edit_text"
+        android:layout_below="@+id/btn_send_code"
+        android:layout_marginLeft="@dimen/game_sdk_dialog_weight_padding"
+        android:layout_marginRight="@dimen/game_sdk_dialog_weight_padding"
+        android:layout_marginTop="@dimen/game_sdk_dialog_weight_top"
+        android:background="@drawable/game_sdk_shape_bg_input"
+        android:hint="@string/game_sdk_win_account_inppass"
+        android:inputType="textPassword"
+        android:paddingLeft="5dp" />
+
+    <Button
+        android:id="@+id/btn_register"
+        style="@style/game_sdk_dialog_btn"
+        android:layout_below="@+id/et_password"
+        android:layout_marginTop="@dimen/game_sdk_dialog_weight_top"
+        android:text="@string/game_sdk_win_register_register" />
+
+    <ListView
+        android:id="@+id/lv_area_list"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:layout_alignLeft="@+id/ll_area"
+        android:layout_alignRight="@+id/ll_area"
+        android:layout_below="@+id/ll_area"
+        android:divider="@null"
+        android:scrollbars="none"
+        android:visibility="gone" />
+</RelativeLayout>
\ No newline at end of file
diff --git a/Project/sd_sdk/src/game_sdgame/res/layout/game_sdk_dialog_webview.xml b/Project/sd_sdk/src/game_sdgame/res/layout/game_sdk_dialog_webview.xml
new file mode 100644
index 0000000..52c0348
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/layout/game_sdk_dialog_webview.xml
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical">
+
+    <RelativeLayout
+        android:id="@+id/rl_top"
+        android:layout_width="match_parent"
+        android:layout_height="40dp"
+        android:paddingLeft="20dp"
+        android:paddingRight="10dp">
+
+        <FrameLayout
+            android:id="@+id/fl_back"
+            android:layout_width="20dp"
+            android:layout_height="20dp"
+            android:layout_centerVertical="true">
+
+            <ImageView
+                android:layout_width="10dp"
+                android:layout_height="14dp"
+                android:layout_gravity="center"
+                android:background="@drawable/game_sdk_web_view_back"
+                android:scaleType="fitXY" />
+        </FrameLayout>
+
+        <TextView
+            android:id="@+id/tv_title"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_centerInParent="true"
+            android:textColor="@android:color/white"
+            android:textSize="18sp" />
+
+        <ImageView
+            android:id="@+id/iv_dismiss"
+            android:layout_width="50dp"
+            android:layout_height="21dp"
+            android:layout_alignParentRight="true"
+            android:layout_centerVertical="true"
+            android:background="@drawable/game_sdk_hdyx"
+            android:scaleType="fitXY" />
+    </RelativeLayout>
+
+    <FrameLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent">
+
+        <com.tencent.smtt.sdk.WebView
+            android:id="@+id/web_view"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent" />
+
+        <ProgressBar
+            android:id="@+id/progress_bar"
+            android:layout_width="40dp"
+            android:layout_height="40dp"
+            android:layout_gravity="center"
+            android:visibility="gone" />
+    </FrameLayout>
+</LinearLayout>
\ No newline at end of file
diff --git a/Project/sd_sdk/src/game_sdgame/res/layout/game_sdk_float_view.xml b/Project/sd_sdk/src/game_sdgame/res/layout/game_sdk_float_view.xml
new file mode 100644
index 0000000..71260fe
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/layout/game_sdk_float_view.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content" >
+
+    <LinearLayout
+        android:id="@+id/game_sdk_menu"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_gravity="center_vertical"
+        android:orientation="horizontal" >
+    </LinearLayout>
+
+    <FrameLayout
+        android:id="@+id/game_sdk_float_view"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_gravity="center_vertical" >
+
+        <ImageView
+            android:id="@+id/game_sdk_float_view_icon_imageView"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_gravity="center_vertical"
+            android:contentDescription="@null"
+            android:scaleType="fitXY"
+            android:src="@drawable/game_sdk_toolbaricon" />
+
+        <ImageView
+            android:id="@+id/game_sdk_float_view_icon_notify"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:contentDescription="@null"
+            android:visibility="gone" />
+    </FrameLayout>
+
+</FrameLayout>
\ No newline at end of file
diff --git a/Project/sd_sdk/src/game_sdgame/res/layout/game_sdk_item_float_view_bar.xml b/Project/sd_sdk/src/game_sdgame/res/layout/game_sdk_item_float_view_bar.xml
new file mode 100644
index 0000000..0af85a5
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/layout/game_sdk_item_float_view_bar.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:orientation="vertical">
+
+    <LinearLayout
+        android:layout_width="55dp"
+        android:layout_height="55dp"
+        android:background="@android:color/transparent"
+        android:gravity="center"
+        android:orientation="vertical">
+
+        <ImageView
+            android:id="@+id/iv_icon"
+            android:layout_width="25dp"
+            android:layout_height="25dp"
+            android:src="@drawable/game_sdk_toolbaricon_manage" />
+
+        <TextView
+            android:id="@+id/tv_name"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="3dp"
+            android:textColor="@android:color/white"
+            android:textSize="10sp" />
+    </LinearLayout>
+
+</FrameLayout>
diff --git a/Project/sd_sdk/src/game_sdgame/res/layout/game_sdk_item_spinner_list.xml b/Project/sd_sdk/src/game_sdgame/res/layout/game_sdk_item_spinner_list.xml
new file mode 100644
index 0000000..d8a10df
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/layout/game_sdk_item_spinner_list.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+              android:layout_width="match_parent"
+              android:layout_height="wrap_content"
+              android:background="@drawable/game_sdk_sha_bg_rectangle"
+              android:orientation="horizontal">
+
+    <TextView
+        android:id="@+id/tv_name"
+        android:layout_width="0dp"
+        android:layout_height="@dimen/game_sdk_dialog_weight_height"
+        android:layout_weight="1"
+        android:ellipsize="end"
+        android:gravity="center_vertical"
+        android:paddingLeft="10dp"
+        android:singleLine="true"
+        android:textColor="@color/game_sdk_common_text_color"
+        android:textSize="18dp"/>
+
+    <ImageView
+        android:id="@+id/iv_delete"
+        android:layout_width="40dp"
+        android:layout_height="20dp"
+        android:layout_gravity="center_vertical"
+        android:paddingLeft="10dp"
+        android:paddingRight="10dp"
+        android:scaleType="fitXY"
+        android:src="@drawable/game_sdk_close"
+        android:visibility="gone"/>
+</LinearLayout>
\ No newline at end of file
diff --git a/Project/sd_sdk/src/game_sdgame/res/layout/game_sdk_progress_dialog.xml b/Project/sd_sdk/src/game_sdgame/res/layout/game_sdk_progress_dialog.xml
new file mode 100644
index 0000000..30f439c
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/layout/game_sdk_progress_dialog.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="fill_parent"
+    android:layout_height="fill_parent"
+    android:background="@android:color/transparent"
+    android:gravity="center" >
+
+    <RelativeLayout
+        android:id="@+id/game_sdk_loading_group"
+        android:layout_width="120dp"
+        android:layout_height="wrap_content"
+        android:background="@drawable/game_sdk_shape"
+        android:orientation="vertical"
+        android:paddingBottom="10dp"
+        android:paddingLeft="10dp"
+        android:paddingRight="10dp"
+        android:paddingTop="10dp" >
+
+        <ImageView
+            android:id="@+id/game_sdk_loading_animato"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:contentDescription="@null"
+            android:src="@drawable/game_sdk_progress_loading" />
+
+        <TextView
+            android:id="@+id/game_sdk_loading_title"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_alignLeft="@+id/game_sdk_loading_animato"
+            android:layout_marginLeft="30dp"
+            android:textColor="@color/game_sdk_tv"
+            android:textSize="15sp" />
+    </RelativeLayout>
+
+</LinearLayout>
\ No newline at end of file
diff --git a/Project/sd_sdk/src/game_sdgame/res/layout/game_sdk_softupdate_progress.xml b/Project/sd_sdk/src/game_sdgame/res/layout/game_sdk_softupdate_progress.xml
new file mode 100644
index 0000000..f8381c0
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/layout/game_sdk_softupdate_progress.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="fill_parent"
+    android:layout_height="match_parent"
+	>
+	<ProgressBar
+		android:id="@+id/game_sdk_update_progress"
+		android:layout_width="fill_parent"
+		android:layout_height="wrap_content"
+		style="?android:attr/progressBarStyleHorizontal" />
+	<TextView 
+	    android:id="@+id/game_sdk_progress_info"
+	    android:layout_width="fill_parent"
+		android:layout_height="wrap_content"
+		android:gravity="center"
+		android:layout_marginTop="20dp"
+	    />
+</RelativeLayout>
+
+
+
diff --git a/Project/sd_sdk/src/game_sdgame/res/layout/pop_show_protocol.xml b/Project/sd_sdk/src/game_sdgame/res/layout/pop_show_protocol.xml
new file mode 100644
index 0000000..fe2cc52
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/layout/pop_show_protocol.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:orientation="vertical"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    >
+    <TextView android:id="@+id/pop_protocol_sign"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:gravity="center"
+        android:padding="16dp"
+        android:textColor="#0285F0"
+        android:textSize="15sp"
+        android:clickable="true"
+        android:background="@drawable/protocol_show_bg"
+        />
+    <View android:layout_width="match_parent"
+        android:layout_height="1px"
+        android:background="#999999"
+        />
+    <TextView android:id="@+id/pop_protocol_pay"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:gravity="center"
+        android:padding="16dp"
+        android:textColor="#0285F0"
+        android:textSize="15sp"
+        android:clickable="true"
+        android:background="@drawable/protocol_show_bg"
+        />
+    <View android:layout_width="match_parent"
+        android:layout_height="1px"
+        android:background="#999999"
+        />
+    <TextView android:id="@+id/pop_protocol_bank"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:gravity="center"
+        android:padding="16dp"
+        android:textColor="#0285F0"
+        android:textSize="15sp"
+        android:clickable="true"
+        android:background="@drawable/protocol_show_bg"
+        android:visibility="gone"
+        />
+    <View android:id="@+id/pop_protocol_bank_divider"
+        android:layout_width="match_parent"
+        android:layout_height="1px"
+        android:background="#999999"
+        android:visibility="gone"
+        />
+    <TextView android:id="@+id/pop_protocol_cancel"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:text="鍙栨秷"
+        android:gravity="center"
+        android:padding="14dp"
+        android:textColor="#ff0000"
+        android:textSize="15sp"
+        android:clickable="true"
+        android:background="@drawable/protocol_show_bg"
+        />
+</LinearLayout>
\ No newline at end of file
diff --git a/Project/sd_sdk/src/game_sdgame/res/layout/sdp_activity_main.xml b/Project/sd_sdk/src/game_sdgame/res/layout/sdp_activity_main.xml
new file mode 100644
index 0000000..d829e29
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/layout/sdp_activity_main.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:orientation="vertical"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
+
+</LinearLayout>
\ No newline at end of file
diff --git a/Project/sd_sdk/src/game_sdgame/res/layout/sdp_activity_support_bank.xml b/Project/sd_sdk/src/game_sdgame/res/layout/sdp_activity_support_bank.xml
new file mode 100644
index 0000000..f2805df
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/layout/sdp_activity_support_bank.xml
@@ -0,0 +1,136 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:orientation="vertical"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:background="@color/sdp_activity_background"
+    tools:context="com.shengpay.sdpmerchantpaysdk.ui.SDPSupportBankActivity">
+
+    <RelativeLayout
+        android:layout_width="match_parent"
+        android:layout_height="44dp">
+        <ImageView
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:background="#0285f0"/>
+
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="鏀寔閾惰"
+            android:textSize="20sp"
+            android:textColor="@color/sdp_white_color"
+            android:textStyle="bold"
+            android:layout_centerInParent="true"/>
+
+        <ImageButton
+            android:id="@+id/backButton"
+            android:layout_gravity="left|center"
+            android:gravity="left"
+            android:layout_width="40dp"
+            android:layout_height="40dp"
+            android:background="@android:color/transparent"
+            android:src="@drawable/nav_back"
+            android:layout_centerVertical="true"
+            android:layout_alignParentLeft="true"
+            android:layout_alignParentStart="true" />
+    </RelativeLayout>
+
+    <RelativeLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:background="@color/sdp_white_color"
+        android:layout_marginLeft="9dp"
+        android:layout_marginRight="9dp"
+        android:layout_marginTop="16dp"
+        android:layout_marginBottom="16dp">
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:layout_marginLeft="17dp"
+            android:layout_marginRight="17dp"
+            android:layout_marginTop="18dp"
+            android:layout_marginBottom="18dp"
+            android:orientation="vertical"
+            >
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="50dp"
+                android:orientation="vertical">
+                <ImageView
+                    android:layout_width="match_parent"
+                    android:layout_height="1dp"
+                    android:src="#cccccc" />
+
+                <LinearLayout
+                    android:layout_width="match_parent"
+                    android:layout_height="48dp"
+                    android:orientation="horizontal">
+
+                    <ImageView
+                        android:layout_width="1dp"
+                        android:layout_height="match_parent"
+                        android:src="#cccccc" />
+
+                    <TextView
+                        android:layout_width="0dp"
+                        android:layout_weight="4"
+                        android:gravity="center"
+                        android:layout_height="match_parent"
+                        android:background="@color/sdp_support_bank_text_background"
+                        android:text="閾惰鍒楄〃" />
+
+                    <ImageView
+                        android:layout_width="1dp"
+                        android:layout_height="match_parent"
+                        android:src="#cccccc" />
+
+                    <TextView
+                        android:layout_width="0dp"
+                        android:layout_weight="2"
+                        android:layout_height="match_parent"
+                        android:gravity="center"
+                        android:background="@color/sdp_support_bank_text_background"
+                        android:text="鍊熻鍗�"/>
+
+                    <ImageView
+                        android:layout_width="1dp"
+                        android:layout_height="match_parent"
+                        android:src="#cccccc" />
+
+                    <TextView
+                        android:layout_width="0dp"
+                        android:layout_weight="2"
+                        android:gravity="center"
+                        android:layout_height="match_parent"
+                        android:background="@color/sdp_support_bank_text_background"
+                        android:text="璐疯鍗�"/>
+
+                    <ImageView
+                        android:layout_width="1dp"
+                        android:layout_height="match_parent"
+                        android:src="#cccccc" />
+
+                </LinearLayout>
+
+                <ImageView
+                    android:layout_width="match_parent"
+                    android:layout_height="1dp"
+                    android:src="#cccccc" />
+            </LinearLayout>
+
+            <ListView
+                android:id="@+id/supportBankList"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:divider="#cccccc"
+                android:dividerHeight="1dp"
+                />
+
+        </LinearLayout>
+    </RelativeLayout>
+
+</LinearLayout>
\ No newline at end of file
diff --git a/Project/sd_sdk/src/game_sdgame/res/layout/sdp_card_list_item.xml b/Project/sd_sdk/src/game_sdgame/res/layout/sdp_card_list_item.xml
new file mode 100644
index 0000000..17f08b4
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/layout/sdp_card_list_item.xml
@@ -0,0 +1,21 @@
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:orientation="horizontal"
+    android:layout_width="match_parent"
+    android:layout_height="40dp"
+    android:minHeight="40dp">
+
+    <ImageView android:id="@+id/bankIconImageView"
+        android:layout_width="@dimen/sdp_bank_icon_width"
+        android:layout_height="@dimen/sdp_bank_icon_height"
+        android:layout_marginLeft="10dp"
+        android:layout_gravity="center_vertical"/>
+
+    <TextView android:id="@+id/bankInfoTextView"
+        android:layout_width="wrap_content"
+        android:layout_height="20dp"
+        android:maxLines="1"
+        android:textSize="16sp"
+        android:layout_marginLeft="5dp"
+        android:layout_gravity="center_vertical"
+        />
+</LinearLayout>
diff --git a/Project/sd_sdk/src/game_sdgame/res/layout/sdp_card_unbind_list_item.xml b/Project/sd_sdk/src/game_sdgame/res/layout/sdp_card_unbind_list_item.xml
new file mode 100644
index 0000000..1975d2a
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/layout/sdp_card_unbind_list_item.xml
@@ -0,0 +1,32 @@
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="40dp"
+    android:minHeight="40dp"
+    android:orientation="horizontal">
+
+    <ImageView
+        android:id="@+id/bankIconImageView"
+        android:layout_width="@dimen/sdp_bank_icon_width"
+        android:layout_height="@dimen/sdp_bank_icon_height"
+        android:layout_gravity="center_vertical"
+        android:layout_marginLeft="10dp" />
+
+    <TextView
+        android:id="@+id/bankInfoTextView"
+        android:layout_width="0dp"
+        android:layout_height="20dp"
+        android:layout_gravity="center_vertical"
+        android:layout_marginLeft="5dp"
+        android:layout_weight="1"
+        android:textSize="@dimen/sdp_normal_text_size" />
+
+    <TextView
+        android:id="@+id/unbing_tv"
+        android:layout_width="35dp"
+        android:layout_height="match_parent"
+        android:focusable="true"
+        android:gravity="center_vertical"
+        android:text="瑙g粦"
+        android:textColor="@android:color/holo_red_light"
+        android:textSize="@dimen/sdp_normal_text_size" />
+</LinearLayout>
diff --git a/Project/sd_sdk/src/game_sdgame/res/layout/sdp_dialog_add_card_pay.xml b/Project/sd_sdk/src/game_sdgame/res/layout/sdp_dialog_add_card_pay.xml
new file mode 100644
index 0000000..1ad3059
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/layout/sdp_dialog_add_card_pay.xml
@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:orientation="vertical"
+    android:background="@drawable/sdp_dialog_base_bg"
+    android:layout_width="@dimen/sdp_pay_dialog_width"
+    android:layout_height="@dimen/sdp_pay_dialog_height">
+
+    <RelativeLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content">
+        >
+        <!-- 鏍囬 -->
+        <TextView
+            android:text="鏀粯"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:gravity="center"
+            android:layout_centerInParent="true"
+            android:paddingTop="5dp"
+            android:paddingBottom="5dp"
+            android:textSize="@dimen/sdp_dialog_title_text_size"
+            android:textStyle="bold"
+            android:textColor="@color/sdp_normal_text_color"/>
+
+        <ImageButton
+            android:id="@+id/closeButton"
+            android:layout_width="30dp"
+            android:layout_height="30dp"
+            android:layout_centerVertical="true"
+            android:layout_alignParentRight="true"
+            android:background="@android:color/transparent"
+            android:scaleType="center"
+            android:scaleX="1.5"
+            android:scaleY="1.5"
+            android:src="@drawable/close_hover" />
+    </RelativeLayout>
+
+    <ImageView
+        android:layout_width="match_parent"
+        android:layout_height="1dp"
+        android:layout_marginLeft="10dp"
+        android:layout_marginRight="10dp"
+        android:background="@color/sdp_dialog_seperator_line_color"/>
+
+    <TextView
+        android:id="@+id/prodNameTextView"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:paddingTop="10dp"
+        android:textSize="16sp"
+        android:text="鍟嗗搧鍚嶇О"
+        android:gravity="center_horizontal"
+       />
+
+    <TextView
+        android:id="@+id/prodAmountTextView"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:paddingTop="10dp"
+        android:gravity="center_vertical|center_horizontal"
+        android:textSize="22sp"
+        android:textStyle="bold"
+        android:text="锟�100.00"
+        />
+
+    <Button
+        android:text="+ 娣诲姞閾惰鍗�"
+        android:layout_width="match_parent"
+        android:layout_height="40dp"
+        android:id="@+id/addCardButton"
+        android:layout_marginLeft="20dp"
+        android:layout_marginRight="20dp"
+        android:layout_marginTop="30dp"
+        android:textColor="#FFFFFF"
+        android:textSize="18sp"
+        android:background="@drawable/sdp_button_sel" />
+
+    <TextView
+        android:text="褰撳墠鏃犲彲鐢ㄩ摱琛屽崱"
+        android:paddingTop="10dp"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:gravity="center_vertical|center_horizontal"
+        android:textColor="#B0B0B0"
+        android:layout_marginTop="10dp"
+        android:id="@+id/textView4" />
+</LinearLayout>
\ No newline at end of file
diff --git a/Project/sd_sdk/src/game_sdgame/res/layout/sdp_dialog_card_list.xml b/Project/sd_sdk/src/game_sdgame/res/layout/sdp_dialog_card_list.xml
new file mode 100644
index 0000000..d0be7cd
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/layout/sdp_dialog_card_list.xml
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="@dimen/sdp_pay_dialog_width"
+    android:layout_height="@dimen/sdp_pay_dialog_height"
+    android:orientation="vertical">
+
+    <RelativeLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content">
+
+        <ImageButton
+            android:id="@+id/backButton"
+            android:layout_gravity="left|center"
+            android:layout_centerVertical="true"
+            android:gravity="left"
+            android:layout_width="20dp"
+            android:layout_height="30dp"
+            android:layout_marginLeft="10dp"
+            android:background="@android:color/transparent"
+            android:src="@drawable/icon_left_arrow" />
+
+        <!-- 鏍囬 -->
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:gravity="center"
+            android:layout_centerInParent="true"
+            android:text="鎴戠殑鍗″垪琛�"
+            android:paddingTop="5dp"
+            android:paddingBottom="5dp"
+            android:textSize="@dimen/sdp_dialog_title_text_size"
+            android:textStyle="bold"
+            android:textColor="@color/sdp_normal_text_color"/>
+
+    </RelativeLayout>
+
+
+
+    <ImageView
+        android:layout_width="match_parent"
+        android:layout_height="1dp"
+        android:layout_marginLeft="10dp"
+        android:layout_marginRight="10dp"
+        android:background="@color/sdp_dialog_seperator_line_color"/>
+
+    <ListView
+        android:id="@+id/cardList"
+        android:layout_width="match_parent"
+        android:layout_marginTop="10dp"
+        android:layout_height="130dp"
+        android:layout_marginLeft="10dp"
+        android:layout_marginRight="10dp"
+        />
+
+    <Button
+        android:id="@+id/useOtherCardPayButton"
+        android:layout_width="match_parent"
+        android:layout_height="45dp"
+        android:layout_marginLeft="10dp"
+        android:layout_marginRight="10dp"
+        android:layout_marginTop="20dp"
+        android:background="@drawable/sdp_button_sel"
+        android:elevation="15dp"
+        android:text="浣跨敤鍏朵粬閾惰鍗′粯娆�"
+        android:textColor="#FFFFFF"
+        android:textSize="15sp" />
+</LinearLayout>
\ No newline at end of file
diff --git a/Project/sd_sdk/src/game_sdgame/res/layout/sdp_dialog_card_unbind_list.xml b/Project/sd_sdk/src/game_sdgame/res/layout/sdp_dialog_card_unbind_list.xml
new file mode 100644
index 0000000..f6cd97f
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/layout/sdp_dialog_card_unbind_list.xml
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="@dimen/sdp_pay_dialog_width"
+    android:layout_height="@dimen/sdp_pay_dialog_height"
+    android:orientation="vertical">
+
+    <RelativeLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content">
+
+        <!-- 鏍囬 -->
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_centerInParent="true"
+            android:gravity="center"
+            android:paddingBottom="5dp"
+            android:paddingTop="5dp"
+            android:text="宸茬粦瀹氱殑閾惰鍗�"
+            android:textColor="@color/sdp_normal_text_color"
+            android:textSize="@dimen/sdp_dialog_title_text_size"
+            android:textStyle="bold" />
+
+        <ImageButton
+            android:id="@+id/closeButton"
+            android:layout_width="30dp"
+            android:layout_height="30dp"
+            android:layout_alignParentRight="true"
+            android:layout_centerVertical="true"
+            android:background="@android:color/transparent"
+            android:scaleType="center"
+            android:scaleX="1.5"
+            android:scaleY="1.5"
+            android:src="@drawable/close_hover" />
+    </RelativeLayout>
+
+    <ImageView
+        android:layout_width="match_parent"
+        android:layout_height="1dp"
+        android:layout_marginLeft="10dp"
+        android:layout_marginRight="10dp"
+        android:background="@color/sdp_dialog_seperator_line_color" />
+
+    <ListView
+        android:id="@+id/cardList"
+        android:layout_width="match_parent"
+        android:layout_height="0dp"
+        android:layout_margin="10dp"
+        android:layout_weight="1"
+        android:scrollbars="none" />
+
+    <TextView
+        android:id="@+id/no_data_tv"
+        android:layout_width="match_parent"
+        android:layout_height="180dp"
+        android:gravity="center"
+        android:text="娌℃湁宸茬粦瀹氱殑閾惰鍗�"
+        android:textSize="18sp"
+        android:visibility="gone" />
+
+</LinearLayout>
\ No newline at end of file
diff --git a/Project/sd_sdk/src/game_sdgame/res/layout/sdp_dialog_cardnum_input.xml b/Project/sd_sdk/src/game_sdgame/res/layout/sdp_dialog_cardnum_input.xml
new file mode 100644
index 0000000..d42f6b1
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/layout/sdp_dialog_cardnum_input.xml
@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="@dimen/sdp_pay_dialog_width"
+    android:layout_height="@dimen/sdp_pay_dialog_height"
+    android:background="@drawable/sdp_dialog_base_bg"
+    android:orientation="vertical" >
+
+    <RelativeLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content">
+
+        <ImageButton
+            android:id="@+id/backButton"
+            android:layout_gravity="left|center"
+            android:gravity="left"
+            android:layout_width="20dp"
+            android:layout_height="30dp"
+            android:layout_centerVertical="true"
+            android:layout_marginLeft="10dp"
+            android:background="@android:color/transparent"
+            android:src="@drawable/icon_left_arrow" />
+
+        <!-- 鏍囬 -->
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:gravity="center"
+            android:layout_centerInParent="true"
+            android:text="杈撳叆鍗″彿"
+            android:paddingTop="5dp"
+            android:paddingBottom="5dp"
+            android:textSize="@dimen/sdp_dialog_title_text_size"
+            android:textStyle="bold"
+            android:textColor="@color/sdp_normal_text_color"/>
+
+        <Button
+            android:id="@+id/supportBankButton"
+            android:layout_width="90dp"
+            android:layout_height="18dp"
+            android:gravity="center_vertical"
+            android:background="@android:color/transparent"
+            android:text="鏀寔閾惰"
+            android:layout_centerVertical="true"
+            android:layout_alignParentRight="true"
+            android:textColor="@color/LightBlue"
+            android:textSize="@dimen/sdp_normal_text_size"/>
+    </RelativeLayout>
+
+    <ImageView
+        android:layout_width="match_parent"
+        android:layout_height="1dp"
+        android:layout_marginLeft="10dp"
+        android:layout_marginRight="10dp"
+        android:background="@color/sdp_dialog_seperator_line_color"/>
+
+    <TextView
+        android:id="@+id/cardNumberLargeTextView"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:minHeight="40dp"
+        android:maxLines="1"
+        android:textSize="20.0sp"
+        android:gravity="center_vertical|center_horizontal"
+        android:textColor="#ff005798"
+        android:background="#ffe1f1ff"
+        android:layout_marginTop="30dp"
+        android:layout_marginBottom="10dp"
+        android:visibility="invisible"/>
+
+    <EditText
+        android:id="@+id/bankCardNumEdittext"
+        android:layout_width="260dp"
+        android:layout_height="40dp"
+        android:background="@drawable/sdp_edittext_bg"
+        android:hint="杈撳叆閾惰鍗″彿"
+        android:layout_marginLeft="10dp"
+        android:textSize="15sp"
+        android:inputType="number"
+        android:maxLength="20"
+        android:maxLines="1"
+        android:paddingLeft="5dp"
+        android:layout_marginTop="0dp"/>
+
+    <Button
+        android:id="@+id/nextButton"
+        android:layout_width="match_parent"
+        android:layout_height="40dp"
+        android:layout_marginBottom="20dp"
+        android:layout_marginLeft="10dp"
+        android:layout_marginRight="10dp"
+        android:layout_marginTop="40dp"
+        android:background="@drawable/sdp_button_sel"
+        android:elevation="15dp"
+        android:text="涓嬩竴姝�"
+        android:textColor="#FFFFFF"
+        android:textSize="15sp" />
+
+</LinearLayout>
\ No newline at end of file
diff --git a/Project/sd_sdk/src/game_sdgame/res/layout/sdp_dialog_loading.xml b/Project/sd_sdk/src/game_sdgame/res/layout/sdp_dialog_loading.xml
new file mode 100644
index 0000000..76961d6
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/layout/sdp_dialog_loading.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="@dimen/sdp_loading_width"
+    android:layout_height="@dimen/sdp_loading_height"
+    android:background="@drawable/sdp_dialog_loading_bg"
+    android:paddingBottom="@dimen/sdp_loading_top"
+    android:paddingTop="@dimen/sdp_loading_top"
+    android:orientation="vertical">
+
+    <ImageView
+        android:id="@+id/sdpLogo"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_centerHorizontal="true"
+        android:layout_gravity="center_horizontal"
+        android:src="@drawable/icon_gray_logo" />
+
+    <LinearLayout
+        android:layout_width="@dimen/sdp_loading_width"
+        android:layout_height="wrap_content"
+        android:gravity="center_horizontal|center_vertical"
+        android:orientation="horizontal"
+        android:layout_alignParentTop="true"
+        android:layout_alignParentLeft="true"
+        android:layout_alignParentStart="true">
+
+        <ImageView
+            android:id="@+id/shengpay_dialog_loading_progressbar"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+
+            android:src="@drawable/circle_loading" />
+
+        <TextView
+            android:id="@+id/shengpay_dialog_loading_text"
+            android:layout_width="wrap_content"
+            android:layout_height="18dp"
+            android:maxLines="3"
+            android:layout_marginLeft="3dp"
+            android:gravity="center_horizontal|center_vertical"
+            android:text="鍔姏鍔犺浇涓�..."
+            android:textSize="14sp"
+            android:textColor="#ffffff" />
+    </LinearLayout>
+</LinearLayout>
\ No newline at end of file
diff --git a/Project/sd_sdk/src/game_sdgame/res/layout/sdp_dialog_normal.xml b/Project/sd_sdk/src/game_sdgame/res/layout/sdp_dialog_normal.xml
new file mode 100644
index 0000000..bb38262
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/layout/sdp_dialog_normal.xml
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="@dimen/sdp_pay_dialog_width"
+    android:minHeight="200dp"
+    android:minWidth="@dimen/sdp_pay_dialog_width"
+    android:layout_height="200dp"
+    android:background="@drawable/sdp_dialog_base_bg"
+    android:orientation="vertical">
+
+
+    <!-- 鏍囬 -->
+    <TextView
+        android:id="@+id/normal_title_tv"
+        android:layout_width="match_parent"
+        android:layout_height="0dp"
+        android:layout_centerInParent="true"
+        android:layout_weight="1"
+        android:gravity="center"
+        android:text="杈撳叆鍗″彿"
+        android:textColor="@color/sdp_normal_text_color"
+        android:textSize="@dimen/sdp_product_amount_text_size"
+        android:textStyle="bold" />
+
+
+    <Space
+        android:layout_width="match_parent"
+        android:layout_height="1dp"
+        android:layout_marginLeft="10dp"
+        android:layout_marginRight="10dp"
+        android:background="@color/sdp_dialog_seperator_line_color" />
+
+    <TextView
+        android:id="@+id/normal_content_tv"
+        android:layout_width="match_parent"
+        android:gravity="center_vertical"
+        android:padding="10dp"
+        android:layout_height="0dp"
+        android:layout_weight="1.5"
+        android:textSize="18sp"
+        android:textColor="@color/sdp_normal_text_color" />
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="0dp"
+        android:layout_weight="1.2"
+        android:gravity="center">
+
+        <Button
+            android:id="@+id/normal_negative_btn"
+            android:layout_width="0dp"
+            android:layout_height="40dp"
+            android:layout_weight="1"
+            android:background="@drawable/sdp_button_sel"
+            android:layout_marginLeft="10dp"
+            android:elevation="5dp"
+            android:text="涓嬩竴姝�"
+            android:textColor="#FFFFFF"
+            android:textSize="15sp" />
+        <Space
+            android:layout_width="1dp"
+            android:layout_height="match_parent"
+            android:background="@color/sdp_white_color" />
+        <Button
+            android:id="@+id/normal_positive_btn"
+            android:layout_width="0dp"
+            android:layout_height="40dp"
+            android:layout_weight="1"
+            android:layout_marginRight="10dp"
+            android:background="@drawable/sdp_button_sel"
+            android:elevation="5dp"
+            android:text="涓嬩竴姝�"
+            android:textColor="#FFFFFF"
+            android:textSize="15sp" />
+    </LinearLayout>
+
+</LinearLayout>
\ No newline at end of file
diff --git a/Project/sd_sdk/src/game_sdgame/res/layout/sdp_dialog_reinput_code_promp.xml b/Project/sd_sdk/src/game_sdgame/res/layout/sdp_dialog_reinput_code_promp.xml
new file mode 100644
index 0000000..8fd24c8
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/layout/sdp_dialog_reinput_code_promp.xml
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:orientation="vertical"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:background="@drawable/sdp_dialog_base_bg"
+    >
+
+    <TextView
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:gravity="center_horizontal|center_vertical"
+        android:padding="20dp"
+        android:text="璇疯緭鍏ユ湁鏁堢殑楠岃瘉鐮�"/>
+
+    <ImageView
+        android:layout_width="match_parent"
+        android:layout_height="1dp"
+        android:background="@color/sdp_dialog_seperator_line_color"/>
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:orientation="horizontal">
+
+        <Button
+            android:layout_width="0dp"
+            android:layout_height="wrap_content"
+            android:layout_weight="1"
+            android:text="鍙栨秷"
+            android:gravity="center_horizontal|center_vertical"
+            android:id="@+id/cancelButton"
+            android:background="@color/sdp_white_color"
+            />
+
+        <ImageView
+            android:layout_width="1dp"
+            android:layout_height="match_parent"
+            android:background="@color/sdp_dialog_seperator_line_color"/>
+
+        <Button
+            android:layout_width="0dp"
+            android:layout_height="wrap_content"
+            android:layout_weight="1"
+            android:text="閲嶆柊杈撳叆"
+            android:gravity="center_horizontal|center_vertical"
+            android:textColor="@color/LightBlue"
+            android:background="@color/sdp_white_color"
+            android:id="@+id/reInputButton"
+            />
+
+    </LinearLayout>
+</LinearLayout>
\ No newline at end of file
diff --git a/Project/sd_sdk/src/game_sdgame/res/layout/sdp_dialog_succ.xml b/Project/sd_sdk/src/game_sdgame/res/layout/sdp_dialog_succ.xml
new file mode 100644
index 0000000..2700fcd
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/layout/sdp_dialog_succ.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:background="@drawable/sdp_dialog_loading_bg"
+    android:orientation="vertical"
+    android:layout_width="@dimen/sdp_loading_width"
+    android:layout_height="@dimen/sdp_loading_height"
+    android:gravity="center">
+    
+    <LinearLayout
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:orientation="vertical">
+
+        <ImageView
+            android:id="@+id/sdpLogo"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_gravity="center_horizontal"
+            android:src="@drawable/icon_gray_succ" />
+
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="18dp"
+            android:maxLines="1"
+            android:layout_marginLeft="3dp"
+            android:layout_marginTop="8dp"
+            android:layout_gravity="center_horizontal"
+            android:text="浠樻鎴愬姛"
+            android:textSize="14sp"
+            android:textColor="#ffffff" />
+
+    </LinearLayout>
+</LinearLayout>
\ No newline at end of file
diff --git a/Project/sd_sdk/src/game_sdgame/res/layout/sdp_dialog_validcode_pay.xml b/Project/sd_sdk/src/game_sdgame/res/layout/sdp_dialog_validcode_pay.xml
new file mode 100644
index 0000000..b8d0e48
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/layout/sdp_dialog_validcode_pay.xml
@@ -0,0 +1,176 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:orientation="vertical"
+    android:background="@drawable/sdp_dialog_base_bg"
+    android:layout_width="@dimen/sdp_pay_dialog_width"
+    android:layout_height="@dimen/sdp_pay_dialog_height">
+    <RelativeLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content">
+
+        <!-- 鏍囬 -->
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:gravity="center"
+            android:layout_centerInParent="true"
+            android:text="鏀粯"
+            android:paddingTop="5dp"
+            android:paddingBottom="5dp"
+            android:textSize="@dimen/sdp_dialog_title_text_size"
+            android:textStyle="bold"
+            android:textColor="@color/sdp_normal_text_color"/>
+
+        <ImageButton
+            android:id="@+id/closeButton"
+            android:layout_width="30dp"
+            android:layout_height="30dp"
+            android:layout_centerVertical="true"
+            android:layout_alignParentRight="true"
+            android:background="@android:color/transparent"
+            android:scaleType="center"
+            android:scaleX="1.5"
+            android:scaleY="1.5"
+            android:src="@drawable/close_hover" />
+    </RelativeLayout>
+
+    <ImageView
+        android:layout_width="match_parent"
+        android:layout_height="1dp"
+        android:layout_marginLeft="10dp"
+        android:layout_marginRight="10dp"
+        android:background="@color/sdp_dialog_seperator_line_color"/>
+
+    <!-- 浜у搧鍚嶇О -->
+    <TextView
+        android:id="@+id/prodNameTextView"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:paddingTop="10dp"
+        android:textSize="@dimen/sdp_normal_text_size"
+        android:textColor="@color/sdp_normal_text_color"
+        android:gravity="center_vertical|center_horizontal" />
+
+    <!-- 浜у搧閲戦 -->
+    <TextView
+        android:id="@+id/prodAmountTextView"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:gravity="center_vertical|center_horizontal"
+        android:paddingTop="10dp"
+        android:textSize="@dimen/sdp_product_amount_text_size"
+        android:textColor="@color/sdp_normal_text_color"
+        android:textStyle="bold" />
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:gravity="center_horizontal|center_vertical"
+        android:orientation="horizontal"
+        android:paddingLeft="10dp">
+
+        <ImageView
+            android:id="@+id/bankIconImageView"
+            android:layout_width="@dimen/sdp_bank_icon_width"
+            android:layout_height="@dimen/sdp_bank_icon_height"
+            android:src="@drawable/bank_boc" />
+
+        <TextView
+            android:id="@+id/bankNameTextView"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:textColor="@color/sdp_normal_text_color"
+            android:textSize="@dimen/sdp_normal_text_size"
+            android:text="涓浗閾惰鍊熻鍗�(**7677)" />
+
+        <Button
+            android:id="@+id/changeCardButton"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:background="@android:color/transparent"
+            android:text="鏇存崲"
+            android:textSize="@dimen/sdp_normal_text_size"
+            android:textColor="@color/sdp_button_change_bank_text_color" />
+    </LinearLayout>
+
+    <RelativeLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:paddingTop="5dp"
+        >
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:orientation="vertical"
+            android:visibility="visible"
+            android:id="@+id/contentLayout">
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:orientation="horizontal"
+                android:gravity="center_horizontal|center_vertical"
+                android:paddingRight="20dp"
+                android:paddingLeft="20dp">
+                <EditText
+                    android:id="@+id/validCodeEditText"
+                    android:layout_width="0dp"
+                    android:layout_height="40dp"
+                    android:layout_weight="4"
+                    android:inputType="number"
+                    android:maxLines="1"
+                    android:maxLength="6"
+                    android:textColorHint="@color/sdp_text_gray_color"
+                    android:textColor="@color/sdp_normal_text_color"
+                    android:background="@drawable/sdp_edittext_bg"/>
+                <com.shengpay.sdpmerchantpaysdk.widget.MmsVerifyButton
+                    android:id="@+id/sendValidCodeButton"
+                    android:layout_width="0dp"
+                    android:layout_weight="3"
+                    android:layout_height="40dp"
+                    android:elevation="15dp"
+                    android:textColor="#FFFFFF"
+                    android:paddingLeft="10dp"
+                    android:paddingRight="10dp"
+                    android:text="鍙戦�侀獙璇佺爜"
+                    android:textSize="@dimen/sdp_normal_text_size"
+                    android:background="@drawable/sdp_button_sel" />
+            </LinearLayout>
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:paddingLeft="20dp"
+                android:orientation="horizontal"
+                android:visibility="gone">
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:text="鍚屾剰"
+                    android:textColor="#b6b6b6"/>
+
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:text="鐩涗粯閫氬揩鎹锋敮浠樺崗璁�"
+                    android:textColor="@color/sdp_button_normal_background_color"/>
+            </LinearLayout>
+        </LinearLayout>
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:id="@+id/tipLayout"
+            android:gravity="center"
+            android:orientation="horizontal"
+            android:visibility="invisible">
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="褰撳墠鏃犲彲鐢ㄩ摱琛屽崱"
+                android:textSize="16sp"
+                android:textColor="#000000"/>
+        </LinearLayout>
+    </RelativeLayout>
+</LinearLayout>
\ No newline at end of file
diff --git a/Project/sd_sdk/src/game_sdgame/res/layout/sdp_support_bank_list_item.xml b/Project/sd_sdk/src/game_sdgame/res/layout/sdp_support_bank_list_item.xml
new file mode 100644
index 0000000..96b66c1
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/layout/sdp_support_bank_list_item.xml
@@ -0,0 +1,64 @@
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="40dp"
+    android:minHeight="40dp"
+    android:orientation="horizontal">
+
+    <ImageView
+        android:layout_width="1dp"
+        android:layout_height="match_parent"
+        android:src="#cccccc" />
+
+    <LinearLayout
+        android:layout_width="0dp"
+        android:layout_weight="4"
+        android:layout_height="match_parent"
+        android:orientation="horizontal">
+
+        <ImageView
+            android:id="@+id/bankIconImageView"
+            android:layout_gravity="left|center_vertical"
+            android:layout_marginLeft="5dp"
+            android:layout_width="@dimen/sdp_bank_icon_width"
+            android:layout_height="@dimen/sdp_bank_icon_height"
+            />
+        
+        <TextView
+            android:id="@+id/bankNameTextView"
+            android:gravity="left|center_vertical"
+            android:layout_marginLeft="3dp"
+            android:layout_width="wrap_content"
+            android:layout_height="match_parent" />
+
+    </LinearLayout>
+
+    <ImageView
+        android:layout_width="1dp"
+        android:layout_height="match_parent"
+        android:src="#cccccc" />
+
+    <ImageView
+        android:id="@+id/drCardImageView"
+        android:layout_width="0dp"
+        android:layout_weight="2"
+        android:layout_height="match_parent"
+        android:scaleType="center"/>
+
+    <ImageView
+        android:layout_width="1dp"
+        android:layout_height="match_parent"
+        android:src="#cccccc" />
+
+    <ImageView
+        android:id="@+id/crCardImageView"
+        android:layout_width="0dp"
+        android:layout_weight="2"
+        android:scaleType="center"
+        android:layout_height="match_parent" />
+
+    <ImageView
+        android:layout_width="1dp"
+        android:layout_height="match_parent"
+        android:src="#cccccc" />
+
+</LinearLayout>
diff --git a/Project/sd_sdk/src/game_sdgame/res/values/colors.xml b/Project/sd_sdk/src/game_sdgame/res/values/colors.xml
new file mode 100644
index 0000000..93e45cb
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/values/colors.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+    <color name="colorPrimary">#3F51B5</color>
+    <color name="colorPrimaryDark">#303F9F</color>
+    <color name="colorAccent">#FF4081</color>
+
+
+    <color name="DarkBlue">#34c8e6</color>
+    <color name="LightBlue">#1eaac8</color>
+
+    <color name="sdp_dialog_backgroundColor">#FFFFFF</color>
+
+    <color name="sdp_dialog_window_bg">#00000000</color>
+
+    <color name="sdp_dialog_seperator_line_color">#efefef</color>
+
+    <!-- 鐧借壊 -->
+    <color name="sdp_white_color">#FFFFFF</color>
+    <color name="sdp_normal_text_color">#333333</color>
+
+    <!-- 姝e父鎯呭喌涓嬫寜閽儗鏅鑹� -->
+    <color name="sdp_button_normal_background_color">#34c8e6</color>
+
+    <!-- 鎸変笅鍚庢寜閽儗鏅鑹� -->
+    <color name="sdp_button_pressed_background_color">#1eaac8</color>
+
+    <!-- 鎸夐挳绂佺敤鍚庤儗鏅鑹� -->
+    <color name="sdp_button_unable_background_color">#dbdbdb</color>
+    <color name="sdp_button_unable_text_color">#c8c8c8</color>
+
+    <color name="sdp_text_gray_color">#ff888888</color>
+    <color name="sdp_text_black">#404040</color>
+
+    <!-- 鏇存崲閾惰鍗℃寜閽瓧浣撻鑹� -->
+    <color name="sdp_button_change_bank_text_color">#7ad7ec</color>
+
+    <!-- 璁剧疆鐣岄潰閫忔槑棰滆壊 -->
+    <color name="sdp_translucent_background">#00000000</color>
+
+    <!-- activity 鑳屾櫙棰滆壊 -->
+    <color name="sdp_activity_background">#f2f2f2</color>
+
+    <!-- 鏀寔閾惰澶磋儗鏅鑹� -->
+    <color name="sdp_support_bank_text_background">#f2f2f2</color>
+</resources>
diff --git a/Project/sd_sdk/src/game_sdgame/res/values/dimens.xml b/Project/sd_sdk/src/game_sdgame/res/values/dimens.xml
new file mode 100644
index 0000000..51fbbb0
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/values/dimens.xml
@@ -0,0 +1,43 @@
+<resources>
+
+    <!-- Default screen margins, per the Android Design guidelines. -->
+    <dimen name="activity_horizontal_margin">16dp</dimen>
+    <dimen name="activity_vertical_margin">16dp</dimen>
+
+    <dimen name="fab_margin">16dp</dimen>
+
+    <!-- sdp loading dialog -->
+    <dimen name="sdp_dialog_loading_corners_radius">6dp</dimen>
+
+    <dimen name="sdp_loading_width">159dp</dimen>
+    <dimen name="sdp_loading_height">136dp</dimen>
+    <dimen name="sdp_loading_progressbar_size">54dp</dimen>
+    <dimen name="sdp_loading_top">30dp</dimen>
+    <dimen name="sdp_loading_padding_left">11dp</dimen>
+
+    <dimen name="sdp_prompt_title_margin">25dp</dimen>
+    <dimen name="sdp_prompt_content_margin">27dp</dimen>
+    <dimen name="sdp_prompt_btn_padding_top">16dp</dimen>
+
+    <!-- sdp pay dialog -->
+    <dimen name="sdp_pay_dialog_width">280dp</dimen>
+    <dimen name="sdp_pay_dialog_height">260dp</dimen>
+    <dimen name="sdp_dialog_base_corners_radius">4dp</dimen>
+
+    <!-- 绛剧害杈撳叆妗嗛珮搴� -->
+    <dimen name="sdp_sign_edittext_height">42dp</dimen>
+
+    <!-- 閾惰Icon鐨勯珮瀹� -->
+    <dimen name="sdp_bank_icon_width">22dp</dimen>
+    <dimen name="sdp_bank_icon_height">22dp</dimen>
+
+    <!-- 瀵硅瘽妗嗘爣棰樺瓧浣撳ぇ灏� -->
+    <dimen name="sdp_dialog_title_text_size">18sp</dimen>
+
+    <!-- 浜у搧浠锋牸瀛椾綋澶у皬 -->
+    <dimen name="sdp_product_amount_text_size">22sp</dimen>
+
+    <!-- 甯哥敤瀛椾綋澶у皬,瀵瑰簲24px 鐢�15sp鏀逛负16dp-->
+    <dimen name="sdp_normal_text_size">14dp</dimen>
+
+</resources>
diff --git a/Project/sd_sdk/src/game_sdgame/res/values/game_sdk_4.0_colors.xml b/Project/sd_sdk/src/game_sdgame/res/values/game_sdk_4.0_colors.xml
new file mode 100644
index 0000000..43d6f7f
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/values/game_sdk_4.0_colors.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+    <color name="game_sdk_base_color">#0575FB</color>
+    <color name="game_sdk_tv_gray">#757575</color>
+    <color name="game_sdk_tv_blue">#0086ff</color>
+</resources>
diff --git a/Project/sd_sdk/src/game_sdgame/res/values/game_sdk_colors.xml b/Project/sd_sdk/src/game_sdgame/res/values/game_sdk_colors.xml
new file mode 100644
index 0000000..ab2e8a5
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/values/game_sdk_colors.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+
+    <color name="game_sdk_translate">#ffffffff</color>
+    <color name="game_sdk_wt">#ffffff</color>
+    <color name="game_sdk_black">#000000</color>
+    <color name="game_sdk_tv">#a35d0b</color>
+    <color name="game_sdk_bg_pay_img">#949494</color>
+    <color name="game_sdk_input_text_color">#878787</color>
+
+    <color name="game_sdk_title_text_color">#000000</color>
+    <color name="game_sdk_border_line_color">#dcdcdc</color>
+    <color name="game_sdk_common_text_color">#888888</color>
+    <color name="game_sdk_float_view_bar_bg_color">#414243</color>
+</resources>
diff --git a/Project/sd_sdk/src/game_sdgame/res/values/game_sdk_dimens.xml b/Project/sd_sdk/src/game_sdgame/res/values/game_sdk_dimens.xml
new file mode 100644
index 0000000..79fea74
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/values/game_sdk_dimens.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+
+    <dimen name="game_sdk_dialog_weight_height">34dp</dimen>
+    <dimen name="game_sdk_dialog_weight_top">16dp</dimen>
+    <dimen name="game_sdk_dialog_weight_padding">20dp</dimen>
+
+</resources>
\ No newline at end of file
diff --git a/Project/sd_sdk/src/game_sdgame/res/values/game_sdk_drawables.xml b/Project/sd_sdk/src/game_sdgame/res/values/game_sdk_drawables.xml
new file mode 100644
index 0000000..f325356
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/values/game_sdk_drawables.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+    <drawable name="game_sdk_one">#00b4ff</drawable>
+    <drawable name="game_sdk_two">#00b4ff</drawable>
+    <drawable name="game_sdk_three">#f7f3ed</drawable>
+    <drawable name="game_sdk_four">#f88f99</drawable>   
+</resources>
diff --git a/Project/sd_sdk/src/game_sdgame/res/values/game_sdk_string.xml b/Project/sd_sdk/src/game_sdgame/res/values/game_sdk_string.xml
new file mode 100644
index 0000000..ea08d82
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/values/game_sdk_string.xml
@@ -0,0 +1,160 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+    <string name="game_sdk_get_appid_error">鏈幏鍙栧埌姝g‘鐨凙ppId锛岃妫�鏌ndroidManifest.xml鏂囦腑鑾峰彇AppId鐨勬柟娉曠殑name鏄惁涓�%s,value鍊兼槸鍚﹀~鍐欐纭�</string>
+    <string name="game_sdk_server_return_data_error">鏈嶅姟绔暟鎹繑鍥為敊璇�</string>
+    <string name="game_sdk_net_time_out">缃戠粶杩炴帴瓒呮椂</string>
+    <string name="game_sdk_win_account_secset">璐﹀彿瀹夊叏璁剧疆</string>
+    <string name="game_sdk_win_account_curacc">褰撳墠璐﹀彿:</string>
+    <string name="game_sdk_win_account_inpmail">璇疯緭鍏ラ偖绠辨垨鎵嬫満鍙�</string>
+    <string name="game_sdk_win_account_getcode">鑾峰彇楠岃瘉鐮�</string>
+    <string name="game_sdk_win_account_inpcode">璇疯緭鍏ラ獙璇佺爜</string>
+    <string name="game_sdk_win_account_checkover">瀹屾垚楠岃瘉</string>
+    <string name="game_sdk_win_account_mailinfo">杈撳叆鐨勬墜鏈哄彿鐢ㄤ簬鎵惧洖瀵嗙爜锛�</string>
+    <string name="game_sdk_win_account_codenull">楠岃瘉鐮佷笉鑳戒负绌�</string>
+    <string name="game_sdk_win_account_null">閭鎴栨墜鏈哄彿涓嶈兘涓虹┖</string>
+    <string name="game_sdk_win_account_bindsuc">鎴愬姛缁戝畾</string>
+    <string name="game_sdk_win_account_binderr">缁戝畾澶辫触</string>
+    <string name="game_sdk_win_account_mailerr">鎵嬫満鍙风爜鎴栬�呴偖绠卞湴鍧�鏈夎</string>
+    <string name="game_sdk_win_account_waitsend">璇峰湪60绉掑悗閲嶆柊鍙戦��</string>
+    <string name="game_sdk_win_account_sendsuc">楠岃瘉鐮佸凡鍙戦�佸埌</string>
+    <string name="game_sdk_win_account_senderr">楠岃瘉鐮佸彂閫佸け璐�</string>
+    <string name="game_sdk_win_alert_sure">纭畾</string>
+    <string name="game_sdk_win_alert_cancel">鍙栨秷</string>
+    <string name="game_sdk_win_account_bindacc">缁戝畾璐﹀彿</string>
+    <string name="game_sdk_win_account_inpuser">璇疯緭鍏ョ敤鎴峰悕</string>
+    <string name="game_sdk_win_account_inppass">璇疯緭鍏ュ瘑鐮�</string>
+    <string name="game_sdk_win_account_inpname">璇疯緭鍏ョ湡瀹炲鍚�</string>
+    <string name="game_sdk_win_account_inpsfz">璇疯緭鍏ヨ韩浠借瘉鍙�</string>
+    <string name="game_sdk_win_account_inpsurepass">璇风‘璁ゅ瘑鐮�</string>
+    <string name="game_sdk_win_account_agree">鎴戝凡闃呰骞跺悓鎰�</string>
+    <string name="game_sdk_win_account_agreename">銆�%s-鏈嶅姟鏉℃銆�</string>
+    <string name="game_sdk_win_account_alredyreg">鐧诲綍宸叉湁%s甯愬彿</string>
+    <string name="game_sdk_win_account_bind">缁戝畾</string>
+    <string name="game_sdk_win_account_bindloginacc">缁戝畾閫氳璇佸笎鍙�</string>
+    <string name="game_sdk_win_account_manage">甯愬彿绠$悊</string>
+    <string name="game_sdk_win_account_accinfo">璐﹀彿涓�6-20浣嶄腑/鑻辨枃+鏁板瓧,涓嶈兘鏄函鏁板瓧</string>
+    <string name="game_sdk_win_account_passinfo">瀵嗙爜闀垮害涓�6-20浣�,涓嶅惈闈炴硶瀛楃</string>
+    <string name="game_sdk_win_account_sfzinfo">璇峰~鍐欐纭殑韬唤璇佸彿</string>
+    <string name="game_sdk_win_account_realname">璇峰~鍐欐纭殑鐪熷疄濮撳悕</string>
+    <string name="game_sdk_win_account_passsureinfo">杈撳叆鐨勪袱娆″瘑鐮佷笉涓�鑷�</string>
+    <string name="game_sdk_win_pass_reset">閲嶇疆瀵嗙爜</string>
+    <string name="game_sdk_win_pass_inpnewpass">璇疯緭鍏ユ柊瀵嗙爜</string>
+    <string name="game_sdk_win_pass_inpsurenewpass">纭鏂板瘑鐮�</string>
+    <string name="game_sdk_win_pass_save">淇濆瓨</string>
+    <string name="game_sdk_win_pass_resendcode">閲嶆柊鑾峰彇楠岃瘉鐮�</string>
+    <string name="game_sdk_win_pass_resetsuc">瀵嗙爜宸查噸缃�</string>
+    <string name="game_sdk_win_pass_reseterr">瀵嗙爜閲嶇疆澶辫触</string>
+    <string name="game_sdk_win_pass_findpass">鎵惧洖瀵嗙爜</string>
+    <string name="game_sdk_win_pass_getcode">鑾峰彇楠岃瘉鐮�</string>
+    <string name="game_sdk_win_pass_forgetusername">蹇樿鐢ㄦ埛鍚�</string>
+    <string name="game_sdk_win_pass_findaccount">鎵惧洖璐﹀彿</string>
+    <string name="game_sdk_win_pass_findaccountsuc">鐢ㄦ埛鍚嶅凡鍙戦�佸埌鎮ㄧ殑</string>
+    <string name="game_sdk_win_pass_findaccounterr">鎵惧洖璐﹀彿澶辫触</string>
+    <string name="game_sdk_win_needshiming">鏍规嵁鏂囧寲閮ㄨ瀹�,蹇呴』瀹炲悕璁よ瘉鎵嶈兘杩涘叆娓告垙,璇峰厛瀹炲悕璁よ瘉</string>
+    <string name="game_sdk_win_pass_recheck">閲嶆柊楠岃瘉</string>
+    <string name="game_sdk_win_login_back">娆㈣繋鍥炴潵,\r\n</string>
+    <string name="game_sdk_win_login_loginacc">璐﹀彿鐧诲綍</string>
+    <string name="game_sdk_win_login_account">璐﹀彿/鎵嬫満鍙�</string>
+    <string name="game_sdk_win_login_pass">瀵嗙爜</string>
+    <string name="game_sdk_win_login_login">鐧诲綍</string>
+    <string name="game_sdk_win_login_fail">璐﹀彿鎴栧瘑鐮佹湁璇�</string>
+    <string name="game_sdk_win_login_forgetpassandacc">蹇樿瀵嗙爜</string>
+    <string name="game_sdk_win_login_fastregister">绔嬪嵆娉ㄥ唽</string>
+    <string name="game_sdk_win_login_oneregister">涓�閿敞鍐�</string>
+    <string name="game_sdk_win_manage_editpass">淇敼瀵嗙爜</string>
+    <string name="game_sdk_win_manage_zhuxiao">娉ㄩ攢/鍒囨崲甯愬彿</string>
+    <string name="game_sdk_win_manage_oldpass">鍘熷瀵嗙爜涓嶈兘涓虹┖</string>
+    <string name="game_sdk_win_manage_newpass">鏂板瘑鐮佷笉鑳戒负绌�</string>
+    <string name="game_sdk_win_manage_passsuc">瀵嗙爜淇敼鎴愬姛,璇烽噸鏂扮櫥褰�</string>
+    <string name="game_sdk_win_manage_passerr">瀵嗙爜淇敼澶辫触</string>
+    <string name="game_sdk_win_manage_inpoldpass">璇疯緭鍏ュ師瀵嗙爜</string>
+    <string name="game_sdk_win_manage_inpnewpass">璇疯緭鍏ユ柊瀵嗙爜</string>
+    <string name="game_sdk_win_manage_inpsurenewpass">璇风‘璁ゆ柊瀵嗙爜</string>
+    <string name="game_sdk_win_manage_zhuxiao2">娉ㄩ攢璐﹀彿</string>
+    <string name="game_sdk_win_manage_zhuxiaoinfo">娉ㄩ攢褰撳墠鐧婚檰鍙互鍒囨崲璐﹀彿,纭瑕佹敞閿�鍚楋紵</string>
+    <string name="game_sdk_win_register_success">娉ㄥ唽鎴愬姛</string>
+    <string name="game_sdk_win_shiming_success">瀹炲悕璁よ瘉鎴愬姛</string>
+    <string name="game_sdk_win_shiming_error">鐪熷疄濮撳悕鎴栬韩浠借瘉鍙锋湁璇�</string>
+    <string name="game_sdk_win_register_error">娉ㄥ唽澶辫触</string>
+    <string name="game_sdk_win_register_register">娉ㄥ唽</string>
+    <string name="game_sdk_win_register_accountexist">鐢ㄦ埛鍚嶅凡缁忓瓨鍦�</string>
+    <string name="game_sdk_win_register_account_phoneexist">鎵嬫満鍙风爜宸茬粡缁戝畾璐﹀彿,璇风洿鎺ヤ娇鐢ㄦ墜鏈哄彿鐮佺櫥褰�</string>
+    <string name="game_sdk_win_tool_shequ">娓告垙涓撳尯</string>
+    <string name="game_sdk_win_tool_pack">娓告垙绀煎寘</string>
+    <string name="game_sdk_win_tool_manage">璐︽埛涓績</string>
+    <string name="game_sdk_win_tool_networkerr">缃戠粶涓嶉��,璇锋鏌ヤ綘鐨勭綉缁滐紒</string>
+    <string name="game_sdk_win_tool_moreapp">鏇村娓告垙</string>
+    <string name="game_sdk_win_tool_nologin">鏈櫥褰�</string>
+    <string name="game_sdk_win_tool_paylog">鍏呭�兼煡璇�</string>
+    <string name="game_sdk_win_tool_query_balance_error">浣欓鏌ヨ澶辫触</string>
+    <string name="game_sdk_win_tool_pay">鍏呭��</string>
+    <string name="game_sdk_win_tool_paysuc">鏀粯鎴愬姛</string>
+    <string name="game_sdk_win_tool_payerr">鏀粯澶辫触</string>
+    <string name="game_sdk_win_tool_paying">鏀粯缁撴灉纭涓�</string>
+    <string name="game_sdk_win_tool_sinalogin">寰崥鐧诲綍</string>
+    <string name="game_sdk_win_tool_qqlogin">QQ鐧诲綍</string>
+    <string name="game_sdk_win_uninstalled_weixin">鎮ㄨ繕鏈畨瑁呭井淇★紝璇峰厛瀹夎</string>
+    <string name="game_sdk_win_tool_downerr">浣犵殑绯荤粺鐗堟湰浣庝簬Android 3.0 涓嶈兘涓嬭浇锛�</string>
+    <string name="game_sdk_win_tool_checkinfo">妫�鏌ョ粨鏋滀负:</string>
+    <string name="game_sdk_win_tool_payresult">鏀粯缁撴灉</string>
+    <string name="game_sdk_win_tool_productprice">鍟嗗搧浠锋牸:</string>
+    <string name="game_sdk_win_tool_productname">鍟嗗搧鍚嶇О:</string>
+    <string name="game_sdk_win_tool_payprice">杩橀渶鏀粯:</string>
+    <string name="game_sdk_win_tool_accountmoney">璐︽埛浣欓:</string>
+    <string name="game_sdk_win_tool_danwei">鍏�</string>
+    <string name="game_sdk_win_notice">鍏憡</string>
+    <string name="game_sdk_soft_update_info">妫�鏌ュ埌鏂扮増鏈�,绔嬪嵆鏇存柊</string>
+    <string name="game_sdk_soft_update_title">娓告垙鏇存柊</string>
+    <string name="game_sdk_soft_update_updatebtn">鏇存柊</string>
+    <string name="game_sdk_soft_update_later">绋嶅悗鏇存柊</string>
+    <string name="game_sdk_soft_updating">鏇存柊涓�</string>
+    <string name="game_sdk_soft_update_cancel">鍙栨秷</string>
+    <string name="game_sdk_win_account_inpphone">璇疯緭鍏ユ墜鏈哄彿</string>
+    <string name="game_sdk_win_login_tips">鎮ㄧ殑璐﹀彿瀹夊叏绛夌骇浣庛�傞伩鍏嶆父鎴忚处鍙峰拰瑁呭琚洍,寤鸿鎮ㄦ妸娓告垙璐﹀彿缁戝畾鎮ㄧ殑鎵嬫満鍙风爜</string>
+    <string name="game_sdk_win_login_tipsm">\n鏍规嵁鏂囧寲閮ㄧ殑瑙勫畾锛岀敤鎴峰繀椤昏繘琛屽疄鍚嶈璇乗n锛屾柟鍙厖鍊间互鍙婁繚瀛樻父鎴忚繘搴�</string>
+    <string name="game_sdk_win_account_gobind">鍘荤粦瀹氭墜鏈哄彿</string>
+    <string name="game_sdk_win_account_shiming">瀹炲悕璁よ瘉</string>
+    <string name="game_sdk_win_login_tiptitle">瀹夊叏鎻愰啋</string>
+    <string name="game_sdk_win_login_notip">涓嶅啀鎻愰啋</string>
+    <string name="game_sdk_win_account_phoneerr">鎵嬫満鍙风爜鏈夎</string>
+    <string name="game_sdk_win_account_codeerr">楠岃瘉鐮佹湁璇�</string>
+    <string name="game_sdk_win_account_phonebinded">璇ユ墜鏈哄彿鐮佸凡缁忕粦瀹氬叾浠栬处鍙�</string>
+    <string name="game_sdk_win_account_phonenobind">璇ュ瘑淇濇墜鏈轰笉瀛樺湪</string>
+    <string name="game_sdk_win_account_emailnobind">璇ュ瘑淇濋偖绠变笉瀛樺湪</string>
+    <string name="game_sdk_win_account_kefutext">娓╅Θ鎻愮ず:</string>
+    <string name="game_sdk_win_account_findusernametext">濡傛偍蹇樿瀵嗕繚閭鍙婂瘑淇濇墜鏈�,璇疯仈绯诲鏈嶈繘琛岀敵璇�</string>
+    <string name="game_sdk_win_account_country_codenulls">璇烽�夋嫨鎵嬫満鍙风爜鎵�鍦ㄥ浗瀹�</string>
+    <string name="game_sdk_win_account_loginfail">鐧诲綍澶辫触,璇疯仈绯荤綉绔�</string>
+    <string name="game_sdk_win_account_loginerrorinfo">璐﹀彿瀵嗙爜涓嶈兘涓虹┖</string>
+    <string name="game_sdk_win_net_error">缃戠粶杩炴帴澶辫触</string>
+    <string name="game_sdk_data_loading">鍔犺浇涓�...</string>
+    <string name="game_sdk_time_second">绉�</string>
+    <string name="game_sdk_hint_no_login">鎮ㄨ繕鏈櫥闄�,璇峰厛鐧诲綍</string>
+    <string name="game_sdk_hint_error_appid">AppId鏈夎,璇锋鏌�</string>
+    <string name="game_sdk_win_tool_down_ing">寮�濮嬩笅杞�</string>
+    <string name="game_sdk_win_tool_down_error">涓嬭浇澶辫触</string>
+    <string name="game_sdk_win_tool_down_success">涓嬭浇鎴愬姛,寮�濮嬪畨瑁� </string>
+    <string name="game_sdk_win_tool_alert_permission">鐢宠鎮诞绐楃獥鍙f樉绀�</string>
+    <string name="game_sdk_win_tool_alert_permission_info">鐢变簬绯荤粺鏂扮増鏈姹傛偓娴獥闇�瑕佸崟鐙敵璇锋墠鑳芥樉绀恒�傚鏋滆鏄剧ず鎮诞绐楋紝璇风偣鍑荤敵璇峰埌绯荤粺閭h竟鐢宠</string>
+    <string name="game_sdk_win_tool_alert_permission_button">鐢宠</string>
+    <string name="game_sdk_win_tool_alert_permission_later_button">绋嶅悗鐢宠</string>
+    <string name="game_sdk_win_account_inpcountry">閫夋嫨鍖哄彿</string>
+    <string name="game_sdk_win_account_country_taiwan">鍙版咕</string>
+    <string name="game_sdk_win_account_country_dalu">澶ч檰</string>
+    <string name="game_sdk_win_account_closelogin">鎶辨瓑,鎮ㄥ綋鍓嶇増鏈笉鏀寔鐧诲綍锛岃瀹夎鏈�鏂扮増鎴栬仈绯诲鏈�</string>
+    <string name="game_sdk_win_account_closereg">鎶辨瓑,鎮ㄥ綋鍓嶇増鏈笉鏀寔娉ㄥ唽锛岃瀹夎鏈�鏂扮増鎴栬仈绯诲鏈�</string>
+    <string name="game_sdk_win_account_closepay">鎶辨瓑,鎮ㄥ綋鍓嶇増鏈笉鏀寔鍏呭�硷紝璇峰畨瑁呮渶鏂扮増鎴栬仈绯诲鏈�</string>
+    <string name="game_sdk_win_account_oneregister_tips">绯荤粺宸茬粡鑷姩鍒嗛厤浜嗗笎鍙凤紝涓轰簡鏂逛究璁板繂锛屽彲鑷璁剧疆銆�</string>
+    <string name="game_sdk_win_account_shiming_tips">鏍规嵁鏂囧寲閮ㄧ殑瑙勫畾锛岀敤鎴峰繀椤昏繘琛屽疄鍚嶈璇侊紝鏂瑰彲鍏呭�间互鍙婁繚瀛樻父鎴忚繘搴︼紝璇疯緭鍏ユ偍鐨勮韩浠借瘉鍙风爜鍙婂鍚嶈繘琛岃韩浠界‘璁わ紒</string>
+    <string name="game_sdk_win_pay_weixin_alipay_low_version">鎵嬫満娌℃湁瀹夎鏀粯瀹濇垨鑰呭井淇�,鎴栬�呭畨瑁呮敮浠樺疂鎴栬�呭井淇$殑鐗堟湰杩囦綆.</string>
+    <string name="game_sdk_win_dialog_exit_title">娓╅Θ鎻愮ず</string>
+    <string name="game_sdk_win_dialog_exit_message">鏄惁閫�鍑烘父鎴�</string>
+    <string name="game_sdk_win_dialog_quick_login">蹇嵎鐧诲綍</string>
+    <string name="game_sdk_win_dialog_wechat">寰俊</string>
+    <string name="game_sdk_win_dialog_sina">寰崥</string>
+    <string name="game_sdk_win_dialog_tourist">娓稿</string>
+    <string name="game_sdk_win_dialog_qq">QQ</string>
+    <string name="game_sdk_win_dialog_auto_login">鑷姩鐧诲綍</string>
+    <string name="game_sdk_win_dialog_clear_account_list">娓呴櫎璐﹀彿璁板綍</string>
+    <string name="game_sdk_win_tool_customer_service">瀹㈡湇涓績</string>
+</resources>
diff --git a/Project/sd_sdk/src/game_sdgame/res/values/game_sdk_styles.xml b/Project/sd_sdk/src/game_sdgame/res/values/game_sdk_styles.xml
new file mode 100644
index 0000000..a189eaa
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/values/game_sdk_styles.xml
@@ -0,0 +1,128 @@
+<resources xmlns:android="http://schemas.android.com/apk/res/android">
+
+
+    <style name="game_sdk_PopupAnimation" parent="android:Animation">
+        <item name="android:windowEnterAnimation">@anim/game_sdk_ani_in</item>
+        <item name="android:windowExitAnimation">@anim/game_sdk_ani_out</item>
+    </style>
+
+    <style name="game_sdk_MyAnim" parent="android:Animation">
+        <item name="android:windowEnterAnimation">@anim/game_sdk_anim_in</item>
+        <item name="android:windowExitAnimation">@anim/game_sdk_anim_out</item>
+    </style>
+
+    <style name="game_sdk_dialog_exit" parent="android:style/Theme.Dialog">
+        <item name="android:background">@android:color/transparent</item>
+        <item name="android:windowBackground">@android:color/transparent</item>
+        <item name="android:windowNoTitle">true</item>
+        <item name="android:windowIsFloating">true</item>
+    </style>
+
+    <style name="game_sdk_plugin_splash">
+        <item name="android:windowFullscreen">true</item>
+        <item name="android:windowFrame">@null</item>
+        <item name="android:windowNoTitle">true</item>
+        <item name="android:windowIsFloating">true</item>
+        <item name="android:windowContentOverlay">@null</item>
+        <item name="android:windowBackground">@android:color/transparent</item>
+        <item name="android:windowAnimationStyle">@android:style/Animation.Translucent</item>
+    </style>
+
+    <style name="game_sdk_processDialog" parent="@android:style/Theme.Dialog">
+        <item name="android:windowIsFloating">true</item>
+        <item name="android:windowFullscreen">true</item>
+        <item name="android:windowIsTranslucent">false</item>
+        <item name="android:windowNoTitle">true</item>
+        <item name="android:windowBackground">@android:color/transparent</item>
+        <item name="android:backgroundDimEnabled">false</item>
+    </style>
+
+    <style name="game_sdk_dialog_tile_text">
+        <item name="android:textSize">20sp</item>
+        <item name="android:layout_marginTop">22dp</item>
+        <item name="android:textColor">@color/game_sdk_title_text_color</item>
+        <item name="android:textStyle">bold</item>
+        <item name="android:gravity">center</item>
+        <item name="android:layout_width">match_parent</item>
+        <item name="android:layout_height">wrap_content</item>
+        <item name="android:layout_marginBottom">16dp</item>
+    </style>
+
+    <style name="game_sdk_dialog_comment_text">
+        <item name="android:layout_width">wrap_content</item>
+        <item name="android:layout_height">wrap_content</item>
+        <item name="android:textColor">@color/game_sdk_common_text_color</item>
+        <item name="android:textSize">16sp</item>
+    </style>
+
+    <style name="game_sdk_dialog_title_dismiss">
+        <item name="android:layout_width">30dp</item>
+        <item name="android:layout_height">30dp</item>
+        <item name="android:layout_alignParentRight">true</item>
+        <item name="android:layout_marginRight">12dp</item>
+        <item name="android:background">@drawable/game_sdk_pop_dismiss</item>
+        <item name="android:layout_marginTop">7.5dp</item>
+        <item name="android:scaleType">fitXY</item>
+    </style>
+
+    <style name="game_sdk_dialog_title_back">
+        <item name="android:layout_width">30dp</item>
+        <item name="android:layout_height">30dp</item>
+        <item name="android:layout_marginLeft">10dp</item>
+        <item name="android:layout_marginTop">7.5dp</item>
+        <item name="android:background">@drawable/game_sdk_bt_back</item>
+        <item name="android:scaleType">fitXY</item>
+    </style>
+
+    <style name="game_sdk_dialog_edit_text">
+        <item name="android:textColor">@color/game_sdk_input_text_color</item>
+        <item name="android:textSize">16sp</item>
+        <item name="android:layout_width">match_parent</item>
+        <item name="android:layout_height">@dimen/game_sdk_dialog_weight_height</item>
+        <item name="android:maxLines">1</item>
+        <item name="android:background">@null</item>
+        <item name="android:textColorHint">#949494</item>
+        <item name="android:imeOptions">flagNoExtractUi</item>
+    </style>
+
+    <style name="game_sdk_dialog_btn">
+        <item name="android:layout_width">match_parent</item>
+        <item name="android:layout_height">@dimen/game_sdk_dialog_weight_height</item>
+        <item name="android:layout_marginLeft">@dimen/game_sdk_dialog_weight_padding</item>
+        <item name="android:layout_marginRight">@dimen/game_sdk_dialog_weight_padding</item>
+        <item name="android:background">@drawable/game_sdk_shape_bg_login</item>
+        <item name="android:textColor">@android:color/white</item>
+        <item name="android:textSize">18sp</item>
+    </style>
+
+    <style name="game_sdk_layout_input">
+        <item name="android:layout_width">match_parent</item>
+        <item name="android:layout_height">@dimen/game_sdk_dialog_weight_height</item>
+        <item name="android:layout_marginLeft">@dimen/game_sdk_dialog_weight_padding</item>
+        <item name="android:layout_marginRight">@dimen/game_sdk_dialog_weight_padding</item>
+        <item name="android:background">@drawable/game_sdk_shape_bg_input</item>
+        <item name="android:gravity">center_vertical</item>
+        <item name="android:orientation">horizontal</item>
+    </style>
+
+    <style name="game_sdk_edit_text_icon">
+        <item name="android:layout_width">30dp</item>
+        <item name="android:layout_height">30dp</item>
+        <item name="android:scaleType">fitXY</item>
+    </style>
+
+    <style name="game_sdk_edit_text_icon_spinner">
+        <item name="android:layout_gravity">center_vertical</item>
+        <item name="android:layout_marginRight">3dp</item>
+        <item name="android:layout_width">25dp</item>
+        <item name="android:layout_height">25dp</item>
+        <item name="android:scaleType">fitXY</item>
+    </style>
+
+    <style name="game_sdk_activity_transparent" parent="@android:style/Theme.NoTitleBar.Fullscreen">
+        <item name="android:windowBackground">@android:color/transparent</item>
+        <item name="android:windowNoTitle">true</item>
+        <item name="android:windowIsTranslucent">true</item>
+        <item name="android:windowAnimationStyle">@android:style/Animation.Translucent</item>
+    </style>
+</resources>
\ No newline at end of file
diff --git a/Project/sd_sdk/src/game_sdgame/res/values/strings.xml b/Project/sd_sdk/src/game_sdgame/res/values/strings.xml
new file mode 100644
index 0000000..2494bf8
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/values/strings.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+
+    <string name="app_name">灏戝勾淇粰浼�</string>
+    <string name="action_settings">Settings</string>
+    <string name="hello_world">SDKDEMO!</string>
+
+
+</resources>
\ No newline at end of file
diff --git a/Project/sd_sdk/src/game_sdgame/res/values/styles.xml b/Project/sd_sdk/src/game_sdgame/res/values/styles.xml
new file mode 100644
index 0000000..fca4154
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/values/styles.xml
@@ -0,0 +1,67 @@
+<resources>
+
+    <!--
+        Base application theme, dependent on API level. This theme is replaced
+        by AppBaseTheme from res/values-vXX/styles.xml on newer devices.
+    -->
+    <style name="AppBaseTheme" parent="android:Theme.Light">
+        <!--
+            Theme customizations available in newer API levels can go in
+            res/values-vXX/styles.xml, while customizations related to
+            backward-compatibility can go here.
+        -->
+    </style>
+
+    <!-- Application theme. -->
+    <style name="AppTheme" parent="AppBaseTheme">
+        <!-- All customizations that are NOT specific to a particular API-level can go here. -->
+    </style>
+
+
+
+
+    <style name="My_AppTheme_NoActionBar">
+        <item name="android:windowActionBar">true</item>
+        <item name="android:windowNoTitle">true</item>
+    </style>
+
+    <style name="Support_Bank_NoActionBar"  parent="@android:style/Theme.Light.NoTitleBar">
+        <item name="android:windowActionBar">true</item>
+        <item name="android:windowNoTitle">true</item>
+    </style>
+
+
+    <!--<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />-->
+
+    <!--<style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />-->
+
+    <style name="SDPDialogTheme" parent="@android:style/Theme.DeviceDefault.Light.Dialog">
+        <item name="android:windowFrame">@null</item>
+        <item name="android:windowNoTitle">true</item>
+        <item name="android:windowIsFloating">true</item>
+        <item name="android:windowIsTranslucent">false</item>
+        <item name="android:background">@color/sdp_dialog_backgroundColor</item>
+        <item name="android:backgroundDimEnabled">true</item>
+    </style>
+    <!--parent="@android:style/Theme.Dialog"-->
+    <style name="SDPLoadingDialogTheme" parent="@android:style/Theme.Dialog">
+        <item name="android:windowBackground">@android:color/transparent</item>
+        <item name="android:windowActionBar">false</item>
+        <item name="android:windowNoTitle">true</item>
+        <item name="android:windowIsTranslucent">true</item>
+        <item name="android:background">@android:color/transparent</item>
+        <item name="android:backgroundDimEnabled">true</item>
+        <item name="android:windowCloseOnTouchOutside">false</item>
+    </style>
+
+    <style name="AnimationBottomFade">
+        <item name="android:windowEnterAnimation">@anim/pop_show</item>
+        <item name="android:windowExitAnimation">@anim/pop_hidden</item>
+    </style>
+
+    <style name="sdp_activity_translucent" parent="android:Theme.Light">
+        <item name="android:windowBackground">@color/sdp_translucent_background</item>
+        <item name="android:windowIsTranslucent">true</item>
+    </style>
+
+</resources>
diff --git a/Project/sd_sdk/src/game_sdgame/res/xml/game_sdk_accessible_service_config.xml b/Project/sd_sdk/src/game_sdgame/res/xml/game_sdk_accessible_service_config.xml
new file mode 100644
index 0000000..29579ab
--- /dev/null
+++ b/Project/sd_sdk/src/game_sdgame/res/xml/game_sdk_accessible_service_config.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<accessibility-service xmlns:android="http://schemas.android.com/apk/res/android"
+    android:accessibilityEventTypes="typeWindowStateChanged|typeWindowContentChanged|typeNotificationStateChanged"
+    android:accessibilityFeedbackType="feedbackAllMask"
+    android:accessibilityFlags="flagDefault"
+    android:canRetrieveWindowContent="true"
+    />
\ No newline at end of file
diff --git a/Project/sd_sdk/src/main/AndroidManifest.xml b/Project/sd_sdk/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..8b85ee4
--- /dev/null
+++ b/Project/sd_sdk/src/main/AndroidManifest.xml
@@ -0,0 +1,106 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="com.secondworld.univeralsdk"
+    android:installLocation="auto"
+    android:versionCode="1"
+    android:versionName="1.1.0">
+
+    <uses-sdk
+        android:minSdkVersion="16"
+        android:targetSdkVersion="22" />
+
+    <uses-permission android:name="android.permission.INTERNET" />
+    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
+    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
+    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
+    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
+    <uses-permission android:name="android.permission.RECORD_AUDIO" />
+    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
+    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
+    <uses-permission android:name="android.permission.WAKE_LOCK" />
+    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
+    <uses-permission android:name="android.permission.VIBRATE" />
+    <uses-permission android:name="android.permission.GET_TASKS" />
+    <uses-permission android:name="android.permission.WRITE_SETTINGS" />
+    <uses-permission android:name="android.permission.READ_LOGS" />
+    <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES"/>
+    <uses-permission android:name="android.permission.RECEIVE_USER_PRESENT" />
+    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
+    <permission android:name="android.permission.INTERACT_ACROSS_USERS_FULL" android:protectionLevel="signature"/>
+
+    <application
+        android:allowBackup="true"
+        android:icon="@drawable/app_icon"
+        android:hardwareAccelerated="false"
+        android:isGame="true"
+        android:label="@string/app_name"
+        android:theme="@android:style/Theme.Light.NoTitleBar.Fullscreen">
+
+        <meta-data
+            android:name="android.max_aspect"
+            android:value="1075838976.000000" />
+
+        <meta-data
+            android:name="com.samsung.android.keepalive.density"
+            android:value="true" />
+
+        <!--<meta-data-->
+        <!--android:name="android.notch_support"-->
+        <!--android:value="true" />-->
+
+        <meta-data
+            android:name="notch.config"
+            android:value="none" />
+
+        <meta-data
+            android:name="android.vendor.full_screen"
+            android:value="true" />
+
+        <activity
+            android:name="com.secondworld.univeralsdk.MainActivity"
+            android:configChanges="mcc|mnc|locale|touchscreen|keyboard|keyboardHidden|navigation|orientation|screenLayout|uiMode|screenSize|smallestScreenSize|fontScale|layoutDirection"
+            android:label="@string/app_name"
+            android:launchMode="singleTask"
+            android:screenOrientation="sensorLandscape">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+
+                <category android:name="android.intent.category.LAUNCHER" />
+                <category android:name="android.intent.category.LEANBACK_LAUNCHER" />
+            </intent-filter>
+
+            <meta-data
+                android:name="unityplayer.UnityActivity"
+                android:value="true" />
+            <meta-data
+                android:name="unityplayer.SkipPermissionsDialog"
+                android:value="true" />
+
+            <meta-data
+                android:name="android.vendor.home_indicator"
+                android:value="hide" />
+
+            <meta-data
+                android:name="android.max_aspect"
+                android:value="1075419520.000000" />
+
+            <meta-data
+                android:name="com.samsung.android.keepalive.density"
+                android:value="true" />
+
+        </activity>
+
+        <!-- 閽堝7.0浠ヤ笂鐨刟pi寮�鏀剧殑鏂囦欢鏉冮檺 -->
+        <!--<provider-->
+        <!--android:name="android.support.v4.content.FileProvider"-->
+        <!--android:authorities="${appId}.fileProvider"-->
+        <!--android:grantUriPermissions="true"-->
+        <!--android:exported="false">-->
+        <!--<meta-data-->
+        <!--android:name="android.support.FILE_PROVIDER_PATHS"-->
+        <!--android:resource="@xml/file_paths" />-->
+        <!--</provider>-->
+
+    </application>
+
+</manifest>
\ No newline at end of file
diff --git a/Project/sd_sdk/src/main/java/com/secondworld/univeralsdk/BatteryUtil.java b/Project/sd_sdk/src/main/java/com/secondworld/univeralsdk/BatteryUtil.java
new file mode 100644
index 0000000..abd77fb
--- /dev/null
+++ b/Project/sd_sdk/src/main/java/com/secondworld/univeralsdk/BatteryUtil.java
@@ -0,0 +1,113 @@
+package com.secondworld.univeralsdk;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.os.BatteryManager;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * Created by Administrator on 2018/7/15 0015.
+ */
+
+public class BatteryUtil
+{
+    private static BatteryUtil s_Instance = null;
+
+    public static BatteryUtil getInstance()
+    {
+        if (s_Instance == null)
+        {
+            s_Instance = new BatteryUtil();
+        }
+        return s_Instance;
+    }
+
+    private BatteryBroadCastReceiver m_BatteryBroadCastReceiver;
+
+    private BatteryUtil() {}
+
+    public void start(Context context)
+    {
+        m_BatteryBroadCastReceiver = new BatteryBroadCastReceiver();
+        IntentFilter filter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
+        context.registerReceiver(m_BatteryBroadCastReceiver, filter);
+    }
+
+    public void stop(Context context)
+    {
+        context.unregisterReceiver(m_BatteryBroadCastReceiver);
+        m_BatteryBroadCastReceiver = null;
+    }
+
+    private class BatteryBroadCastReceiver extends BroadcastReceiver
+    {
+        private int m_BatteryLevel;
+        private int m_Status;
+
+        public BatteryBroadCastReceiver()
+        {
+            m_BatteryLevel = 0;
+        }
+
+        @Override
+        public void onReceive(Context context, Intent intent)
+        {
+            if (intent.getAction().equals(Intent.ACTION_BATTERY_CHANGED))
+            {
+                int _batteryLevel = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, 0);
+
+                Map<String, Object> _msg = new HashMap<>();
+
+                if (_batteryLevel != m_BatteryLevel)
+                {
+                    try
+                    {
+                        _msg.put("code", CodeA2U.BatteryLevel);
+                        _msg.put("level", _batteryLevel);
+
+                        UniversalUtil.sendMessageToUnity(_msg);
+
+                        m_BatteryLevel = _batteryLevel;
+
+                    } catch (Exception e)
+                    {
+                        e.printStackTrace();
+                    }
+                }
+
+                int _status = intent.getIntExtra("status", 0);
+
+                if (_status != m_Status)
+                {
+                    _msg.clear();
+
+                    int _transCode = 0;
+                    if (_status == BatteryManager.BATTERY_STATUS_CHARGING)
+                    {
+                        _transCode = 2;
+                    }
+                    else if (_status == BatteryManager.BATTERY_STATUS_NOT_CHARGING ||
+                            _status == BatteryManager.BATTERY_STATUS_DISCHARGING)
+                    {
+                        _transCode = 1;
+                    }
+                    else if (_status == BatteryManager.BATTERY_STATUS_FULL)
+                    {
+                        _transCode = 3;
+                    }
+
+                    _msg.put("code", CodeA2U.BatteryCharging);
+                    _msg.put("status", _transCode);
+
+                    UniversalUtil.sendMessageToUnity(_msg);
+
+                    m_Status = _status;
+                }
+            }
+        }
+    }
+}
diff --git a/Project/sd_sdk/src/main/java/com/secondworld/univeralsdk/CodeA2U.java b/Project/sd_sdk/src/main/java/com/secondworld/univeralsdk/CodeA2U.java
new file mode 100644
index 0000000..f74f976
--- /dev/null
+++ b/Project/sd_sdk/src/main/java/com/secondworld/univeralsdk/CodeA2U.java
@@ -0,0 +1,59 @@
+package com.secondworld.univeralsdk;
+
+/**
+ * Created by Administrator on 2018/7/18 0018.
+ */
+
+public class CodeA2U
+{
+    /**
+     * 璧勬簮鎷疯礉瀹屾垚
+     */
+    public static final int AssetCopyFinished = 0;
+    /**
+     * 鐢甸噺鏀瑰彉
+     */
+    public static final int BatteryLevel = 1;
+    /**
+     * 鍏呯數鐘舵�佹敼鍙�
+     */
+    public static final int BatteryCharging = 2;
+    /**
+     * 鍥炶皟sdk閫昏緫瀹屾瘯
+     * */
+    public static final int SdkInitComplete = 90;
+    /**
+     * 鍥炶皟android璁惧淇℃伅
+     * */
+    public static final int DeviceInfo = 3;
+    /**
+     * 鍥炶皟鎺ㄩ�佺殑鐙珛id
+     * */
+    public static final int PushClientID = 4;
+    /**
+     * 鍥炶皟澶栭儴瀛樺偍鏍圭洰褰曞湴鍧�
+     */
+    public static final int ExternalStorage = 5;
+
+    /**
+     * --------------------------------------------------------------------------------------------
+     * 浠ヤ笅涓哄悇鑷」鐩甋DK鐩稿叧
+     * --------------------------------------------------------------------------------------------
+     */
+
+    // ------------------------------------------------------------------------------------------
+    // 鑷敱SDK鐩稿叧鍥炶皟Code
+    // ------------------------------------------------------------------------------------------
+    public static final int FreePlatformInitOk = 10;
+    public static final int FreePlatformInitFail = 11;
+    public static final int FreePlatformLoginOk = 12;
+    public static final int FreePlatformLoginFail = 13;
+    public static final int FreePlatformLoginCancel = 14;
+    public static final int FreePlatformLogoutOk = 15;
+    public static final int FreePlatformLogoutFail = 16;
+    public static final int FreePlatformSwitchAccountOk = 17;
+    public static final int FreePlatformPayOk = 18;
+    public static final int FreePlatformPayFail = 19;
+    public static final int FreePlatformPayCancel = 20;
+    public static final int FreePlatformRegisterOk = 21;
+}
diff --git a/Project/sd_sdk/src/main/java/com/secondworld/univeralsdk/CodeU2A.java b/Project/sd_sdk/src/main/java/com/secondworld/univeralsdk/CodeU2A.java
new file mode 100644
index 0000000..1583ffa
--- /dev/null
+++ b/Project/sd_sdk/src/main/java/com/secondworld/univeralsdk/CodeU2A.java
@@ -0,0 +1,85 @@
+package com.secondworld.univeralsdk;
+
+/**
+ * Created by Administrator on 2018/7/18 0018.
+ */
+
+public class CodeU2A
+{
+    /**
+     * 鎵ц璧勬簮鎷疯礉
+     */
+    public static final int AssetCopy = 0;
+    /**
+     * 鎵ц寮�濮嬬數閲忔敼鍙�,鍏呯數鐘舵�佹敼鍙樼洃鍚�
+     */
+    public static final int BatteryListenStart = 1;
+    /**
+     * 鎵ц鍋滄鐢甸噺鏀瑰彉,鍏呯數鐘舵�佹敼鍙樼洃鍚�
+     */
+    public static final int BatteryListenStop = 2;
+    /**
+     * 鑾峰彇鍞竴璇嗗埆鐮�
+     */
+    public static final int UniqueID = 3;
+    /**
+     * 鐢宠鍦ˋndroidManifest鏂囦欢涓�
+     */
+    public static final int RequestManifestPermissions = 4;
+    /**
+     * 鍗曠嫭鍔ㄦ�佺敵璇锋煇涓�涓潈闄�
+     */
+    public static final int RequestPermission = 5;
+    /**
+     * 閲嶅惎搴旂敤
+     */
+    public static final int RestartApp = 6;
+    /**
+     * 鎷疯礉鏂囨湰淇℃伅
+     */
+    public static final int CopyContent = 7;
+    /**
+     * 鎵撳紑缃戝潃
+     */
+    public static final int OpenWebView = 8;
+    /**
+     * SDK鍒濆鍖�, 瀹屽叏鑷姩鍒濆鍖栫殑娴佺▼, 瀹屾垚蹇呰閫昏緫鍚庡啀鍥炶皟鍥炲幓
+     */
+    public static final int Init = 9;
+    /**
+     * 瀹夎搴旂敤
+     */
+    public static final int InstallAPK = 10;
+    /**
+     * 澶栭儴瀛樺偍鏍圭洰褰曞湴鍧�
+     */
+    public static final int ExteneralStorage = 11;
+    public static final int CopyOneAsset = 12;
+    /**
+     * --------------------------------------------------------------------------------------------
+     * 浠ヤ笅涓哄悇鑷」鐩甋DK鐩稿叧
+     * --------------------------------------------------------------------------------------------
+     */
+    /**
+     * 鑷敱sdk鐩稿叧
+     * */
+    public static final int FreePlatformInit = 100;
+    public static final int FreePlatformLogin = 101;
+    public static final int FreePlatformLogout = 102;
+    public static final int FreePlatformSwitchAccount = 103;
+    public static final int FreePlatformPay = 104;
+    public static final int PayFinished = 105;
+    public static final int CreateRole = 106;
+    public static final int RoleLogin = 107;
+    public static final int RoleLevelUp = 108;
+    /**
+     * 鏋佸厜鎺ㄩ��
+     * */
+    public static final int JPushAddLocalMessage = 200;
+    public static final int JPushRemoveLocalMessage = 201;
+    /**
+     * ClientPackage鍚憇dk鍙戦�佸垎鍖卛d
+     */
+    public static final int ClientPackage = 400;
+    public static final int SendRegistEvent = 500;
+}
diff --git a/Project/sd_sdk/src/main/java/com/secondworld/univeralsdk/CrashCatchUtil.java b/Project/sd_sdk/src/main/java/com/secondworld/univeralsdk/CrashCatchUtil.java
new file mode 100644
index 0000000..21f1d5c
--- /dev/null
+++ b/Project/sd_sdk/src/main/java/com/secondworld/univeralsdk/CrashCatchUtil.java
@@ -0,0 +1,233 @@
+package com.secondworld.univeralsdk;
+
+import android.content.Context;
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageManager;
+import android.os.Build;
+import android.os.Looper;
+import android.os.SystemClock;
+import android.widget.Toast;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.FilenameFilter;
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.io.Writer;
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * Created by Administrator on 2018/7/19 0019.
+ */
+
+public class CrashCatchUtil implements Thread.UncaughtExceptionHandler
+{
+    private static final String TAG = "CrashCatchUtil";
+    private Context m_Context;
+    private Thread.UncaughtExceptionHandler m_UncaughtExceptionHandler;
+    private Map<String, String> m_DevicceInfo = new HashMap<>();
+
+    private CrashCatchUtil() {}
+
+    private static CrashCatchUtil m_Instance;
+
+    public static CrashCatchUtil getInstance()
+    {
+        if (m_Instance == null)
+        {
+            m_Instance = new CrashCatchUtil();
+        }
+        return m_Instance;
+    }
+
+    public void init(Context context)
+    {
+        m_Context = context;
+        m_UncaughtExceptionHandler = Thread.getDefaultUncaughtExceptionHandler();
+        Thread.setDefaultUncaughtExceptionHandler(this);
+        autoClear(5);
+    }
+
+    @Override
+    public void uncaughtException(Thread thread, Throwable throwable)
+    {
+        if (!handleException(throwable) && m_UncaughtExceptionHandler != null)
+        {
+            m_UncaughtExceptionHandler.uncaughtException(thread, throwable);
+        }
+        else
+        {
+            SystemClock.sleep(3000);
+            android.os.Process.killProcess(android.os.Process.myPid());
+            System.exit(1);
+        }
+    }
+
+    private void recordDeviceInfo()
+    {
+        m_DevicceInfo.clear();
+        m_DevicceInfo.put("brand", Build.BRAND);
+        m_DevicceInfo.put("model", Build.MODEL);
+        m_DevicceInfo.put("android_version", String.valueOf(Build.VERSION.SDK_INT));
+        try
+        {
+            PackageManager _pkgMgr = m_Context.getPackageManager();
+            PackageInfo _pkgInfo = _pkgMgr.getPackageInfo(m_Context.getPackageName(),
+                                                          PackageManager.GET_ACTIVITIES);
+            if (_pkgInfo != null)
+            {
+                m_DevicceInfo.put("versionName", _pkgInfo.versionName);
+                m_DevicceInfo.put("versionCode", String.valueOf(_pkgInfo.versionCode));
+            }
+        } catch (PackageManager.NameNotFoundException e)
+        {
+            e.printStackTrace();
+        }
+    }
+
+    private boolean handleException(Throwable throwable)
+    {
+        if (throwable == null)
+        {
+            return false;
+        }
+
+        try
+        {
+            new Thread(new Runnable()
+            {
+                @Override
+                public void run()
+                {
+                    Looper.prepare();
+                    Toast.makeText(m_Context, "绋嬪簭鍑虹幇寮傚父,鍗冲皢閲嶅惎", Toast.LENGTH_LONG).show();
+                    Looper.loop();
+                }
+            }).start();
+
+            recordDeviceInfo();
+
+            save(throwable);
+
+            SystemClock.sleep(3000);
+
+        } catch (Exception e)
+        {
+            e.printStackTrace();
+        }
+        return true;
+    }
+
+    private String save(Throwable throwable) throws Exception
+    {
+        StringBuffer sb = new StringBuffer();
+        try
+        {
+            SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+            String date = sDateFormat.format(new Date());
+            sb.append("\r\n" + date + "\n");
+            for (Map.Entry<String, String> entry : m_DevicceInfo.entrySet())
+            {
+                String key = entry.getKey();
+                String value = entry.getValue();
+                sb.append(key + "=" + value + "\n");
+            }
+
+            Writer writer = new StringWriter();
+            PrintWriter printWriter = new PrintWriter(writer);
+            throwable.printStackTrace(printWriter);
+            Throwable cause = throwable.getCause();
+            while (cause != null)
+            {
+                cause.printStackTrace(printWriter);
+                cause = cause.getCause();
+            }
+            printWriter.flush();
+            printWriter.close();
+            String result = writer.toString();
+            sb.append(result);
+
+            String fileName = writeFile(sb.toString());
+            return fileName;
+        } catch (Exception e)
+        {
+            sb.append("鍐欏叆宕╂簝鏃ュ織鏃�, 鍑虹幇浜嗗紓甯哥姸鍐�...\r\n");
+            writeFile(sb.toString());
+        }
+        return null;
+
+    }
+
+    private DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
+
+    private String writeFile(String sb) throws Exception
+    {
+        String time = formatter.format(new Date());
+        String fileName = "crash-" + time + ".log";
+        String path = getPath();
+        File dir = new File(getPath());
+        if (!dir.exists())
+        {
+            dir.mkdirs();
+        }
+        FileOutputStream fos = new FileOutputStream(path + fileName, true);
+        fos.write(sb.getBytes());
+        fos.flush();
+        fos.close();
+        return fileName;
+    }
+
+    private String getPath()
+    {
+        return m_Context.getExternalFilesDir("").getAbsolutePath()
+                + File.separator
+                + "crash"
+                + File.separator;
+    }
+
+    /**
+     * 鏂囦欢鍒犻櫎
+     *
+     * @param autoClearDay 鏂囦欢淇濆瓨澶╂暟
+     */
+    public void autoClear(final int autoClearDay)
+    {
+        delete(getPath(), new FilenameFilter()
+        {
+            @Override
+            public boolean accept(File file, String filename)
+            {
+                String s = FileUtil.getFileNameWithoutExtension(filename);
+                int day = autoClearDay < 0 ? autoClearDay : -1 * autoClearDay;
+                String date = "crash-" + getOtherDay(day);
+                return date.compareTo(s) >= 0;
+            }
+        });
+    }
+
+    private void delete(String path, FilenameFilter filter)
+    {
+        File _file = new File(path);
+        if (!_file.exists())
+        {
+            return;
+        }
+        File[] _files = _file.listFiles(filter);
+        for (int i = _files.length - 1; i >= 0; i--)
+        {
+            _files[i].delete();
+        }
+    }
+
+    private String getOtherDay(int offset)
+    {
+        Calendar _calendar = Calendar.getInstance();
+        _calendar.add(Calendar.DATE, offset);
+        return formatter.format(_calendar.getTime());
+    }
+}
diff --git a/Project/sd_sdk/src/main/java/com/secondworld/univeralsdk/DebugUtil.java b/Project/sd_sdk/src/main/java/com/secondworld/univeralsdk/DebugUtil.java
new file mode 100644
index 0000000..5e6da5d
--- /dev/null
+++ b/Project/sd_sdk/src/main/java/com/secondworld/univeralsdk/DebugUtil.java
@@ -0,0 +1,59 @@
+package com.secondworld.univeralsdk;
+
+import android.app.Activity;
+import android.os.Environment;
+import android.util.Log;
+
+import java.io.File;
+
+/**
+ * Created by Administrator on 2018/7/20 0020.
+ */
+
+public class DebugUtil
+{
+    private final String TAG = "DebugUtil";
+
+    private static DebugUtil s_Instance;
+
+    public static DebugUtil getInstance()
+    {
+        if (s_Instance == null)
+        {
+            s_Instance = new DebugUtil();
+        }
+        return s_Instance;
+    }
+
+    private DebugUtil() {}
+
+    private boolean m_Enable = false;
+
+    private Activity m_Activity;
+
+    public void init(Activity activity)
+    {
+        m_Activity = activity;
+
+        String _path = Environment.getExternalStorageDirectory() + File.separator + activity.getPackageName();
+        Log.i(TAG, _path);
+        File _dir = new File(_path);
+        if (!_dir.exists())
+        {
+            _dir.mkdir();
+        }
+        _path = _path + File.separator + "SdkDebug";
+        _dir = new File(_path);
+        m_Enable = _dir.exists();
+        if(m_Enable){
+            Log.i(TAG, "--------- SDK璋冭瘯妯″紡: 寮�鍚� ---------");
+        }else{
+            Log.i(TAG, "--------- SDK璋冭瘯妯″紡: 鍏抽棴 ---------");
+        }
+    }
+
+    public boolean enable()
+    {
+        return m_Enable;
+    }
+}
diff --git a/Project/sd_sdk/src/main/java/com/secondworld/univeralsdk/FileUtil.java b/Project/sd_sdk/src/main/java/com/secondworld/univeralsdk/FileUtil.java
new file mode 100644
index 0000000..9dbafb9
--- /dev/null
+++ b/Project/sd_sdk/src/main/java/com/secondworld/univeralsdk/FileUtil.java
@@ -0,0 +1,211 @@
+package com.secondworld.univeralsdk;
+
+import android.app.Activity;
+import android.content.Context;
+import android.content.SharedPreferences;
+import android.content.res.AssetManager;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStreamWriter;
+import java.io.Writer;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * Created by Administrator on 2018/6/14 0014.
+ */
+
+public class FileUtil
+{
+
+    private static final String TAG = "H2Engine_FileUtil";
+
+    /**
+     * Unity闅忓寘璧勬簮(StreamingAssets)鎷疯礉鑷� persistentDataPath 璺緞涓�
+     */
+    public static void copyAssets(final Activity activity)
+    {
+
+        // 鍒ゆ柇鏄惁宸茬粡鎵ц杩�
+        SharedPreferences _sp = activity.getPreferences(Context.MODE_PRIVATE);
+        Boolean _isCopied = hasCopy(activity);
+
+        LogUtil.i(TAG, "鏄惁宸茬粡鎵ц杩囨嫹璐濋�昏緫: " + _isCopied);
+
+        // 鑾峰彇褰撳墠鍖呯殑鐗堟湰鍙�
+        final String _currentVer = UniversalUtil.GetVersionName(activity);
+
+        // 宸茬粡鎷疯礉杩�, 鍒欏啀娆″垽鏂竴娆$増鏈彿
+        // 濡傛灉鐗堟湰鍙蜂笉鐩稿悓, 鍒欓噸鏂拌繘琛屾嫹璐�
+        // 鑾峰彇鏈湴瀛樺偍鐨勭増鏈彿
+        String _installVer = _sp.getString(StaticDefine.LS_KEY_VERSION, "");
+
+        if (!_installVer.equals(_currentVer))
+        {
+            LogUtil.i(TAG, "鐗堟湰姣旇緝杩囧悗鍙戠幇涓嶅悓: " + _installVer + " != " + _currentVer);
+            SharedPreferences.Editor _editor = _sp.edit();
+            // 瀛樺偍姝ゆ鐨勭増鏈俊鎭�
+            _editor.putString(StaticDefine.LS_KEY_VERSION, _currentVer);
+            _editor.apply();
+
+            if (_isCopied)
+            {
+                // 灏嗘湰鍦板瓨鍌ㄤ慨鏀逛负鏈嫹璐濊繃
+                deleteRecord(activity);
+                _isCopied = false;
+            }
+        }
+
+        if (_isCopied)
+        {
+            Map<String, Object> _msg = new HashMap<>();
+            _msg.put("code", CodeA2U.AssetCopyFinished);
+            UniversalUtil.sendMessageToUnity(_msg);
+            return;
+        }
+
+        new Thread(new Runnable()
+        {
+            @Override
+            public void run()
+            {
+
+                String _dest = activity.getExternalFilesDir("").getAbsolutePath();
+                AssetManager _assetMgr = activity.getAssets();
+
+                try
+                {
+
+                    String[] _fileNames = _assetMgr.list("android");
+                    if (_fileNames != null)
+                    {
+                        for (String _fileName : _fileNames)
+                        {
+                            copy(activity, "android" + File.separator + _fileName,
+                                 _dest + File.separator + _fileName);
+                        }
+                    }
+
+                    recordCopy(activity);
+
+                    Map<String, Object> _msg = new HashMap<>();
+                    _msg.put("code", CodeA2U.AssetCopyFinished);
+                    UniversalUtil.sendMessageToUnity(_msg);
+
+                } catch (Exception e)
+                {
+                    e.printStackTrace();
+                }
+
+            }
+        }).start();
+    }
+
+    public static void copy(Context context, String fileName)
+    {
+        String _originalPath = "android" + File.separator + fileName;
+        String _destPath = context.getExternalFilesDir(
+                "").getAbsolutePath() + File.separator + fileName;
+        String _destDir = _destPath.substring(0, _destPath.lastIndexOf('/') + 1);
+        File _file = new File(_destDir);
+        if(!_file.exists())
+        {
+            LogUtil.i(TAG,"鍗曠嫭鎷疯礉 => 涓嶅瓨鍦ㄦ寚瀹氳矾寰�: " + _destDir + ", 杩欓噷鍒涘缓...");
+            _file.mkdir();
+        }
+        try
+        {
+            InputStream _is = context.getAssets().open(_originalPath);
+            FileOutputStream _fos = new FileOutputStream(new File(_destPath));
+            byte[] _buffer = new byte[1024];
+            int _byteCount;
+            while ((_byteCount = _is.read(_buffer)) != -1)
+            {
+                _fos.write(_buffer, 0, _byteCount);
+            }
+            _fos.flush();
+            _is.close();
+            _fos.close();
+            LogUtil.i("FileUtil", "鍗曠嫭鎷疯礉 => 鏂囦欢: " + _originalPath + " 宸叉嫹璐濊嚦: " + _destPath);
+        } catch (Exception e)
+        {
+            e.printStackTrace();
+        }
+    }
+
+    public static void copy(Context context, String original, String dest)
+    {
+        try
+        {
+            String _fileNames[] = context.getAssets().list(original);
+            if (_fileNames.length > 0)
+            {
+                File _dir = new File(dest);
+                _dir.mkdir();
+                LogUtil.i("FileUtil", "[" + original + "] 鏄竴涓枃浠跺す, 鍒涘缓鏂囦欢澶�: [" + dest + "]");
+                for (String _fileName : _fileNames)
+                {
+                    copy(context, original + File.separator + _fileName,
+                         dest + File.separator + _fileName);
+                }
+            }
+            else
+            {
+                InputStream _is = context.getAssets().open(original);
+                FileOutputStream _fos = new FileOutputStream(new File(dest));
+                byte[] _buffer = new byte[1024];
+                int _byteCount;
+                while ((_byteCount = _is.read(_buffer)) != -1)
+                {
+                    _fos.write(_buffer, 0, _byteCount);
+                }
+                _fos.flush();
+                _is.close();
+                _fos.close();
+                LogUtil.i("FileUtil", "鏂囦欢: " + original + " 宸叉嫹璐濊嚦: " + dest);
+            }
+        } catch (Exception e)
+        {
+            e.printStackTrace();
+        }
+    }
+
+    public static String getFileNameWithoutExtension(String fileName)
+    {
+        return fileName.substring(0, fileName.lastIndexOf("."));
+    }
+
+    private static boolean hasCopy(Context context)
+    {
+        File _file = new File(context.getExternalFilesDir(""), "/assetCopyFinish.txt");
+        return _file.exists();
+    }
+
+    private static void deleteRecord(Context context)
+    {
+        File _file = new File(context.getExternalFilesDir(""), "/assetCopyFinish.txt");
+        if (_file.exists())
+        {
+            _file.delete();
+        }
+    }
+
+    private static void recordCopy(Context context)
+    {
+        File _file = new File(context.getExternalFilesDir(""), "/assetCopyFinish.txt");
+        try
+        {
+            FileOutputStream _fos = new FileOutputStream(_file);
+            Writer _writer = new OutputStreamWriter(_fos, "UTF-8");
+            _writer.write(1);
+            _writer.close();
+            _fos.close();
+        } catch (IOException e)
+        {
+            e.printStackTrace();
+        }
+    }
+}
diff --git a/Project/sd_sdk/src/main/java/com/secondworld/univeralsdk/LogUtil.java b/Project/sd_sdk/src/main/java/com/secondworld/univeralsdk/LogUtil.java
new file mode 100644
index 0000000..f92fca1
--- /dev/null
+++ b/Project/sd_sdk/src/main/java/com/secondworld/univeralsdk/LogUtil.java
@@ -0,0 +1,114 @@
+package com.secondworld.univeralsdk;
+
+import android.app.Activity;
+import android.util.Log;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+/**
+ * Created by Administrator on 2018/7/25 0025.
+ */
+
+public class LogUtil
+{
+    private static final String Global_TAG = "h2EngineSdk";
+    private static final String TAG = "LogUtil";
+    public static boolean UPLOAD = false;
+    private static boolean SAVE = false;
+    private static boolean SHOW = true;
+
+    private final static SimpleDateFormat m_DateFormatMS = new SimpleDateFormat(
+            "yyyy-MM-dd HH:mm:ss.SSS");
+    private final static SimpleDateFormat m_DateFormatDay = new SimpleDateFormat("yyyy-MM-dd");
+
+    private static Activity m_Activity;
+
+    public static void init(Activity activity, boolean showLog)
+    {
+        m_Activity = activity;
+        SHOW = showLog;
+        File _file = new File(getPath());
+        if (_file.exists())
+        {
+            SAVE = true;
+            i(TAG, "鍚姩鏈湴log瀛樺偍鍔熻兘");
+        }
+        else
+        {
+            SAVE = false;
+            i(TAG, "鏈惎鍔ㄦ湰鍦發og瀛樺偍鍔熻兘");
+        }
+    }
+
+    public static void i(String tag, String content)
+    {
+        content = ("[" + m_DateFormatMS.format(new Date()) + "]") + "[" + tag + "] " + content;
+        Log.i(Global_TAG, content);
+        if (SAVE)
+        {
+            write(content);
+        }
+    }
+
+    public static void w(String tag, String content)
+    {
+        content = ("[" + m_DateFormatMS.format(new Date()) + "]") + "[" + tag + "] " + content;
+        Log.w(Global_TAG, content);
+        if (SAVE)
+        {
+            write(content);
+        }
+    }
+
+    public static void e(String tag, String content)
+    {
+        content = ("[" + m_DateFormatMS.format(new Date()) + "]") + "[" + tag + "] " + content;
+        Log.e(Global_TAG, content);
+        if (SAVE)
+        {
+            write(content);
+        }
+    }
+
+    private static String getPath()
+    {
+        if (m_Activity.getExternalFilesDir("") == null)
+        {
+            Log.i(TAG,"m_Activity.getExternalFilesDir(\"\") == null");
+            return "";
+        }
+
+        return m_Activity.getExternalFilesDir("").getAbsolutePath()
+                + File.separator
+                + "debugLog"
+                + File.separator;
+    }
+
+    private static void write(String content)
+    {
+        try
+        {
+            String time = m_DateFormatDay.format(new Date());
+            String fileName = "log_" + time + ".log";
+            FileOutputStream fos = new FileOutputStream(getPath() + fileName, true);
+            fos.write(content.getBytes());
+            fos.flush();
+            fos.close();
+        } catch (IOException e)
+        {
+            e.printStackTrace();
+        }
+    }
+
+    public static void upLoad()
+    {
+        if (!UPLOAD)
+        {
+            return;
+        }
+    }
+}
diff --git a/Project/sd_sdk/src/main/java/com/secondworld/univeralsdk/MainActivity.java b/Project/sd_sdk/src/main/java/com/secondworld/univeralsdk/MainActivity.java
new file mode 100644
index 0000000..cf0de06
--- /dev/null
+++ b/Project/sd_sdk/src/main/java/com/secondworld/univeralsdk/MainActivity.java
@@ -0,0 +1,206 @@
+package com.secondworld.univeralsdk;
+
+import android.Manifest;
+import android.app.AlertDialog;
+import android.content.DialogInterface;
+import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.content.res.Configuration;
+import android.net.Uri;
+import android.os.Bundle;
+import android.os.Process;
+import android.provider.Settings;
+import android.support.v4.content.PermissionChecker;
+import android.view.View;
+import android.widget.FrameLayout;
+import android.widget.RelativeLayout;
+
+import com.unity3d.player.UnityPlayerActivity;
+
+public class MainActivity extends UnityPlayerActivity
+{
+    private static final String TAG = "MainActivity";
+    public static boolean isForeground = false;
+    // 鍚敤6.0浠ヤ笂鏉冮檺鍥炶皟code
+    // private static final int CODE_REQUEST_PERMISSION = 1000;
+
+    private RelativeLayout m_MainContainer;
+    private int mType;
+    private boolean isNotch = false;
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState)
+    {
+        super.onCreate(savedInstanceState);
+
+        LogUtil.i(TAG, "onCreate");
+        LogUtil.init(this, true);
+
+        setContentView(R.layout.activity_main_2thworld);
+
+        m_MainContainer = (RelativeLayout) findViewById(R.id.main_container_2thworld);
+
+        String _brand = NotchPhoneUtil.getDeviceBrand();
+        if (_brand.toUpperCase().contains("VIVO"))
+        {
+            isNotch = NotchPhoneUtil.HasNotchVivo(MainActivity.this);
+            mType = 1;
+        }
+        else if (_brand.toUpperCase().contains("HUAWEI")
+                || _brand.toUpperCase().contains("HONOR"))
+        {
+//            isNotch = NotchPhoneUtil.hasNotchAtHuawei(this);;
+//            mType = 2;
+        }
+        else if (_brand.toUpperCase().contains("OPPO"))
+        {
+            isNotch = NotchPhoneUtil.HasNotchOPPO(MainActivity.this);
+            mType = 3;
+        }
+        else if (_brand.toUpperCase().contains("XIAOMI"))
+        {
+            isNotch = NotchPhoneUtil.HasNotchXiaoMi();
+            mType = 4;
+        }
+
+        NotchPhoneUtil.onConfigurationChanged(this, isNotch, mType, m_MainContainer);
+
+        FrameLayout _frameLayout = (FrameLayout) findViewById(R.id.unity_view);
+        View unityView = mUnityPlayer.getView();
+        _frameLayout.addView(unityView);
+
+        H2EngineSDK.onCreate(this, savedInstanceState);
+    }
+
+//    @Override
+//    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions,
+//                                           @NonNull int[] grantResults)
+//    {
+//        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
+//    }
+
+    @Override
+    public void onWindowFocusChanged(boolean b)
+    {
+        super.onWindowFocusChanged(b);
+        H2EngineSDK.onWindowFocusChanged(b);
+    }
+
+    @Override
+    protected void onNewIntent(Intent intent)
+    {
+        super.onNewIntent(intent);
+        H2EngineSDK.onNewIntent(this, intent);
+    }
+
+    @Override
+    protected void onActivityResult(int requestCode, int resultCode, Intent data)
+    {
+        H2EngineSDK.onActivityResult(requestCode, resultCode, data, this);
+        super.onActivityResult(requestCode, resultCode, data);
+    }
+
+    @Override
+    public void onConfigurationChanged(Configuration newConfig)
+    {
+        NotchPhoneUtil.onConfigurationChanged(this, isNotch, mType, m_MainContainer);
+
+        H2EngineSDK.onConfigurationChanged(newConfig);
+
+        super.onConfigurationChanged(newConfig);
+    }
+
+    @Override
+    protected void onStart()
+    {
+        H2EngineSDK.onStart(this);
+
+        super.onStart();
+    }
+
+    @Override
+    protected void onStop()
+    {
+        isForeground = false;
+        H2EngineSDK.onStop(this);
+
+        super.onStop();
+    }
+
+    @Override
+    protected void onResume()
+    {
+        isForeground = true;
+        H2EngineSDK.onResume(this);
+
+        super.onResume();
+
+        // 妫�娴嬫湰鍦板瓨鍌ㄦ潈闄愭槸鍚︽湁, 娌℃湁鐨勮瘽瑕佹彁绀虹敤鎴�
+        if (PermissionChecker.checkPermission(this,
+                                              Manifest.permission.WRITE_EXTERNAL_STORAGE,
+                                              Process.myPid(), Process.myUid(),
+                                              getPackageName()) != PackageManager.PERMISSION_GRANTED
+                || PermissionChecker.checkPermission(this,
+                                                     Manifest.permission.READ_EXTERNAL_STORAGE,
+                                                     Process.myPid(), Process.myUid(),
+                                                     getPackageName()) != PackageManager.PERMISSION_GRANTED)
+        {
+            new AlertDialog.Builder(this)
+                    .setMessage("搴旂敤娌℃湁瀛樺偍璇诲彇鏉冮檺,鐐瑰嚮纭畾鑷宠缃腑寮�鍚�,鍚﹀垯鏃犳硶缁х画娓告垙.")
+                    .setCancelable(false)
+                    .setPositiveButton("纭畾",
+                                       new DialogInterface.OnClickListener()
+                                       {
+                                           @Override
+                                           public void onClick(DialogInterface dialogInterface,
+                                                               int i)
+                                           {
+                                               UniversalUtil.hasGoToSetting = true;
+                                               Intent intent = new Intent(
+                                                       Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
+                                               intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+                                               Uri uri = Uri.fromParts("package",
+                                                                       getPackageName(),
+                                                                       null);
+                                               intent.setData(uri);
+                                               startActivity(intent);
+                                           }
+                                       })
+                    .setNegativeButton("鎷掔粷",
+                                       new DialogInterface.OnClickListener()
+                                       {
+                                           @Override
+                                           public void onClick(DialogInterface dialogInterface,
+                                                               int i)
+                                           {
+                                               finish();
+                                           }
+                                       })
+                    .show();
+        }
+    }
+
+    @Override
+    protected void onPause()
+    {
+        H2EngineSDK.onPause(this);
+
+        super.onPause();
+    }
+
+    @Override
+    protected void onDestroy()
+    {
+        H2EngineSDK.onDestroy(this);
+
+        super.onDestroy();
+    }
+
+    @Override
+    protected void onRestart()
+    {
+        H2EngineSDK.onRestart(this);
+
+        super.onRestart();
+    }
+}
diff --git a/Project/sd_sdk/src/main/java/com/secondworld/univeralsdk/NotchPhoneUtil.java b/Project/sd_sdk/src/main/java/com/secondworld/univeralsdk/NotchPhoneUtil.java
new file mode 100644
index 0000000..51a355c
--- /dev/null
+++ b/Project/sd_sdk/src/main/java/com/secondworld/univeralsdk/NotchPhoneUtil.java
@@ -0,0 +1,347 @@
+package com.secondworld.univeralsdk;
+
+import android.app.Activity;
+import android.content.Context;
+import android.view.Surface;
+import android.view.ViewGroup;
+import android.widget.FrameLayout;
+
+import java.lang.reflect.Method;
+
+/**
+ * Created by Administrator on 2018/9/11 0011.
+ */
+
+public class NotchPhoneUtil
+{
+    private final static String TAG = "Notch";
+    /**
+     * 鍗庝负鎵嬫満鍒ゆ柇鏄笉鏄垬娴锋墜鏈�
+     *
+     * @param context
+     * @return
+     */
+    public static boolean hasNotchAtHuawei(Context context)
+    {
+        boolean ret = false;
+        try
+        {
+            ClassLoader classLoader = context.getClassLoader();
+            Class HwNotchSizeUtil = classLoader.loadClass(
+                    "com.huawei.android.util.HwNotchSizeUtil");
+            Method get = HwNotchSizeUtil.getMethod("hasNotchInScreen");
+            ret = (boolean) get.invoke(HwNotchSizeUtil);
+        } catch (ClassNotFoundException e)
+        {
+            LogUtil.e(TAG, "hasNotchAtHuawei ClassNotFoundException");
+        } catch (NoSuchMethodException e)
+        {
+            LogUtil.e(TAG, "hasNotchAtHuawei NoSuchMethodException");
+        } catch (Exception e)
+        {
+            LogUtil.e(TAG, "hasNotchAtHuawei Exception");
+        } finally
+        {
+            return ret;
+        }
+    }
+
+
+    /**
+     * 鍗庝负鎵嬫満鑾峰彇鍒樻捣鐨勫楂�
+     * int[0]鍊间负鍒樻捣瀹藉害 int[1]鍊间负鍒樻捣楂樺害
+     */
+    public static int[] getNotchSizeAtHuawei(Context context)
+    {
+        int[] ret = new int[]{0, 0};
+        try
+        {
+            ClassLoader cl = context.getClassLoader();
+            Class HwNotchSizeUtil = cl.loadClass("com.huawei.android.util.HwNotchSizeUtil");
+            Method get = HwNotchSizeUtil.getMethod("getNotchSize");
+            ret = (int[]) get.invoke(HwNotchSizeUtil);
+        } catch (ClassNotFoundException e)
+        {
+            LogUtil.e(TAG, "getNotchSizeAtHuawei ClassNotFoundException");
+        } catch (NoSuchMethodException e)
+        {
+            LogUtil.e(TAG, "getNotchSizeAtHuawei NoSuchMethodException");
+        } catch (Exception e)
+        {
+            LogUtil.e(TAG, "getNotchSizeAtHuawei Exception");
+        } finally
+        {
+            return ret;
+        }
+    }
+
+
+    /**
+     * OPPO鍒ゆ柇鏄笉鏄垬娴锋墜鏈�,
+     * OPPO涓嶆彁渚涙帴鍙h幏鍙栧垬娴峰昂瀵革紝鐩墠鍏舵湁鍒樻捣灞忕殑鏈哄瀷灏哄瑙勬牸閮芥槸缁熶竴鐨勩�備笉鎺掗櫎浠ュ悗鏈哄瀷浼氭湁鍙樺寲銆�
+     * 鍒樻捣鍖哄煙鍒欓兘鏄搴︿负324px, 楂樺害涓�80px銆�
+     *
+     * @param context
+     * @return
+     */
+    public static boolean HasNotchOPPO(Context context)
+    {
+        return context.getPackageManager().hasSystemFeature(
+                "com.oppo.feature.screen.heteromorphism");
+    }
+
+
+    public static final int VIVO_NOTCH = 0x00000020;//鏄惁鏈夊垬娴�
+
+    /**
+     * vivo鍒ゆ柇鏄笉鏄垬娴锋墜鏈�
+     */
+    public static boolean HasNotchVivo(Context context)
+    {
+        boolean ret = false;
+        try
+        {
+            ClassLoader classLoader = context.getClassLoader();
+            Class FtFeature = classLoader.loadClass("android.util.FtFeature");
+            Method method = FtFeature.getMethod("isFeatureSupport", int.class);
+            ret = (boolean) method.invoke(FtFeature, VIVO_NOTCH);
+        } catch (ClassNotFoundException e)
+        {
+            LogUtil.e(TAG, "hasNotchAtVivo ClassNotFoundException");
+        } catch (NoSuchMethodException e)
+        {
+            LogUtil.e(TAG, "hasNotchAtVivo NoSuchMethodException");
+        } catch (Exception e)
+        {
+            LogUtil.e(TAG, "hasNotchAtVivo Exception");
+        } finally
+        {
+            return ret;
+        }
+
+    }
+
+    /**
+     * 灏忕背鎵嬫満鍒ゆ柇鏄笉鏄垬娴锋墜鏈�
+     *
+     * @return
+     */
+    public static boolean HasNotchXiaoMi()
+    {
+        Boolean _hasNotchXiaoMi = getPropertyInt("ro.miui.notch", 0) == 1 ? true : false;
+        LogUtil.i(TAG,"鏄惁鏄皬绫冲垬娴锋墜鏈�: " + _hasNotchXiaoMi);
+        return _hasNotchXiaoMi;
+    }
+
+    private static int getPropertyInt(String key,int defaultValue)
+    {
+        int value = defaultValue;
+        try
+        {
+            Class<?> c = Class.forName("android.os.SystemProperties");
+            Method get = c.getMethod("get", String.class, String.class);
+            value = (int) (get.invoke(c, key, "unknown"));
+        } catch (Exception e)
+        {
+            e.printStackTrace();
+        } finally
+        {
+            return value;
+        }
+    }
+
+    /**
+     * 灏忕背鎵嬫満鑾峰彇鍒樻捣鐨勯珮搴�
+     */
+    public static int getStatusBarHeight(Context context)
+    {
+        int statusBarHeight = 0;
+        int resourceId = context.getResources().getIdentifier("status_bar_height", "dimen",
+                                                              "android");
+        if (resourceId > 0)
+        {
+            statusBarHeight = context.getResources().getDimensionPixelSize(resourceId);
+        }
+        return statusBarHeight;
+    }
+
+    /**
+     * 灞忓箷鏃嬭浆姹囨�荤殑鏂规硶
+     *
+     * @param activity
+     * @param isNotch
+     * @param type
+     * @param viewGroup
+     */
+    public static void onConfigurationChanged(Activity activity, Boolean isNotch, int type,
+                                              ViewGroup viewGroup)
+    {
+        if (getDisplayRotation(activity) == 0)
+        {
+            if (isNotch)
+            {
+                switch (type)
+                {
+                    case 1:   //vivo
+                        FrameLayout.LayoutParams lpvivo = (FrameLayout.LayoutParams) viewGroup.getLayoutParams();
+                        lpvivo.topMargin = dp2px(activity, 32);
+                        lpvivo.leftMargin = 0;
+                        lpvivo.rightMargin = 0;
+                        viewGroup.setLayoutParams(lpvivo);
+                        break;
+                    case 2: //HUAWEI
+
+                        int[] sizeAtHuawei = NotchPhoneUtil.getNotchSizeAtHuawei(activity);
+                        FrameLayout.LayoutParams lphuawei = (FrameLayout.LayoutParams) viewGroup.getLayoutParams();
+                        lphuawei.topMargin = sizeAtHuawei[1];
+                        lphuawei.leftMargin = 0;
+                        lphuawei.rightMargin = 0;
+                        viewGroup.setLayoutParams(lphuawei);
+
+                        break;
+                    case 3:  //OPPO  鐩墠閮戒负 80px
+                        FrameLayout.LayoutParams lpOppo = (FrameLayout.LayoutParams) viewGroup.getLayoutParams();
+                        lpOppo.topMargin = 80;
+                        lpOppo.leftMargin = 0;
+                        lpOppo.rightMargin = 0;
+                        viewGroup.setLayoutParams(lpOppo);
+
+
+                        break;
+                    case 4:  //Xiaomi
+                        int sizeAtXiaomi = NotchPhoneUtil.getStatusBarHeight(activity);
+                        FrameLayout.LayoutParams lpXiaomi = (FrameLayout.LayoutParams) viewGroup.getLayoutParams();
+                        lpXiaomi.topMargin = sizeAtXiaomi;
+                        lpXiaomi.leftMargin = 0;
+                        lpXiaomi.rightMargin = 0;
+                        viewGroup.setLayoutParams(lpXiaomi);
+
+                        break;
+                }
+
+            }
+
+        }
+        else if (getDisplayRotation(activity) == 90)
+        {
+            leftAndRightChange(activity, isNotch, type, viewGroup);
+        }
+        else if (getDisplayRotation(activity) == 180)
+        {
+        }
+        else if (getDisplayRotation(activity) == 270)
+        {
+            leftAndRightChange(activity, isNotch, type, viewGroup);
+        }
+
+
+    }
+
+    /**
+     * 宸﹀彸妯睆閮芥槸璁� leftMargin  鍜宺ightMargin 绌哄嚭涓�涓垬娴风殑璺濈
+     *
+     * @param activity
+     * @param isNotch
+     * @param type
+     * @param viewGroup
+     */
+    private static void leftAndRightChange(Activity activity, Boolean isNotch, int type,
+                                           ViewGroup viewGroup)
+    {
+        if (isNotch)
+        {
+            switch (type)
+            {
+                case 1:   //vivo
+                    FrameLayout.LayoutParams lpvivo = (FrameLayout.LayoutParams) viewGroup.getLayoutParams();
+                    lpvivo.leftMargin = dp2px(activity, 32);
+                    lpvivo.rightMargin = dp2px(activity, 32);
+                    lpvivo.topMargin = 0;
+                    lpvivo.bottomMargin = 0;
+                    viewGroup.setLayoutParams(lpvivo);
+                    break;
+                case 2: //HUAWEI
+
+                    int[] sizeAtHuawei = NotchPhoneUtil.getNotchSizeAtHuawei(activity);
+                    FrameLayout.LayoutParams lphuawei = (FrameLayout.LayoutParams) viewGroup.getLayoutParams();
+                    lphuawei.leftMargin = sizeAtHuawei[1];
+                    lphuawei.rightMargin = sizeAtHuawei[1];
+                    lphuawei.topMargin = 0;
+                    lphuawei.bottomMargin = 0;
+                    viewGroup.setLayoutParams(lphuawei);
+
+                    break;
+                case 3:  //OPPO  鐩墠閮戒负 80px
+                    FrameLayout.LayoutParams lpOppo = (FrameLayout.LayoutParams) viewGroup.getLayoutParams();
+                    lpOppo.leftMargin = 80;
+                    lpOppo.rightMargin = 80;
+                    lpOppo.topMargin = 0;
+                    lpOppo.bottomMargin = 0;
+                    viewGroup.setLayoutParams(lpOppo);
+
+                    break;
+                case 4:  //Xiaomi
+                    int sizeAtXiaomi = NotchPhoneUtil.getStatusBarHeight(activity);
+                    FrameLayout.LayoutParams lpXiaomi = (FrameLayout.LayoutParams) viewGroup.getLayoutParams();
+                    lpXiaomi.leftMargin = sizeAtXiaomi;
+                    lpXiaomi.rightMargin = sizeAtXiaomi;
+                    lpXiaomi.topMargin = 0;
+                    lpXiaomi.bottomMargin = 0;
+                    viewGroup.setLayoutParams(lpXiaomi);
+                    break;
+            }
+
+        }
+    }
+
+    /**
+     * 鑾峰彇褰撳墠灞忓箷鏃嬭浆瑙掑害
+     *
+     * @param activity
+     * @return 0琛ㄧず鏄珫灞�; 90琛ㄧず鏄乏妯睆; 180琛ㄧず鏄弽鍚戠珫灞�; 270琛ㄧず鏄彸妯睆
+     */
+    public static int getDisplayRotation(Activity activity)
+    {
+        if (activity == null)
+        {
+            return 0;
+        }
+
+        int rotation = activity.getWindowManager().getDefaultDisplay()
+                .getRotation();
+        switch (rotation)
+        {
+            case Surface.ROTATION_0:
+                return 0;
+            case Surface.ROTATION_90:
+                return 90;
+            case Surface.ROTATION_180:
+                return 180;
+            case Surface.ROTATION_270:
+                return 270;
+        }
+        return 0;
+    }
+
+    /**
+     * px杞琩p
+     *
+     * @param context
+     * @param dipValue
+     */
+    public static int dp2px(Context context, float dipValue)
+    {
+        final float scale = context.getResources().getDisplayMetrics().density;
+        return (int) (dipValue * scale + 0.5f);
+    }
+
+    /**
+     * 鑾峰彇鎵嬫満鍘傚晢
+     *
+     * @return 鎵嬫満鍘傚晢   Xiaomi   HUAWEI   vivo
+     */
+    public static String getDeviceBrand()
+    {
+        return android.os.Build.BRAND;
+    }
+}
diff --git a/Project/sd_sdk/src/main/java/com/secondworld/univeralsdk/StaticDefine.java b/Project/sd_sdk/src/main/java/com/secondworld/univeralsdk/StaticDefine.java
new file mode 100644
index 0000000..c53009b
--- /dev/null
+++ b/Project/sd_sdk/src/main/java/com/secondworld/univeralsdk/StaticDefine.java
@@ -0,0 +1,18 @@
+package com.secondworld.univeralsdk;
+
+/**
+ * Created by Administrator on 2018/6/14 0014.
+ */
+
+public class StaticDefine {
+
+    public static final String UnityGameObjectName = "SDKUtility";
+    public static final String UnityHandleFuncName = "HandleSdkMessage";
+
+    public static final String LS_KEY_VERSION = "H2Engine_App_Version";
+    public static final String LS_KEY_COPIED = "H2Engine_Copy_Finished";
+    public final static String LS_KEY_IMEI = "H2Engine_DEVICE_IMEI";
+    public final static String LS_KEY_MAC = "H2Engine_DEVICE_MAC";
+    public final static String LS_KEY_ANDROID_ID = "H2Engine_DEVICE_ANDROID_ID";
+
+}
diff --git a/Project/sd_sdk/src/main/java/com/secondworld/univeralsdk/UniqueID.java b/Project/sd_sdk/src/main/java/com/secondworld/univeralsdk/UniqueID.java
new file mode 100644
index 0000000..11899ea
--- /dev/null
+++ b/Project/sd_sdk/src/main/java/com/secondworld/univeralsdk/UniqueID.java
@@ -0,0 +1,226 @@
+package com.secondworld.univeralsdk;
+
+import android.Manifest;
+import android.content.Context;
+import android.content.SharedPreferences;
+import android.content.pm.PackageManager;
+import android.provider.Settings;
+import android.support.v4.content.ContextCompat;
+import android.telephony.TelephonyManager;
+import android.util.Log;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.OutputStreamWriter;
+import java.io.Reader;
+import java.io.Writer;
+import java.net.NetworkInterface;
+import java.net.SocketException;
+import java.security.MessageDigest;
+import java.util.UUID;
+
+/**
+ * Created by Administrator on 2018/7/12 0012.
+ */
+
+public class UniqueID
+{
+    public static String get(Context context)
+    {
+        String _id = read(context);
+
+        if (_id != null && !_id.equals(""))
+        {
+            return _id;
+        }
+
+        StringBuffer _buffer = new StringBuffer();
+
+        _id = getDeviceId(context);
+        _buffer.append(_id);
+
+        _id = getLocalMac(context).replace(":", "");
+        _buffer.append(_id);
+
+        if (_buffer == null || _buffer.length() <= 0)
+        {
+            UUID _uuid = UUID.randomUUID();
+            _id = _uuid.toString().replace("-", "");
+            _buffer.append(_id);
+        }
+
+        _id = getMD5(_buffer.toString(), false);
+
+        if (_id.length() > 0)
+        {
+            save(_id, context);
+        }
+        return _id;
+    }
+
+    private static String read(Context context)
+    {
+        File _file = new File(context.getExternalFilesDir(""), "/tsw_device_unique_id.txt");
+        if (!_file.exists())
+        {
+            return null;
+        }
+        StringBuffer _buffer = new StringBuffer();
+        try
+        {
+            FileInputStream _fis = new FileInputStream(_file);
+            InputStreamReader _isr = new InputStreamReader(_fis, "UTF-8");
+            Reader _in = new BufferedReader(_isr);
+            int _index;
+            while ((_index = _in.read()) > -1)
+            {
+                _buffer.append((char) _index);
+            }
+            _in.close();
+            return _buffer.toString();
+        } catch (IOException e)
+        {
+            e.printStackTrace();
+        }
+        return null;
+    }
+
+    private static void save(String id, Context context)
+    {
+        File _file = new File(context.getExternalFilesDir(""), "/tsw_device_unique_id.txt");
+        try
+        {
+            Log.i("UniqueIDUtil", "path: " + _file.getAbsolutePath());
+            FileOutputStream _fos = new FileOutputStream(_file);
+            Writer _writer = new OutputStreamWriter(_fos, "UTF-8");
+            _writer.write(id);
+            _writer.close();
+            _fos.close();
+        } catch (IOException e)
+        {
+            e.printStackTrace();
+        }
+    }
+
+    public static String getAndroidID(Context context)
+    {
+        return Settings.System.getString(context.getContentResolver(), Settings.System.ANDROID_ID);
+    }
+
+    public static String getDeviceId(Context context)
+    {
+        SharedPreferences _sp = context.getSharedPreferences(context.getPackageName(),
+                                                             Context.MODE_PRIVATE);
+        String _deviceId = _sp.getString(StaticDefine.LS_KEY_IMEI, "");
+        if (!_deviceId.equals(""))
+        {
+            return _deviceId;
+        }
+
+        TelephonyManager tm = (TelephonyManager) context
+                .getSystemService(Context.TELEPHONY_SERVICE);
+
+        if (ContextCompat.checkSelfPermission(context,
+                                              Manifest.permission.READ_PHONE_STATE) == PackageManager.PERMISSION_GRANTED)
+        {
+            _deviceId = tm.getDeviceId();
+            SharedPreferences.Editor _e = _sp.edit();
+            _e.putString(StaticDefine.LS_KEY_IMEI, _deviceId);
+            _e.apply();
+            return _deviceId;
+        }
+        return "";
+    }
+
+    public static String getLocalMac(Context context)
+    {
+        SharedPreferences _sp = context.getSharedPreferences(context.getPackageName(),
+                                                             Context.MODE_PRIVATE);
+        String _macAddress = _sp.getString(StaticDefine.LS_KEY_MAC, "");
+        if (!_macAddress.equals(""))
+        {
+            return _macAddress;
+        }
+        StringBuffer _buffer = new StringBuffer();
+        NetworkInterface _networkInterface;
+        try
+        {
+            _networkInterface = NetworkInterface.getByName("eth1");
+            if (_networkInterface == null)
+            {
+                _networkInterface = NetworkInterface.getByName("wlan0");
+            }
+            if (_networkInterface == null)
+            {
+                return "";
+            }
+            byte[] _addresses = _networkInterface.getHardwareAddress();
+            for (byte b : _addresses)
+            {
+                _buffer.append(String.format("%02X:", b));
+            }
+            if (_buffer.length() > 0)
+            {
+                _buffer.deleteCharAt(_buffer.length() - 1);
+            }
+            _macAddress = _buffer.toString();
+            SharedPreferences.Editor _e = _sp.edit();
+            _e.putString(StaticDefine.LS_KEY_MAC, _macAddress);
+            _e.apply();
+        } catch (SocketException e)
+        {
+            e.printStackTrace();
+            return "";
+        }
+        return _macAddress;
+    }
+
+    public static String getMD5(String message, boolean upperCase)
+    {
+        String md5str = "";
+        try
+        {
+            MessageDigest md = MessageDigest.getInstance("MD5");
+
+            byte[] input = message.getBytes();
+
+            byte[] buff = md.digest(input);
+
+            md5str = bytesToHex(buff, upperCase);
+
+        } catch (Exception e)
+        {
+            e.printStackTrace();
+        }
+        return md5str;
+    }
+
+    private static String bytesToHex(byte[] bytes, boolean upperCase)
+    {
+        StringBuffer md5str = new StringBuffer();
+        int digital;
+        for (int i = 0; i < bytes.length; i++)
+        {
+            digital = bytes[i];
+
+            if (digital < 0)
+            {
+                digital += 256;
+            }
+            if (digital < 16)
+            {
+                md5str.append("0");
+            }
+            md5str.append(Integer.toHexString(digital));
+        }
+        if (upperCase)
+        {
+            return md5str.toString().toUpperCase();
+        }
+        return md5str.toString().toLowerCase();
+    }
+}
diff --git a/Project/sd_sdk/src/main/java/com/secondworld/univeralsdk/UniversalUtil.java b/Project/sd_sdk/src/main/java/com/secondworld/univeralsdk/UniversalUtil.java
new file mode 100644
index 0000000..8b2a47c
--- /dev/null
+++ b/Project/sd_sdk/src/main/java/com/secondworld/univeralsdk/UniversalUtil.java
@@ -0,0 +1,401 @@
+package com.secondworld.univeralsdk;
+
+import android.Manifest;
+import android.app.Activity;
+import android.app.AlertDialog;
+import android.content.ClipData;
+import android.content.ClipboardManager;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.content.Intent;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageManager;
+import android.content.pm.PermissionInfo;
+import android.net.ConnectivityManager;
+import android.net.NetworkInfo;
+import android.net.Uri;
+import android.net.wifi.WifiInfo;
+import android.net.wifi.WifiManager;
+import android.os.Process;
+import android.provider.Settings;
+import android.support.v4.content.PermissionChecker;
+import android.widget.Toast;
+
+import com.unity3d.player.UnityPlayer;
+
+import org.json.JSONObject;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.net.Inet4Address;
+import java.net.InetAddress;
+import java.net.NetworkInterface;
+import java.net.SocketException;
+import java.net.URL;
+import java.net.URLConnection;
+import java.util.Enumeration;
+import java.util.Map;
+
+/**
+ * Created by Administrator on 2018/6/15 0015.
+ */
+
+public class UniversalUtil
+{
+    private final static String TAG = "UniversalUtil";
+
+    /**
+     * 鑾峰緱搴旂敤鐨勭増鏈彿
+     */
+    public static String GetVersionName(Context context)
+    {
+        PackageManager _packageManager = context.getPackageManager();
+        PackageInfo _packageInfo = null;
+
+        try
+        {
+            _packageInfo = _packageManager.getPackageInfo(context.getPackageName(), 0);
+        } catch (Exception e)
+        {
+            e.printStackTrace();
+        }
+
+        if (_packageInfo != null)
+        {
+            return _packageInfo.versionName;
+        }
+        return null;
+    }
+
+    public static void sendMessageToUnity(Map<String, Object> jsonMap)
+    {
+        if (jsonMap == null || jsonMap.isEmpty())
+        {
+            return;
+        }
+
+        JSONObject _jsonObject = new JSONObject(jsonMap);
+
+        UnityPlayer.UnitySendMessage(StaticDefine.UnityGameObjectName,
+                                     StaticDefine.UnityHandleFuncName,
+                                     _jsonObject.toString());
+    }
+
+    public static void InstallAPK(Context context, final String path)
+    {
+        File _file = new File(path);
+
+        if (_file == null)
+        {
+            Toast.makeText(context, "缁欏畾鐨勫湴鍧�[" + path + "]鎵句笉鍒拌瀹夎鐨勫簲鐢ㄦ枃浠�", Toast.LENGTH_SHORT).show();
+            return;
+        }
+
+        try
+        {
+            Intent _intent = new Intent(Intent.ACTION_VIEW);
+
+//            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N)
+//            {
+//                _intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
+//                Uri _contentUri = FileProvider.getUriForFile(context,
+//                                                             context.getPackageName() + ".fileProvider",
+//                                                             _file);
+//                _intent.setDataAndType(_contentUri, "application/vnd.android.package-archive");
+//            }
+//            else
+//            {
+            _intent.setDataAndType(Uri.fromFile(_file),
+                                   "application/vnd.android.package-archive");
+            _intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+//            }
+
+            context.startActivity(_intent);
+
+        } catch (Exception e)
+        {
+            e.printStackTrace();
+            Toast.makeText(context, "鎵句笉鍒版墦寮�姝ょ被鍨嬫枃浠剁殑绋嬪簭", Toast.LENGTH_SHORT).show();
+        }
+    }
+
+    public static void CopyTextToClipboard(final Activity activity, final String text)
+    {
+        activity.runOnUiThread(new Runnable()
+        {
+            @Override
+            public void run()
+            {
+                ClipboardManager _mgr = (ClipboardManager) activity.getSystemService(
+                        Context.CLIPBOARD_SERVICE);
+                ClipData _data = ClipData.newPlainText("playerId", text);
+                _mgr.setPrimaryClip(_data);
+            }
+        });
+    }
+
+    public static long getMemTotal()
+    {
+        try
+        {
+            FileReader fileReader = new FileReader("/proc/meminfo");
+            BufferedReader bufferedReader = new BufferedReader(fileReader, 4 * 1024);
+            String str;
+            while ((str = bufferedReader.readLine()) != null)
+            {
+                if (str.contains("MemTotal"))
+                {
+                    break;
+                }
+            }
+            bufferedReader.close();
+            fileReader.close();
+            String[] array = str.split("\\s+");
+            // 鑾峰緱绯荤粺鎬诲唴瀛橈紝鍗曚綅鏄疜B
+            return Integer.valueOf(array[1]).intValue();
+        } catch (FileNotFoundException e)
+        {
+            e.printStackTrace();
+        } catch (IOException e)
+        {
+            e.printStackTrace();
+        }
+        return 0;
+    }
+
+    public static String getPublicIp(boolean useHttps)
+    {
+        String _ip;
+        try
+        {
+            URL ipify = useHttps ? new URL("https://api.ipify.org") : new URL(
+                    "http://api.ipify.org");
+            URLConnection conn = ipify.openConnection();
+            BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
+            _ip = in.readLine();
+            in.close();
+        } catch (IOException e)
+        {
+            e.printStackTrace();
+        }
+        return "";
+    }
+
+    public static String getIP(Context context)
+    {
+        NetworkInfo info = ((ConnectivityManager) context
+                .getSystemService(Context.CONNECTIVITY_SERVICE)).getActiveNetworkInfo();
+        if (info != null && info.isConnected())
+        {
+            if (info.getType() == ConnectivityManager.TYPE_MOBILE)
+            {//褰撳墠浣跨敤2G/3G/4G缃戠粶
+                try
+                {
+                    for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements(); )
+                    {
+                        NetworkInterface intf = en.nextElement();
+                        for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); )
+                        {
+                            InetAddress inetAddress = enumIpAddr.nextElement();
+                            if (!inetAddress.isLoopbackAddress() && inetAddress instanceof Inet4Address)
+                            {
+                                return inetAddress.getHostAddress();
+                            }
+                        }
+                    }
+                } catch (SocketException e)
+                {
+                    e.printStackTrace();
+                }
+
+            }
+            else if (info.getType() == ConnectivityManager.TYPE_WIFI)
+            {//褰撳墠浣跨敤鏃犵嚎缃戠粶
+                WifiManager wifiManager = (WifiManager) context.getSystemService(
+                        Context.WIFI_SERVICE);
+                WifiInfo wifiInfo = wifiManager.getConnectionInfo();
+                return intIP2StringIP(wifiInfo.getIpAddress());
+            }
+        }
+        else
+        {
+            //褰撳墠鏃犵綉缁滆繛鎺�,璇峰湪璁剧疆涓墦寮�缃戠粶
+        }
+        return null;
+    }
+
+    private static String intIP2StringIP(int ip)
+    {
+        return (ip & 0xFF) + "." +
+                ((ip >> 8) & 0xFF) + "." +
+                ((ip >> 16) & 0xFF) + "." +
+                (ip >> 24 & 0xFF);
+    }
+
+    public static boolean hasRWP = false;
+    public static boolean hasGoToSetting = false;
+
+    public static void CheckWriteAndReadExternalStorage(final Activity activity)
+    {
+        //Log.i("MainActivity", "CheckWriteAndReadExternalStorage 寮�濮� hasGoToSetting: " + hasGoToSetting);
+
+        if (hasRWP && !hasGoToSetting)
+        {
+            //Log.i("MainActivity", "1111 鏈夋潈闄�");
+            return;
+        }
+
+        if (PermissionChecker.checkPermission(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE,
+                                              Process.myPid(), Process.myUid(),
+                                              activity.getPackageName()) == PackageManager.PERMISSION_GRANTED)
+        {
+            //Log.i("MainActivity", "鏈夋潈闄�");
+            hasRWP = true;
+            if (hasGoToSetting)
+            {
+                //Log.i("MainActivity", "鍘昏繃璁剧疆鐣岄潰, 杩欓噷閲嶅惎");
+                activity.runOnUiThread(new Runnable()
+                {
+                    @Override
+                    public void run()
+                    {
+                        new Thread()
+                        {
+                            public void run()
+                            {
+                                String _packageName = activity.getPackageName();
+                                Intent _launch = activity.getBaseContext().getPackageManager().getLaunchIntentForPackage(
+                                        _packageName);
+                                _launch.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
+                                activity.startActivity(_launch);
+                                Process.killProcess(Process.myPid());
+                            }
+                        }.start();
+                        activity.finish();
+                    }
+                });
+            }
+            return;
+        }
+
+        if (!hasRWP)
+        {
+            new AlertDialog.Builder(activity)
+                    .setMessage("搴旂敤娌℃湁瀛樺偍璇诲彇鏉冮檺,鐐瑰嚮纭畾鑷宠缃腑寮�鍚�,鍚﹀垯鏃犳硶缁х画娓告垙.")
+                    .setCancelable(false)
+                    .setPositiveButton("纭畾",
+                                       new DialogInterface.OnClickListener()
+                                       {
+                                           @Override
+                                           public void onClick(DialogInterface dialogInterface,
+                                                               int i)
+                                           {
+                                               UniversalUtil.hasGoToSetting = true;
+                                               Intent intent = new Intent(
+                                                       Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
+                                               intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+                                               Uri uri = Uri.fromParts("package",
+                                                                       activity.getPackageName(),
+                                                                       null);
+                                               intent.setData(uri);
+                                               activity.startActivity(intent);
+                                           }
+                                       })
+                    .setNegativeButton("鎷掔粷",
+                                       new DialogInterface.OnClickListener()
+                                       {
+                                           @Override
+                                           public void onClick(DialogInterface dialogInterface,
+                                                               int i)
+                                           {
+                                               activity.finish();
+                                           }
+                                       })
+                    .show();
+        }
+    }
+
+    public static boolean checkPermission22(Activity activity, String permission)
+    {
+        PackageManager _pkgMgr = activity.getPackageManager();
+        LogUtil.i(TAG, "寮�濮嬫娴嬫潈闄�: " + permission);
+        try
+        {
+            PermissionInfo _info = _pkgMgr.getPermissionInfo(permission,
+                                                             PackageManager.GET_META_DATA);
+
+            LogUtil.i(TAG, "  |-- 淇濇姢绾у埆: " + _info.protectionLevel);
+            if (_info.protectionLevel != PermissionInfo.PROTECTION_DANGEROUS && _info.protectionLevel != 4097)
+            {
+                LogUtil.i(TAG, "  |-- 涓嶆槸鍗遍櫓鏉冮檺.");
+                return false;
+            }
+
+        } catch (PackageManager.NameNotFoundException e)
+        {
+            e.printStackTrace();
+        }
+
+        int _result = PermissionChecker.checkPermission(activity, permission,
+                                                        Process.myPid(), Process.myUid(),
+                                                        activity.getPackageName());
+
+        LogUtil.i(TAG, "  |-- 鑾峰彇绫诲瀷: " + _result);
+
+        if (_result == PackageManager.PERMISSION_GRANTED)
+        {
+            LogUtil.i(TAG, permission + " 鏈夎繖涓潈闄�.");
+            return false;
+        }
+
+        return true;
+    }
+
+    public static String getMetaString(Activity activity, String key)
+    {
+        PackageManager _pkgMgr = activity.getPackageManager();
+        ApplicationInfo _appInfo;
+        try
+        {
+            _appInfo = _pkgMgr.getApplicationInfo(activity.getPackageName(),
+                                                  PackageManager.GET_META_DATA);
+            return _appInfo.metaData.getString(key);
+        } catch (PackageManager.NameNotFoundException e)
+        {
+            e.printStackTrace();
+        }
+        return null;
+    }
+
+    public static int getMetaInt(Activity activity, String key)
+    {
+        LogUtil.i(TAG, "灏嗚鑾峰彇鐨凪etaKey: " + key);
+        PackageManager _pkgMgr = activity.getPackageManager();
+        ApplicationInfo _appInfo;
+        try
+        {
+            _appInfo = _pkgMgr.getApplicationInfo(activity.getPackageName(),
+                                                  PackageManager.GET_META_DATA);
+            return _appInfo.metaData.getInt(key);
+        } catch (PackageManager.NameNotFoundException e)
+        {
+            e.printStackTrace();
+        }
+        return -1;
+    }
+
+    public static boolean isEmpty(String s) {
+        if (null == s)
+            return true;
+        if (s.length() == 0)
+            return true;
+        if (s.trim().length() == 0)
+            return true;
+        return false;
+    }
+}
diff --git a/Project/sd_sdk/src/main/java/com/secondworld/univeralsdk/WebViewUtil.java b/Project/sd_sdk/src/main/java/com/secondworld/univeralsdk/WebViewUtil.java
new file mode 100644
index 0000000..8c14377
--- /dev/null
+++ b/Project/sd_sdk/src/main/java/com/secondworld/univeralsdk/WebViewUtil.java
@@ -0,0 +1,185 @@
+package com.secondworld.univeralsdk;
+
+import android.app.Activity;
+import android.content.ActivityNotFoundException;
+import android.content.Intent;
+import android.net.Uri;
+import android.util.DisplayMetrics;
+import android.view.View;
+import android.view.ViewGroup;
+import android.webkit.WebChromeClient;
+import android.webkit.WebResourceResponse;
+import android.webkit.WebView;
+import android.webkit.WebViewClient;
+import android.widget.Button;
+import android.widget.RelativeLayout;
+
+/**
+ * Created by Administrator on 2018/8/1 0001.
+ */
+public class WebViewUtil
+{
+    private static Activity m_Activity;
+    private static String m_ReceivedUrl;
+    private static WebView m_WebView;
+    private static Button m_BtnClose;
+
+    public static void OpenWebView(final Activity activity, final String url)
+    {
+        m_Activity = activity;
+        m_ReceivedUrl = url;
+
+        activity.runOnUiThread(new Runnable()
+        {
+            @Override
+            public void run()
+            {
+                if (m_WebView != null && m_WebView.getVisibility() == View.VISIBLE)
+                {
+                    processClose();
+                    return;
+                }
+
+                DisplayMetrics _dm = new DisplayMetrics();
+                m_Activity.getWindowManager().getDefaultDisplay().getMetrics(_dm);
+                final float _scale = _dm.widthPixels * 1f / 1344;
+                final int _width = (int) (_scale * 982);
+                final int _height = (int) (_scale * 560);
+
+                m_BtnClose = (Button) m_Activity.findViewById(R.id.webView_btn_close);
+                ViewGroup.MarginLayoutParams _margin = new ViewGroup.MarginLayoutParams(
+                        m_BtnClose.getLayoutParams());
+                RelativeLayout.LayoutParams _params = new RelativeLayout.LayoutParams(_margin);
+                _params.width = 0;
+                _params.height = 0;
+                _params.addRule(RelativeLayout.ALIGN_BOTTOM, R.id.webView);
+                _params.addRule(RelativeLayout.ALIGN_RIGHT, R.id.webView);
+                m_BtnClose.setLayoutParams(_params);
+
+                m_BtnClose.setOnClickListener(new View.OnClickListener()
+                {
+                    @Override
+                    public void onClick(View view)
+                    {
+                        processClose();
+                    }
+                });
+
+                m_WebView = (WebView) m_Activity.findViewById(R.id.webView);
+                ViewGroup.MarginLayoutParams margin = new ViewGroup.MarginLayoutParams(
+                        m_WebView.getLayoutParams());
+                RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(margin);
+                layoutParams.width = 0;
+                layoutParams.height = 0;
+                layoutParams.addRule(RelativeLayout.CENTER_IN_PARENT, RelativeLayout.TRUE);
+                m_WebView.setLayoutParams(layoutParams);
+                m_WebView.getSettings().setJavaScriptEnabled(true);
+                m_WebView.setWebViewClient(new WebViewClient()
+                {
+                    @Override
+                    public void onReceivedError(WebView view, int errorCode, String description,
+                                                String failingUrl)
+                    {
+                        super.onReceivedError(view, errorCode, description, failingUrl);
+                        view.loadUrl(m_ReceivedUrl);
+                    }
+
+                    @Override
+                    public boolean shouldOverrideUrlLoading(WebView view, String url)
+                    {
+                        if (url.startsWith("http") || url.startsWith("https"))
+                        { //http鍜宧ttps鍗忚寮�澶寸殑鎵ц姝e父鐨勬祦绋�
+                            view.loadUrl(url);
+                            return true;
+                        }
+                        else
+                        {  //鍏朵粬鐨刄RL鍒欎細寮�鍚竴涓狝citity鐒跺悗鍘昏皟鐢ㄥ師鐢烝PP
+                            return super.shouldOverrideUrlLoading(view, url);
+                        }
+                    }
+
+                    @Override
+                    public WebResourceResponse shouldInterceptRequest(WebView view, String url)
+                    {
+                        if (url.startsWith("http") || url.startsWith("https"))
+                        { //http鍜宧ttps鍗忚寮�澶寸殑鎵ц姝e父鐨勬祦绋�
+                            return super.shouldInterceptRequest(view, url);
+                        }
+                        else
+                        {  //鍏朵粬鐨刄RL鍒欎細寮�鍚竴涓狝citity鐒跺悗鍘昏皟鐢ㄥ師鐢烝PP
+                            try
+                            {
+                                Intent in = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
+                                m_Activity.startActivity(in);
+                            } catch (ActivityNotFoundException e)
+                            {
+                                e.printStackTrace();
+                            }
+                            return null;
+                        }
+                    }
+                });
+                m_WebView.setWebChromeClient(new WebChromeClient()
+                {
+                    @Override
+                    public void onReceivedTitle(WebView view, String title)
+                    {
+                        if (title.contains("I'm QQ"))
+                        {
+                            m_WebView.loadUrl(m_ReceivedUrl);
+                        }
+                        super.onReceivedTitle(view, title);
+                    }
+
+                    @Override
+                    public void onProgressChanged(WebView view, int newProgress)
+                    {
+                        if (newProgress == 100)
+                        {
+                            if (view.getUrl().contains("noticeweb"))
+                            {
+
+                                ViewGroup.MarginLayoutParams margin = new ViewGroup.MarginLayoutParams(
+                                        m_WebView.getLayoutParams());
+                                RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(
+                                        margin);
+                                layoutParams.width = _width;
+                                layoutParams.height = _height;
+                                layoutParams.addRule(RelativeLayout.CENTER_IN_PARENT,
+                                                     RelativeLayout.TRUE);
+                                m_WebView.setLayoutParams(layoutParams);
+
+                                ViewGroup.MarginLayoutParams _margin = new ViewGroup.MarginLayoutParams(
+                                        m_BtnClose.getLayoutParams());
+                                RelativeLayout.LayoutParams _params = new RelativeLayout.LayoutParams(
+                                        _margin);
+                                _params.width = (int) (180 * _scale);
+                                _params.height = (int) (72 * _scale);
+                                _params.rightMargin = (int) (250 * _scale);
+                                _params.bottomMargin = (int) (10 * _scale);
+                                _params.addRule(RelativeLayout.ALIGN_BOTTOM, R.id.webView);
+                                _params.addRule(RelativeLayout.ALIGN_RIGHT, R.id.webView);
+                                m_BtnClose.setLayoutParams(_params);
+                            }
+                        }
+                    }
+                });
+
+                m_WebView.loadUrl(m_ReceivedUrl);
+
+                m_WebView.setVisibility(View.VISIBLE);
+                m_BtnClose.setVisibility(View.VISIBLE);
+            }
+        });
+    }
+
+    private static void processClose()
+    {
+        m_WebView.clearFocus();
+        m_WebView.clearCache(true);
+        m_WebView.clearHistory();
+        m_WebView.clearFormData();
+        m_WebView.setVisibility(View.INVISIBLE);
+        m_BtnClose.setVisibility(View.INVISIBLE);
+    }
+}
diff --git a/Project/sd_sdk/src/main/res/drawable-hdpi/jpush_ic_richpush_actionbar_back.png b/Project/sd_sdk/src/main/res/drawable-hdpi/jpush_ic_richpush_actionbar_back.png
new file mode 100644
index 0000000..c9f4e4d
--- /dev/null
+++ b/Project/sd_sdk/src/main/res/drawable-hdpi/jpush_ic_richpush_actionbar_back.png
Binary files differ
diff --git a/Project/sd_sdk/src/main/res/drawable-hdpi/jpush_ic_richpush_actionbar_divider.png b/Project/sd_sdk/src/main/res/drawable-hdpi/jpush_ic_richpush_actionbar_divider.png
new file mode 100644
index 0000000..f289651
--- /dev/null
+++ b/Project/sd_sdk/src/main/res/drawable-hdpi/jpush_ic_richpush_actionbar_divider.png
Binary files differ
diff --git a/Project/sd_sdk/src/main/res/drawable-hdpi/jpush_richpush_btn_selector.xml b/Project/sd_sdk/src/main/res/drawable-hdpi/jpush_richpush_btn_selector.xml
new file mode 100644
index 0000000..c6dd002
--- /dev/null
+++ b/Project/sd_sdk/src/main/res/drawable-hdpi/jpush_richpush_btn_selector.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?> 
+<selector xmlns:android="http://schemas.android.com/apk/res/android" > 
+    <!-- 鑾峰緱鐒︾偣浣嗘湭鎸変笅鏃剁殑鑳屾櫙鍥剧墖 --> 
+    <item 
+        android:state_focused="true" 
+        android:state_enabled="true" 
+        android:state_pressed="false" 
+        android:drawable="@drawable/jpush_ic_richpush_actionbar_back" />
+     <!-- 鎸変笅鏃剁殑鑳屾櫙鍥剧墖 --> 
+    <item 
+        android:state_enabled="true" 
+        android:state_pressed="true" 
+        android:drawable="@android:color/darker_gray" /> 
+    <!-- 鎸変笅鏃剁殑鑳屾櫙鍥剧墖 --> 
+    <item 
+        android:state_enabled="true" 
+        android:state_checked="true" 
+        android:drawable="@android:color/darker_gray" /> 
+    <!-- 榛樿鏃剁殑鑳屾櫙鍥剧墖 --> 
+    <item android:drawable="@drawable/jpush_ic_richpush_actionbar_back" />
+</selector> 
\ No newline at end of file
diff --git a/Project/sd_sdk/src/main/res/drawable-hdpi/jpush_richpush_progressbar.xml b/Project/sd_sdk/src/main/res/drawable-hdpi/jpush_richpush_progressbar.xml
new file mode 100644
index 0000000..a1d9b8f
--- /dev/null
+++ b/Project/sd_sdk/src/main/res/drawable-hdpi/jpush_richpush_progressbar.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
+
+    <!-- 鑳屾櫙  gradient鏄笎鍙�,corners瀹氫箟鐨勬槸鍦嗚 -->
+    <item android:id="@android:id/background">
+        <shape>
+            <solid android:color="#ffffff" />
+        </shape>
+    </item>
+    
+    <!-- 杩涘害鏉� -->
+    <item android:id="@android:id/progress">
+        <clip>
+            <shape>
+                <solid android:color="#4393ea" />
+            </shape>
+        </clip>
+    </item>
+
+</layer-list>
\ No newline at end of file
diff --git a/Project/sd_sdk/src/main/res/drawable/app_icon.png b/Project/sd_sdk/src/main/res/drawable/app_icon.png
new file mode 100644
index 0000000..9f03b9d
--- /dev/null
+++ b/Project/sd_sdk/src/main/res/drawable/app_icon.png
Binary files differ
diff --git a/Project/sd_sdk/src/main/res/drawable/web_btn_close_icon.png b/Project/sd_sdk/src/main/res/drawable/web_btn_close_icon.png
new file mode 100644
index 0000000..7ac8e4d
--- /dev/null
+++ b/Project/sd_sdk/src/main/res/drawable/web_btn_close_icon.png
Binary files differ
diff --git a/Project/sd_sdk/src/main/res/layout/activity_main_2thworld.xml b/Project/sd_sdk/src/main/res/layout/activity_main_2thworld.xml
new file mode 100644
index 0000000..ae7fd48
--- /dev/null
+++ b/Project/sd_sdk/src/main/res/layout/activity_main_2thworld.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/main_container_2thworld"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
+
+    <FrameLayout
+        android:id="@+id/unity_view"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent" />
+
+    <WebView
+        android:id="@+id/webView"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_centerInParent="true"
+        android:visibility="invisible" />
+
+    <Button
+        android:id="@+id/webView_btn_close"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_alignBottom="@id/webView"
+        android:layout_alignRight="@id/webView"
+        android:background="@drawable/web_btn_close_icon"
+        android:text="鎴戠煡閬撲簡"
+        android:textSize="16dp"
+        android:visibility="invisible" />
+
+</RelativeLayout>
\ No newline at end of file
diff --git a/Project/sd_sdk/src/main/res/layout/jpush_popwin_layout.xml b/Project/sd_sdk/src/main/res/layout/jpush_popwin_layout.xml
new file mode 100644
index 0000000..f43e478
--- /dev/null
+++ b/Project/sd_sdk/src/main/res/layout/jpush_popwin_layout.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/popLayoutId"
+    style="@style/MyDialogStyle"
+    android:orientation="vertical"
+    android:layout_width="280dp"
+    android:layout_height="250dp" >
+
+        <WebView
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:id="@+id/wvPopwin"/>
+
+</LinearLayout>
\ No newline at end of file
diff --git a/Project/sd_sdk/src/main/res/layout/jpush_webview_layout.xml b/Project/sd_sdk/src/main/res/layout/jpush_webview_layout.xml
new file mode 100644
index 0000000..bebdd61
--- /dev/null
+++ b/Project/sd_sdk/src/main/res/layout/jpush_webview_layout.xml
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="utf-8"?>
+<cn.jpush.android.ui.FullScreenView xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/actionbarLayoutId"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical" >
+
+    <RelativeLayout
+        android:id="@+id/rlRichpushTitleBar"
+        android:layout_width="match_parent"
+        android:layout_height="40.0dp"
+        android:background="#29313a">
+
+        <ImageButton
+            android:id="@+id/imgRichpushBtnBack"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_centerVertical="true"
+            android:layout_marginLeft="9dp"
+            android:layout_marginRight="10dp"
+            android:background="@drawable/jpush_richpush_btn_selector" />
+
+        <ImageView
+            android:id="@+id/imgView"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_centerVertical="true"
+            android:layout_toRightOf="@id/imgRichpushBtnBack"
+            android:clickable="false"
+            android:src="@drawable/jpush_ic_richpush_actionbar_divider" />
+
+        <TextView
+            android:id="@+id/tvRichpushTitle"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_centerVertical="true"
+            android:layout_marginLeft="7dp"
+            android:layout_marginRight="5dp"
+            android:layout_toRightOf="@id/imgView"
+            android:clickable="false"
+            android:text=" "
+            android:textSize="20sp"
+            android:textColor="#ffffff" />
+    </RelativeLayout>
+
+    <ProgressBar
+        android:id="@+id/pushPrograssBar"
+        android:layout_width="match_parent"
+        android:layout_height="1dp"
+        android:progress="0"
+        android:progressDrawable="@drawable/jpush_richpush_progressbar"
+        style="?android:attr/progressBarStyleHorizontal" />
+    <WebView
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:id="@+id/fullWebView"
+        android:background="#000000" />
+
+</cn.jpush.android.ui.FullScreenView>
\ No newline at end of file
diff --git a/Project/sd_sdk/src/main/res/values/colors.xml b/Project/sd_sdk/src/main/res/values/colors.xml
new file mode 100644
index 0000000..3ab3e9c
--- /dev/null
+++ b/Project/sd_sdk/src/main/res/values/colors.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+    <color name="colorPrimary">#3F51B5</color>
+    <color name="colorPrimaryDark">#303F9F</color>
+    <color name="colorAccent">#FF4081</color>
+</resources>
diff --git a/Project/sd_sdk/src/main/res/values/jpush_style.xml b/Project/sd_sdk/src/main/res/values/jpush_style.xml
new file mode 100644
index 0000000..81dfdbb
--- /dev/null
+++ b/Project/sd_sdk/src/main/res/values/jpush_style.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android">
+    <style name="MyDialogStyle">
+        <item name="android:windowBackground">@android:color/transparent</item>
+        <item name="android:windowFrame">@null</item>
+        <item name="android:windowNoTitle">true</item>
+        <item name="android:windowIsFloating">true</item>
+        <item name="android:windowIsTranslucent">true</item>
+        <item name="android:windowContentOverlay">@null</item>
+        <item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>
+        <item name="android:backgroundDimEnabled">true</item>
+    </style>
+</resources>
\ No newline at end of file
diff --git a/Project/sd_sdk/src/main/res/values/strings.xml b/Project/sd_sdk/src/main/res/values/strings.xml
new file mode 100644
index 0000000..c17e5b3
--- /dev/null
+++ b/Project/sd_sdk/src/main/res/values/strings.xml
@@ -0,0 +1,3 @@
+<resources>
+    <string name="app_name">UniveralSDK</string>
+</resources>
diff --git a/Project/sd_sdk/src/main/res/values/styles.xml b/Project/sd_sdk/src/main/res/values/styles.xml
new file mode 100644
index 0000000..ff6c9d2
--- /dev/null
+++ b/Project/sd_sdk/src/main/res/values/styles.xml
@@ -0,0 +1,8 @@
+<resources>
+
+    <!-- Base application theme. -->
+    <style name="AppTheme" parent="android:Theme.Holo.Light.DarkActionBar">
+        <!-- Customize your theme here. -->
+    </style>
+
+</resources>
diff --git a/Project/sd_sdk/src/main/res/xml/file_paths.xml b/Project/sd_sdk/src/main/res/xml/file_paths.xml
new file mode 100644
index 0000000..517ede7
--- /dev/null
+++ b/Project/sd_sdk/src/main/res/xml/file_paths.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<paths>
+	<external-path path="Android/data/com.shandangceshi.snxxz/" name="files_root" />
+	<external-path path="." name="external_storage_root" />
+</paths>
\ No newline at end of file
diff --git a/Project/sp_sdk/src/game_spxjgame/java/com/secondworld/univeralsdk/H2EngineSDK.java b/Project/sp_sdk/src/game_spxjgame/java/com/secondworld/univeralsdk/H2EngineSDK.java
index fec27cc..50d8623 100644
--- a/Project/sp_sdk/src/game_spxjgame/java/com/secondworld/univeralsdk/H2EngineSDK.java
+++ b/Project/sp_sdk/src/game_spxjgame/java/com/secondworld/univeralsdk/H2EngineSDK.java
@@ -170,6 +170,9 @@
                 case CodeU2A.JPushRemoveLocalMessage:
                     removeNotification(_activity, _json.getInt("id"));
                     break;
+                case CodeU2A.SendRegistEvent:
+                    SpPlatformUtil.getInstance().SendRegisterEvent();
+                    break;
             }
 
         } catch (JSONException e)
diff --git a/Project/sp_sdk/src/game_spxjgame/java/com/secondworld/univeralsdk/SpPlatformUtil.java b/Project/sp_sdk/src/game_spxjgame/java/com/secondworld/univeralsdk/SpPlatformUtil.java
index e7c049d..0657eaa 100644
--- a/Project/sp_sdk/src/game_spxjgame/java/com/secondworld/univeralsdk/SpPlatformUtil.java
+++ b/Project/sp_sdk/src/game_spxjgame/java/com/secondworld/univeralsdk/SpPlatformUtil.java
@@ -261,4 +261,8 @@
         gamedata.setGamemoney(surplusMoney);
         return gamedata;
     }
+
+    public void SendRegisterEvent()
+    {
+    }
 }
diff --git a/Project/sp_sdk/src/main/java/com/secondworld/univeralsdk/CodeU2A.java b/Project/sp_sdk/src/main/java/com/secondworld/univeralsdk/CodeU2A.java
index fbbff1d..9dfe55b 100644
--- a/Project/sp_sdk/src/main/java/com/secondworld/univeralsdk/CodeU2A.java
+++ b/Project/sp_sdk/src/main/java/com/secondworld/univeralsdk/CodeU2A.java
@@ -84,4 +84,5 @@
      * ClientPackage鍚憇dk鍙戦�佸垎鍖卛d
      */
     public static final int ClientPackage = 400;
+    public static final int SendRegistEvent = 500;
 }
diff --git a/Project/xn_sdk/.gitignore b/Project/xn_sdk/.gitignore
new file mode 100644
index 0000000..796b96d
--- /dev/null
+++ b/Project/xn_sdk/.gitignore
@@ -0,0 +1 @@
+/build
diff --git a/Project/xn_sdk/build.gradle b/Project/xn_sdk/build.gradle
new file mode 100644
index 0000000..600e1e5
--- /dev/null
+++ b/Project/xn_sdk/build.gradle
@@ -0,0 +1,79 @@
+apply plugin: 'com.android.library'
+
+android {
+
+    compileSdkVersion 27
+
+    defaultConfig {
+        //applicationId "com.secondworld.univeralsdk"
+        minSdkVersion 16
+        targetSdkVersion 27
+        versionCode 1
+        versionName "1.1.0"
+    }
+
+    buildTypes {
+        release {
+            //娣锋穯
+            minifyEnabled true
+            //瀵归綈
+            zipAlignEnabled true
+            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
+
+        }
+    }
+
+    flavorDimensions "default"
+    productFlavors {
+        // 鎬濈挒SDK
+        game_xngame {
+//            <meta-data
+//            android:name="XnAppID"
+//            android:value="${XnAppID}" />
+//
+//            <meta-data
+//            android:name="XnVersion"
+//            android:value="${XnVersion}" />
+//
+//            <meta-data
+//            android:name="XnTrackingKey"
+//            android:value="${XnTrackingKey}" />
+            dimension "default"
+            manifestPlaceholders.put("appId", "com.xiaoniu.snxx")
+            manifestPlaceholders.put("JpushAppKey", "22186239fee975f883198cf4")
+            manifestPlaceholders.put("XnAppID", "34aee53ae588421a91f7eb297689b1f0")
+            manifestPlaceholders.put("XnAppKey", "0ca9e17f7a6d45e58aa7d2755d0f16c2")
+            manifestPlaceholders.put("XnVersion", "1.3.3")
+            manifestPlaceholders.put("XnTrackingKey", "f93e467aa05acc0266ab844cce9321b0")
+        }
+    }
+}
+repositories {
+    flatDir {
+        dirs 'libs'
+    }
+}
+
+dependencies {
+    compile(name: 'petlibrary-release', ext: 'aar')
+    implementation files('libs/bugly_crash_release.jar')
+    implementation files('libs/buglyagent.jar')
+    implementation files('libs/jcore-android-1.2.1.jar')
+    implementation files('libs/jpush-android-3.1.3.jar')
+    compileOnly files('libs/unity-classes.jar')
+    implementation files('libs/android-support-v4.jar')
+}
+
+task autoCopy_xngame_Manifest(type: Copy) {
+    dependsOn 'assembleGame_xngameRelease'
+    from zipTree("build/outputs/aar/xn_sdk-game_xngame-release.aar")
+    include "AndroidManifest.xml"
+    into "C:\\Unity3D_SDK\\ChannelDiff\\Android\\xngame\\"
+}
+
+task autoCopy_xngame(type: Copy) {
+    dependsOn autoCopy_xngame_Manifest
+    from "build/outputs/aar/"
+    include "xn_sdk-game_xngame-release.aar"
+    into "C:\\Unity3D_SDK\\ChannelDiff\\Android\\xngame\\libs\\"
+}
diff --git a/Project/xn_sdk/libs/android-support-v4.jar b/Project/xn_sdk/libs/android-support-v4.jar
new file mode 100644
index 0000000..2ff47f4
--- /dev/null
+++ b/Project/xn_sdk/libs/android-support-v4.jar
Binary files differ
diff --git a/Project/xn_sdk/libs/bugly_crash_release.jar b/Project/xn_sdk/libs/bugly_crash_release.jar
new file mode 100644
index 0000000..9d49864
--- /dev/null
+++ b/Project/xn_sdk/libs/bugly_crash_release.jar
Binary files differ
diff --git a/Project/xn_sdk/libs/buglyagent.jar b/Project/xn_sdk/libs/buglyagent.jar
new file mode 100644
index 0000000..b3d5fcf
--- /dev/null
+++ b/Project/xn_sdk/libs/buglyagent.jar
Binary files differ
diff --git a/Project/xn_sdk/libs/jcore-android-1.2.1.jar b/Project/xn_sdk/libs/jcore-android-1.2.1.jar
new file mode 100644
index 0000000..9cb8439
--- /dev/null
+++ b/Project/xn_sdk/libs/jcore-android-1.2.1.jar
Binary files differ
diff --git a/Project/xn_sdk/libs/jpush-android-3.1.3.jar b/Project/xn_sdk/libs/jpush-android-3.1.3.jar
new file mode 100644
index 0000000..ed4e115
--- /dev/null
+++ b/Project/xn_sdk/libs/jpush-android-3.1.3.jar
Binary files differ
diff --git a/Project/xn_sdk/libs/petlibrary-release.aar b/Project/xn_sdk/libs/petlibrary-release.aar
new file mode 100644
index 0000000..b4bb11e
--- /dev/null
+++ b/Project/xn_sdk/libs/petlibrary-release.aar
Binary files differ
diff --git a/Project/xn_sdk/libs/unity-classes.jar b/Project/xn_sdk/libs/unity-classes.jar
new file mode 100644
index 0000000..3c32bf7
--- /dev/null
+++ b/Project/xn_sdk/libs/unity-classes.jar
Binary files differ
diff --git a/Project/xn_sdk/proguard-rules.pro b/Project/xn_sdk/proguard-rules.pro
new file mode 100644
index 0000000..1ebda5d
--- /dev/null
+++ b/Project/xn_sdk/proguard-rules.pro
@@ -0,0 +1,49 @@
+# Add project specific ProGuard rules here.
+# You can control the set of applied configuration files using the
+# proguardFiles setting in build.gradle.
+#
+# For more details, see
+#   http://developer.android.com/guide/developing/tools/proguard.html
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+#   public *;
+#}
+
+# Uncomment this to preserve the line number information for
+# debugging stack traces.
+#-keepattributes SourceFile,LineNumberTable
+
+# If you keep the line number information, uncomment this to
+# hide the original source file name.
+#-renamesourcefileattribute SourceFile
+
+-dontwarn okio.**
+-keep class okio.** { *;}
+-dontwarn com.squareup.okhttp.**
+-keep class com.squareup.okhttp.** { *;}
+-dontwarn cn.jpush.**
+-keep class cn.jpush.** { *; }
+-keep class * extends cn.jpush.android.helpers.JPushMessageReceiver { *; }
+-dontwarn cn.jiguang.**
+-keep class cn.jiguang.** { *; }
+-dontwarn cn.jiguang.android.service.**
+-keep class cn.jiguang.android.service.** { *;}
+-dontwarn com.google.gson.**
+-keep class com.google.gson.** { *;}
+-dontwarn com.tencent.bugly.**
+-keep class com.tencent.bugly.** { *;}
+-dontwarn android.support.**
+-keep class android.support.** { *;}
+-dontwarn com.reyun.tracking.**
+-keep class com.reyun.tracking.** { *;}
+-dontwarn com.ss.**
+-keep class com.ss.tracking.** { *;}
+-dontwarn com.bytedance.**
+-keep class com.bytedance.** { *;}
+
+-dontwarn com.secondworld.univeralsdk.**
+-keep class com.secondworld.univeralsdk.** { *;}
+
diff --git a/Project/xn_sdk/src/game_xngame/AndroidManifest.xml b/Project/xn_sdk/src/game_xngame/AndroidManifest.xml
new file mode 100644
index 0000000..f2d6fe3
--- /dev/null
+++ b/Project/xn_sdk/src/game_xngame/AndroidManifest.xml
@@ -0,0 +1,129 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="com.secondworld.univeralsdk"
+    android:installLocation="auto"
+    android:versionCode="1"
+    android:versionName="1.1.0">
+
+    <uses-sdk
+        android:minSdkVersion="16"
+        android:targetSdkVersion="22" />
+
+    <uses-permission android:name="android.permission.INTERNET" />
+    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
+    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
+    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
+    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
+    <uses-permission android:name="android.permission.RECORD_AUDIO" />
+    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
+    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
+    <uses-permission android:name="android.permission.WAKE_LOCK" />
+    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
+    <uses-permission android:name="android.permission.VIBRATE" />
+    <uses-permission android:name="android.permission.GET_TASKS" />
+    <uses-permission android:name="android.permission.WRITE_SETTINGS" />
+    <uses-permission android:name="android.permission.READ_LOGS" />
+    <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES"/>
+    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
+    <uses-permission android:name="android.permission.RECEIVE_USER_PRESENT" />
+    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
+    <uses-permission android:name="android.permission.CHANGE_CONFIGURATION"/>
+    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
+    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
+
+    <permission android:name="android.permission.INTERACT_ACROSS_USERS_FULL" android:protectionLevel="signature"/>
+    <!-- Required -->
+    <permission android:name="${appId}.permission.JPUSH_MESSAGE" />
+    <uses-permission android:name="${appId}.permission.JPUSH_MESSAGE" />
+
+    <application
+        android:allowBackup="true"
+        android:icon="@drawable/app_icon"
+        android:hardwareAccelerated="false"
+        android:isGame="true"
+        android:label="@string/app_name"
+        android:theme="@android:style/Theme.Light.NoTitleBar.Fullscreen">
+
+        <meta-data
+            android:name="XnAppID"
+            android:value="${XnAppID}" />
+
+        <meta-data
+            android:name="XnVersion"
+            android:value="${XnVersion}" />
+
+        <meta-data
+            android:name="XnTrackingKey"
+            android:value="${XnTrackingKey}" />
+
+        <meta-data
+            android:name="XnAppKey"
+            android:value="${XnAppKey}" />
+
+        <meta-data
+            android:name="android.max_aspect"
+            android:value="1075838976.000000" />
+
+        <meta-data
+            android:name="com.samsung.android.keepalive.density"
+            android:value="true" />
+
+        <!--<meta-data-->
+        <!--android:name="android.notch_support"-->
+        <!--android:value="true" />-->
+
+        <meta-data
+            android:name="notch.config"
+            android:value="none" />
+
+        <meta-data
+            android:name="android.vendor.full_screen"
+            android:value="true" />
+
+        <activity
+            android:name="com.secondworld.univeralsdk.MainActivity"
+            android:configChanges="mcc|mnc|locale|touchscreen|keyboard|keyboardHidden|navigation|orientation|screenLayout|uiMode|screenSize|smallestScreenSize|fontScale|layoutDirection"
+            android:label="@string/app_name"
+            android:launchMode="singleTask"
+            android:screenOrientation="sensorLandscape">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+
+                <category android:name="android.intent.category.LAUNCHER" />
+                <category android:name="android.intent.category.LEANBACK_LAUNCHER" />
+            </intent-filter>
+
+            <meta-data
+                android:name="unityplayer.UnityActivity"
+                android:value="true" />
+            <meta-data
+                android:name="unityplayer.SkipPermissionsDialog"
+                android:value="true" />
+
+            <meta-data
+                android:name="android.vendor.home_indicator"
+                android:value="hide" />
+
+            <meta-data
+                android:name="android.max_aspect"
+                android:value="1075419520.000000" />
+
+            <meta-data
+                android:name="com.samsung.android.keepalive.density"
+                android:value="true" />
+
+        </activity>
+
+        <!-- 閽堝7.0浠ヤ笂鐨刟pi寮�鏀剧殑鏂囦欢鏉冮檺 -->
+        <!--<provider-->
+        <!--android:name="android.support.v4.content.FileProvider"-->
+        <!--android:authorities="${appId}.fileProvider"-->
+        <!--android:grantUriPermissions="true"-->
+        <!--android:exported="false">-->
+        <!--<meta-data-->
+        <!--android:name="android.support.FILE_PROVIDER_PATHS"-->
+        <!--android:resource="@xml/file_paths" />-->
+        <!--</provider>-->
+    </application>
+
+</manifest>
\ No newline at end of file
diff --git a/Project/xn_sdk/src/game_xngame/java/com/secondworld/univeralsdk/H2EngineSDK.java b/Project/xn_sdk/src/game_xngame/java/com/secondworld/univeralsdk/H2EngineSDK.java
new file mode 100644
index 0000000..f5a9b23
--- /dev/null
+++ b/Project/xn_sdk/src/game_xngame/java/com/secondworld/univeralsdk/H2EngineSDK.java
@@ -0,0 +1,454 @@
+package com.secondworld.univeralsdk;
+
+import android.app.Activity;
+import android.app.AlertDialog;
+import android.content.ClipData;
+import android.content.ClipboardManager;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.content.res.Configuration;
+import android.net.Uri;
+import android.os.Bundle;
+import android.os.Environment;
+import android.provider.Settings;
+import android.widget.Toast;
+
+import com.unity3d.player.UnityPlayer;
+import com.xiaoniu.enter.XNSDK;
+
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import java.io.File;
+import java.util.HashMap;
+import java.util.Map;
+
+import cn.jpush.android.api.JPushInterface;
+import cn.jpush.android.data.JPushLocalNotification;
+
+public class H2EngineSDK
+{
+    private static final String TAG = "H2EngineSDK";
+    private static String APP_ID = "";
+
+    private static boolean PushEnable = true;
+
+    public static void HandleUnityMessage(String json)
+    {
+        LogUtil.i(TAG, "鏀跺埌Unity鍙戞潵鐨勪俊鎭�: " + json);
+        Activity _activity = UnityPlayer.currentActivity;
+        try
+        {
+            JSONObject _json = new JSONObject(json);
+
+            int _code = _json.getInt("code");
+
+            switch (_code)
+            {
+                case CodeU2A.Init:
+                    APP_ID = _json.getString("appID");
+                    init(_activity);
+                    break;
+                case CodeU2A.AssetCopy:
+                    FileUtil.copyAssets(_activity);
+                    break;
+                case CodeU2A.CopyOneAsset:
+                    FileUtil.copy(_activity, _json.getString("fileName"));
+                    break;
+                case CodeU2A.BatteryListenStart:
+                    BatteryUtil.getInstance().start(_activity);
+                    break;
+                case CodeU2A.BatteryListenStop:
+                    BatteryUtil.getInstance().stop(_activity);
+                    break;
+                case CodeU2A.UniqueID:
+                    break;
+                case CodeU2A.CopyContent:
+                    CopyContent(_activity, _json.getString("content"));
+                    break;
+                case CodeU2A.OpenWebView:
+                    WebViewUtil.OpenWebView(_activity, _json.getString("url"));
+                    break;
+                case CodeU2A.RestartApp:
+                    RestartApp(_activity);
+                    break;
+                case CodeU2A.InstallAPK:
+                    InstallApp(_activity, _json.getString("path"));
+                    break;
+                case CodeU2A.ExteneralStorage:
+                    GetExternalStorage();
+                    break;
+                case CodeU2A.RequestPermission:
+                    break;
+                case CodeU2A.RequestManifestPermissions:
+                    break;
+                case CodeU2A.FreePlatformInit:
+                    XNPlatformUtil.getInstance().init(_activity);
+                    break;
+                case CodeU2A.FreePlatformLogin:
+                    XNPlatformUtil.getInstance().login(_activity);
+                    break;
+                case CodeU2A.FreePlatformSwitchAccount:
+                    break;
+                case CodeU2A.FreePlatformLogout:
+                    XNPlatformUtil.getInstance().logout(_activity);
+                    break;
+                case CodeU2A.FreePlatformPay:
+
+                    JSONObject _extraData = new JSONObject();
+                    _extraData.put("appid", APP_ID);
+                    _extraData.put("cpinfo", _json.getString("cpInfo"));
+                    _extraData.put("cporderid", _json.getString("orderId"));
+
+                    XNPlatformUtil.getInstance().pay(_activity,
+                                                     _json.getString("orderId"),
+                                                     _json.getInt("mount"),
+                                                     _json.getString("title"),
+                                                     _json.getString("cpInfo"),
+                                                     _extraData.toString(),
+                                                     _json.getString("level"),
+                                                     _json.getString("roleID"),
+                                                     _json.getString("roleName"),
+                                                     _json.getString("serverName"),
+                                                     _json.getString("cpSign"));
+
+                    XNPlatformUtil.getInstance().payProcessing = true;
+                    break;
+                case CodeU2A.PayFinished:
+                    XNPlatformUtil.getInstance().payProcessing = false;
+                    break;
+                case CodeU2A.CreateRole:
+                    XNPlatformUtil.getInstance().createRole(_activity,
+                                                            _json.getString("roleID"),
+                                                            _json.getString(
+                                                                    "roleName").trim().replace(" ",
+                                                                                               ""),
+                                                            _json.getString("serverName"),
+                                                            _json.getString("level"));
+                    break;
+                case CodeU2A.RoleLogin:
+                    XNPlatformUtil.getInstance().enterWorld(_activity,
+                                                            _json.getString("roleID"),
+                                                            _json.getString(
+                                                                    "roleName").trim().replace(" ",
+                                                                                               ""),
+                                                            _json.getString("serverName"),
+                                                            _json.getString("level"));
+                    break;
+                case CodeU2A.RoleLevelUp:
+                    XNPlatformUtil.getInstance().levelUp(_activity,
+                                                         _json.getString("roleID"),
+                                                         _json.getString(
+                                                                 "roleName").trim().replace(" ",
+                                                                                            ""),
+                                                         _json.getString("serverName"),
+                                                         _json.getString("level"));
+                    break;
+                case CodeU2A.ClientPackage:
+                    break;
+                case CodeU2A.JPushAddLocalMessage:
+                    addLocalNotification(_activity,
+                                         _json.getInt("id"),
+                                         _json.getString("title"),
+                                         _json.getString("content"),
+                                         _json.getLong("fireTime"));
+                    break;
+                case CodeU2A.JPushRemoveLocalMessage:
+                    removeNotification(_activity, _json.getInt("id"));
+                    break;
+                case CodeU2A.SendRegistEvent:
+                    XNPlatformUtil.getInstance().SendRegisterEvent();
+                    break;
+            }
+
+        } catch (JSONException e)
+        {
+            e.printStackTrace();
+        }
+    }
+
+    // 鏈湴鎺ㄩ��
+    public static void addLocalNotification(Activity activity, int id, String title, String content,
+                                            long fireTime)
+    {
+        if (PushEnable)
+        {
+            try
+            {
+                JPushLocalNotification ln = new JPushLocalNotification();
+                ln.setBuilderId(0);// 璁剧疆鏍峰紡
+                ln.setNotificationId(id);// id
+                ln.setTitle(title);// 鏍囬
+
+                ln.setContent(content);// 鍐呭
+                ln.setBroadcastTime(fireTime);// 绛夊緟鏃堕棿
+                JPushInterface.addLocalNotification(activity, ln);
+            } catch (Exception e)
+            {
+                e.printStackTrace();
+            }
+        }
+    }
+
+    public static void removeNotification(Activity activity, int id)
+    {
+        if (PushEnable)
+        {
+            JPushInterface.removeLocalNotification(activity, id);
+        }
+    }
+
+    public static void GetExternalStorage()
+    {
+        Map<String, Object> _msg = new HashMap<>();
+        _msg.put("code", CodeA2U.ExternalStorage);
+        _msg.put("path", Environment.getExternalStorageDirectory().getAbsolutePath());
+        UniversalUtil.sendMessageToUnity(_msg);
+    }
+
+    public static void InstallApp(Activity activity, String path)
+    {
+        File _file = new File(path);
+
+        if (_file == null)
+        {
+            LogUtil.i(TAG, "鎵句笉鍒扮粰瀹氬湴鍧�鐨刟pk: " + path);
+            return;
+        }
+
+        try
+        {
+            Intent _intent = new Intent(Intent.ACTION_VIEW);
+
+//            if (Build.VERSION.SDK_INT >= 23)
+//            {
+//                _intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
+//                Uri _contentUri = FileProvider.getUriForFile(activity,
+//                                                             "com.shandangceshi.snxxz.fileProvider",
+//                                                             _file);
+//                _intent.setDataAndType(_contentUri, "application/vnd.android.package-archive");
+//
+//            }
+//            else
+//            {
+            _intent.setDataAndType(Uri.fromFile(_file),
+                                   "application/vnd.android.package-archive");
+            _intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+
+//            }
+
+            activity.startActivity(_intent);
+
+        } catch (Exception e)
+        {
+            e.printStackTrace();
+            Toast.makeText(activity, "娌℃湁鎵惧埌鎵撳紑姝ょ被鏂囦欢鐨勭▼搴�", Toast.LENGTH_SHORT).show();
+        }
+    }
+
+    public static void CopyContent(final Activity activity, final String content)
+    {
+        activity.runOnUiThread(new Runnable()
+        {
+            @Override
+            public void run()
+            {
+                ClipboardManager _mgr = (ClipboardManager) activity.getSystemService(
+                        Context.CLIPBOARD_SERVICE);
+                ClipData _data = ClipData.newPlainText("playerId", content);
+                _mgr.setPrimaryClip(_data);
+            }
+        });
+    }
+
+    public static void RestartApp(final Activity activity)
+    {
+        activity.runOnUiThread(new Runnable()
+        {
+            @Override
+            public void run()
+            {
+                new Thread()
+                {
+                    public void run()
+                    {
+                        String _pn = activity.getPackageName();
+                        PackageManager _pm = activity.getPackageManager();
+                        Intent _l = _pm.getLaunchIntentForPackage(_pn);
+                        _l.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
+                        activity.startActivity(_l);
+                        android.os.Process.killProcess(android.os.Process.myPid());
+                    }
+                }.start();
+                activity.finish();
+            }
+        });
+    }
+
+    public static void init(final Activity activity)
+    {
+        final int _memoryTotal = (int) (UniversalUtil.getMemTotal() / 1024);
+        if (_memoryTotal < 1024)
+        {
+            LogUtil.i(TAG, "妫�娴嬭澶囧唴瀛樹笉婊¤冻杩愯绋嬪簭鏍囧噯");
+            AlertDialog.Builder _builder = new AlertDialog.Builder(activity);
+            _builder.setIcon(R.drawable.app_icon);
+            _builder.setTitle("璀﹀憡");
+            _builder.setMessage("鎮ㄧ殑鎵嬫満鍐呭瓨涓嶈冻,鏃犳硶姝e父杩愯娓告垙");
+            _builder.setPositiveButton("纭畾", new DialogInterface.OnClickListener()
+            {
+                @Override
+                public void onClick(DialogInterface dialogInterface, int i)
+                {
+                    android.os.Process.killProcess(android.os.Process.myPid());
+                }
+            });
+            _builder.show();
+            return;
+        }
+
+        PushEnable = false;// activity.getPackageName().equals("com.lingleigame.shaonianqixiachuan");
+
+        new Thread(new Runnable()
+        {
+            @Override
+            public void run()
+            {
+                LogUtil.i(TAG, "寮�濮嬫墽琛屽垵濮嬪寲");
+
+                GetExternalStorage();
+
+                // ------------------------------- 璁惧淇℃伅 -------------------------------
+                Map<String, Object> _msgStruct = new HashMap<>();
+                _msgStruct.put("code", CodeA2U.DeviceInfo);
+                _msgStruct.put("userAgent", System.getProperty("http.agent"));
+                _msgStruct.put("mac", UniqueID.getLocalMac(activity));
+                _msgStruct.put("imei", UniqueID.getDeviceId(activity));
+                _msgStruct.put("android_id",
+                               Settings.System.getString(activity.getContentResolver(),
+                                                         Settings.System.ANDROID_ID));
+                _msgStruct.put("unique_id", UniqueID.get(activity));
+                _msgStruct.put("memoryTotal", _memoryTotal);
+                UniversalUtil.sendMessageToUnity(_msgStruct);
+
+                // ------------------------------- 鏋佸厜鎺ㄩ�� -------------------------------
+                String _registrationID = "0";
+                if (PushEnable)
+                {
+                    JPushInterface.setDebugMode(true);
+                    JPushInterface.init(activity);
+
+                    final long _waitingTime = System.currentTimeMillis();
+
+                    while (true)
+                    {
+                        // 绛夊緟鑾峰彇鏋佸厜registrationID
+                        if (!JPushInterface.getRegistrationID(activity).equals(""))
+                        {
+                            _registrationID = JPushInterface.getRegistrationID(activity);
+                            break;
+                        }
+
+                        long _escapeTime = System.currentTimeMillis() - _waitingTime;
+
+                        if (_escapeTime > 3000)
+                        {
+                            LogUtil.w(TAG, "绛夊緟鑾峰彇鏋佸厜鎺ㄩ�乺egistrationID瓒呮椂: 3绉�");
+                            break;
+                        }
+                    }
+                }
+
+                _msgStruct.clear();
+                _msgStruct.put("code", CodeA2U.PushClientID);
+                _msgStruct.put("clientID", _registrationID);
+                UniversalUtil.sendMessageToUnity(_msgStruct);
+
+                _msgStruct.clear();
+                _msgStruct.put("code", CodeA2U.SdkInitComplete);
+                _msgStruct.put("channelPlatform", "xn");
+                _msgStruct.put("xnappid",UniversalUtil.getMetaString(activity, "XnAppID"));
+                _msgStruct.put("xnversion",UniversalUtil.getMetaString(activity, "XnVersion"));
+                UniversalUtil.sendMessageToUnity(_msgStruct);
+
+                LogUtil.i(TAG, "鍒濆鍖栨墽琛屽畬姣�");
+            }
+
+        }).start();
+    }
+
+    public static void onCreate(Activity activity, Bundle savedInstanceState)
+    {
+        // ------------------------------- 鐚�砈DK -------------------------------
+        XNPlatformUtil.getInstance().init(activity);
+    }
+
+    private static boolean m_IsFocus = true;
+
+    public static void onWindowFocusChanged(boolean b)
+    {
+        if (XNPlatformUtil.getInstance().payProcessing)
+        {
+            if (b)
+            {
+                Map<String, Object> _msgStruct = new HashMap<>();
+                _msgStruct.put("code", CodeA2U.FreePlatformPayCancel);
+                UniversalUtil.sendMessageToUnity(_msgStruct);
+                XNPlatformUtil.getInstance().payProcessing = false;
+            }
+        }
+    }
+
+    public static void onNewIntent(final Activity activity, final Intent intent)
+    {
+    }
+
+    public static void onActivityResult(int requestCode,
+                                        int resultCode,
+                                        final Intent data,
+                                        final Activity activity)
+    {
+    }
+
+    public static void onConfigurationChanged(final Configuration newConfig)
+    {
+    }
+
+    public static void onRestart(final Activity activity)
+    {
+    }
+
+    public static void onStart(final Activity activity)
+    {
+    }
+
+    public static void onPause(final Activity activity)
+    {
+        XNSDK.getInstance().onTeaAgPause(activity);
+    }
+
+    public static void onResume(final Activity activity)
+    {
+        XNSDK.getInstance().onTeaAgResume(activity);
+
+        if (XNPlatformUtil.getInstance().payProcessing)
+        {
+            Map<String, Object> _msgStruct = new HashMap<>();
+            _msgStruct.put("code", CodeA2U.FreePlatformPayCancel);
+            UniversalUtil.sendMessageToUnity(_msgStruct);
+            XNPlatformUtil.getInstance().payProcessing = false;
+        }
+    }
+
+    public static void onStop(final Activity activity)
+    {
+
+    }
+
+    public static void onDestroy(final Activity activity)
+    {
+        XNSDK.getInstance().exist();
+    }
+}
diff --git a/Project/xn_sdk/src/game_xngame/java/com/secondworld/univeralsdk/XNPlatformUtil.java b/Project/xn_sdk/src/game_xngame/java/com/secondworld/univeralsdk/XNPlatformUtil.java
new file mode 100644
index 0000000..521854a
--- /dev/null
+++ b/Project/xn_sdk/src/game_xngame/java/com/secondworld/univeralsdk/XNPlatformUtil.java
@@ -0,0 +1,231 @@
+package com.secondworld.univeralsdk;
+
+import android.app.Activity;
+import android.content.res.Configuration;
+
+import com.xiaoniu.enter.XNSDK;
+import com.xiaoniu.enter.bean.InitParam;
+import com.xiaoniu.enter.bean.PayParams;
+import com.xiaoniu.enter.bean.PayResult;
+import com.xiaoniu.enter.im.IXNSDKInitListener;
+import com.xiaoniu.enter.im.IXNSDKPayListener;
+import com.xiaoniu.enter.im.IXNSDKUserListener;
+import com.xiaoniu.enter.provider.DataProbeProvider;
+
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.TreeMap;
+
+/**
+ * Created by Administrator on 2018/9/3 0003.
+ */
+
+public class XNPlatformUtil
+{
+    private static final String TAG = "XNPlatformUtil";
+
+    private boolean m_Init = false;
+
+    private static XNPlatformUtil s_Instance;
+
+    public static XNPlatformUtil getInstance()
+    {
+        if (s_Instance == null)
+        {
+            s_Instance = new XNPlatformUtil();
+        }
+        return s_Instance;
+    }
+
+    public boolean payProcessing = false;
+
+    private Map<String, Object> m_Message = new HashMap<>();
+
+    public void init(final Activity activity)
+    {
+        if (m_Init)
+        {
+            return;
+        }
+
+        XNSDK.getInstance().setIXNSDKInitListener(new IXNSDKInitListener()
+        {
+            @Override
+            public void onInitSuccess()
+            {
+                m_Init = true;
+                m_Message.put("code", CodeA2U.FreePlatformInitOk);
+                UniversalUtil.sendMessageToUnity(m_Message);
+            }
+
+            @Override
+            public void onInitFail(String msg)
+            {
+                //鍒濆鍖栧け璐�  msg 閿欒淇℃伅
+                m_Message.clear();
+                m_Message.put("code", CodeA2U.FreePlatformInitFail);
+                UniversalUtil.sendMessageToUnity(m_Message);
+            }
+        });
+
+        XNSDK.getInstance().setSDKUserListener(new IXNSDKUserListener()
+        {
+            @Override
+            public void onLoginFail(String code, String msg)
+            {
+                LogUtil.e(TAG, "鐧诲綍澶辫触" + code + " " + msg);
+                m_Message.clear();
+                m_Message.put("code", CodeA2U.FreePlatformLoginFail);
+                UniversalUtil.sendMessageToUnity(m_Message);
+            }
+
+            @Override
+            public void onLoginSuccess(String uuid, String sessionId)
+            {
+                //鐧诲綍鎴愬姛  uuid:鐢ㄦ埛id锛宮sg:鏍¢獙id
+                try
+                {
+                    m_Message.clear();
+                    JSONObject _info = new JSONObject();
+                    _info.put("account", uuid);
+                    _info.put("token", sessionId);
+                    _info.put("account_id", uuid);
+                    m_Message.put("code", CodeA2U.FreePlatformLoginOk);
+                    m_Message.put("info", _info);
+                    UniversalUtil.sendMessageToUnity(m_Message);
+                } catch (JSONException e)
+                {
+                    e.printStackTrace();
+                }
+            }
+
+            @Override
+            public void onLogout()
+            {
+                //閫�鍑虹櫥褰曪紙 濡傛灉闇�瑕佸敜璧风櫥闄嗚皟鐢ㄦ鏂规硶锛�  涔熷氨鏄敞閿�鐧诲綍鐨勫洖璋�  鍙細寮圭櫥褰曟涓嶄細鑷姩鐧诲綍
+                m_Message.clear();
+                m_Message.put("code", CodeA2U.FreePlatformLogoutOk);
+                UniversalUtil.sendMessageToUnity(m_Message);
+
+                XNSDK.getInstance().login(false);
+            }
+        });
+
+        XNSDK.getInstance().setSDKPayListener(new IXNSDKPayListener()
+        {
+            @Override
+            public void onPaySuccess(PayResult payResult)
+            {
+                //鏀粯鎴愬姛
+                payResult.getOrderId();//璁㈠崟id
+                payResult.getProdCode();//鍟嗗搧缂栫爜
+                payResult.getProdName();//鍟嗗搧鍚嶇О
+
+                m_Message.clear();
+                m_Message.put("code", CodeA2U.FreePlatformPayOk);
+                UniversalUtil.sendMessageToUnity(m_Message);
+                payProcessing = false;
+            }
+
+            @Override
+            public void onPayFail(String code, String msg)
+            {
+                //code:鏀粯澶辫触閿欒鐮侊紝msg:鏀粯澶辫触閿欒淇℃伅
+                m_Message.clear();
+                m_Message.put("code", CodeA2U.FreePlatformPayFail);
+                UniversalUtil.sendMessageToUnity(m_Message);
+                payProcessing = false;
+            }
+        });
+
+
+        InitParam initParam = new InitParam(
+                "34aee53ae588421a91f7eb297689b1f0",//搴旂敤ID
+                "灏戝勾淇粰",//娓告垙鍚嶇О
+                "0ca9e17f7a6d45e58aa7d2755d0f16c2",//搴旂敤KEY
+                "1.3.3",//娓告垙鐗堟湰
+                "f93e467aa05acc0266ab844cce9321b0",//鐑簯key
+                Configuration.ORIENTATION_LANDSCAPE,//娓告垙activity鏂瑰悜
+                157294);//澶存潯sdK闇�瑕佺殑sdk
+
+        com.xiaoniu.enter.XNSDK.getInstance().init(activity, initParam, true);
+    }
+
+    public void login(Activity activity)
+    {
+        com.xiaoniu.enter.XNSDK.getInstance().login(true);
+    }
+
+    public void logout(final Activity activity)
+    {
+        com.xiaoniu.enter.XNSDK.getInstance().logout();
+    }
+
+    public void pay(final Activity activity,
+                    String orderID,
+                    float amount,
+                    String title,
+                    String productID,
+                    String extraData,
+                    String roleLevel,
+                    String roleId,
+                    String roleName,
+                    String serverName,
+                    String cpSign)
+    {
+        PayParams payParams = new PayParams();//     [蹇呬紶]
+        payParams.setProdName(title);//鍟嗗搧鍚嶇О   [蹇呬紶]
+        payParams.setProdCode(productID);//鍟嗗搧缂栫爜      [蹇呬紶]
+        payParams.setProdNum(1);//鍟嗗搧鏁伴噺          [蹇呬紶]
+        payParams.setProdPrice(String.valueOf(amount));//鍟嗗搧鍗曚环 鍏�  [蹇呬紶]
+        payParams.setPayFee(String.valueOf(amount));//璁㈠崟鎬婚噾棰�  鍏� [蹇呬紶]
+        payParams.setPayNotifyUrl("http://...");//鏀粯鍥炶皟URL   [蹇呬紶]
+        payParams.setCpOrderId(orderID);//娓告垙寮�鍙戝晢璁㈠崟ID     [蹇呬紶]
+        payParams.setRoleLevel(roleLevel);//鐢ㄦ埛鐨勬父鎴忕瓑绾�          [蹇呬紶]
+        payParams.setRoleId(roleId);//鐢ㄦ埛娓告垙瑙掕壊ID          [蹇呬紶]
+        payParams.setRoleName(roleName);//鐢ㄦ埛娓告垙瑙掕壊鍚嶇О    [蹇呬紶]
+        payParams.setServerName(serverName);//鍖烘湇              [蹇呬紶]
+        payParams.setTimeStamp(new Date().getTime() + "");//璋冪敤鎺ュ彛鏃剁殑鏃堕棿鎴� 13浣嶆绉掓暟  [蹇呬紶]
+        payParams.setExtraData(extraData);//閫忎紶鍙傛暟 [闈炲繀浼燷
+
+        XNSDK.getInstance().pay(activity, payParams, cpSign);
+    }
+
+    public void enterWorld(final Activity activity,
+                           String roleID,
+                           String roleName,
+                           String serverName,
+                           String roleLevel)
+    {
+        DataProbeProvider.getInstance().startGame(activity, roleID, roleName, serverName,
+                                                  roleLevel);
+    }
+
+    public void createRole(final Activity activity,
+                           String roleID,
+                           String roleName,
+                           String serverName,
+                           String roleLevel)
+    {
+        DataProbeProvider.getInstance().createRole(activity, roleID, roleName, serverName,
+                                                   roleLevel);
+    }
+
+    public void levelUp(final Activity activity,
+                        String roleID,
+                        String roleName,
+                        String serverName,
+                        String roleLevel)
+    {
+        DataProbeProvider.getInstance().userUpLevel(activity, roleID, roleName, serverName,
+                                                    roleLevel);
+    }
+
+    public void SendRegisterEvent()
+    {
+    }
+}
diff --git a/Project/xn_sdk/src/main/AndroidManifest.xml b/Project/xn_sdk/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..ce1c8f4
--- /dev/null
+++ b/Project/xn_sdk/src/main/AndroidManifest.xml
@@ -0,0 +1,244 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="com.secondworld.univeralsdk"
+    android:installLocation="auto"
+    android:versionCode="1"
+    android:versionName="1.1.0">
+
+    <uses-sdk
+        android:minSdkVersion="16"
+        android:targetSdkVersion="22" />
+
+    <uses-permission android:name="android.permission.INTERNET" />
+    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
+    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
+    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
+    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
+    <uses-permission android:name="android.permission.RECORD_AUDIO" />
+    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
+    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
+    <uses-permission android:name="android.permission.WAKE_LOCK" />
+    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
+    <uses-permission android:name="android.permission.VIBRATE" />
+    <uses-permission android:name="android.permission.GET_TASKS" />
+    <uses-permission android:name="android.permission.WRITE_SETTINGS" />
+    <uses-permission android:name="android.permission.READ_LOGS" />
+    <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES"/>
+    <uses-permission android:name="android.permission.RECEIVE_USER_PRESENT" />
+    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
+    <permission android:name="android.permission.INTERACT_ACROSS_USERS_FULL" android:protectionLevel="signature"/>
+    <!-- Required -->
+    <permission android:name="${appId}.permission.JPUSH_MESSAGE" />
+    <uses-permission android:name="${appId}.permission.JPUSH_MESSAGE" />
+
+    <application
+        android:allowBackup="true"
+        android:icon="@drawable/app_icon"
+        android:hardwareAccelerated="false"
+        android:isGame="true"
+        android:label="@string/app_name"
+        android:theme="@android:style/Theme.Light.NoTitleBar.Fullscreen">
+
+        <meta-data
+            android:name="android.max_aspect"
+            android:value="1075838976.000000" />
+
+        <meta-data
+            android:name="com.samsung.android.keepalive.density"
+            android:value="true" />
+
+        <!--<meta-data-->
+        <!--android:name="android.notch_support"-->
+        <!--android:value="true" />-->
+
+        <meta-data
+            android:name="notch.config"
+            android:value="none" />
+
+        <meta-data
+            android:name="android.vendor.full_screen"
+            android:value="true" />
+
+        <activity
+            android:name="com.secondworld.univeralsdk.MainActivity"
+            android:configChanges="mcc|mnc|locale|touchscreen|keyboard|keyboardHidden|navigation|orientation|screenLayout|uiMode|screenSize|smallestScreenSize|fontScale|layoutDirection"
+            android:label="@string/app_name"
+            android:launchMode="singleTask"
+            android:screenOrientation="sensorLandscape">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+
+                <category android:name="android.intent.category.LAUNCHER" />
+                <category android:name="android.intent.category.LEANBACK_LAUNCHER" />
+            </intent-filter>
+
+            <meta-data
+                android:name="unityplayer.UnityActivity"
+                android:value="true" />
+            <meta-data
+                android:name="unityplayer.SkipPermissionsDialog"
+                android:value="true" />
+
+            <meta-data
+                android:name="android.vendor.home_indicator"
+                android:value="hide" />
+
+            <meta-data
+                android:name="android.max_aspect"
+                android:value="1075419520.000000" />
+
+            <meta-data
+                android:name="com.samsung.android.keepalive.density"
+                android:value="true" />
+
+        </activity>
+
+        <!-- 閽堝7.0浠ヤ笂鐨刟pi寮�鏀剧殑鏂囦欢鏉冮檺 -->
+        <!--<provider-->
+        <!--android:name="android.support.v4.content.FileProvider"-->
+        <!--android:authorities="${appId}.fileProvider"-->
+        <!--android:grantUriPermissions="true"-->
+        <!--android:exported="false">-->
+        <!--<meta-data-->
+        <!--android:name="android.support.FILE_PROVIDER_PATHS"-->
+        <!--android:resource="@xml/file_paths" />-->
+        <!--</provider>-->
+
+
+        <!-- Required SDK 鏍稿績鍔熻兘-->
+        <!-- 鍙厤缃產ndroid:process鍙傛暟灏哖ushService鏀惧湪鍏朵粬杩涚▼涓� -->
+        <service
+            android:name="cn.jpush.android.service.PushService"
+            android:exported="false"
+            android:process=":mult">
+            <intent-filter>
+                <action android:name="cn.jpush.android.intent.REGISTER" />
+                <action android:name="cn.jpush.android.intent.REPORT" />
+                <action android:name="cn.jpush.android.intent.PushService" />
+                <action android:name="cn.jpush.android.intent.PUSH_TIME" />
+            </intent-filter>
+        </service>
+
+        <!-- since 3.0.9 Required SDK 鏍稿績鍔熻兘-->
+        <provider
+            android:name="cn.jpush.android.service.DataProvider"
+            android:authorities="${appId}.DataProvider"
+            android:exported="true" />
+
+        <!-- since 1.8.0 option 鍙�夐」銆傜敤浜庡悓涓�璁惧涓笉鍚屽簲鐢ㄧ殑JPush鏈嶅姟鐩镐簰鎷夎捣鐨勫姛鑳姐�� -->
+        <!-- 鑻ヤ笉鍚敤璇ュ姛鑳藉彲鍒犻櫎璇ョ粍浠讹紝灏嗕笉鎷夎捣鍏朵粬搴旂敤涔熶笉鑳借鍏朵粬搴旂敤鎷夎捣 -->
+        <service
+            android:name="cn.jpush.android.service.DaemonService"
+            android:enabled="true"
+            android:exported="true">
+            <intent-filter>
+                <action android:name="cn.jpush.android.intent.DaemonService" />
+                <category android:name="${appId}" />
+            </intent-filter>
+        </service>
+
+        <!-- since 3.1.0 Required SDK 鏍稿績鍔熻兘-->
+        <provider
+            android:name="cn.jpush.android.service.DownloadProvider"
+            android:authorities="${appId}.DownloadProvider"
+            android:exported="true" />
+
+        <!-- Required SDK鏍稿績鍔熻兘-->
+        <receiver
+            android:name="cn.jpush.android.service.PushReceiver"
+            android:enabled="true">
+            <intent-filter android:priority="1000">
+                <action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED_PROXY" />
+                <category android:name="${appId}" />
+            </intent-filter>
+            <intent-filter>
+                <action android:name="android.intent.action.USER_PRESENT" />
+                <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
+            </intent-filter>
+            <!-- Optional -->
+            <intent-filter>
+                <action android:name="android.intent.action.PACKAGE_ADDED" />
+                <action android:name="android.intent.action.PACKAGE_REMOVED" />
+
+                <data android:scheme="package" />
+            </intent-filter>
+        </receiver>
+
+        <!-- Required SDK鏍稿績鍔熻兘-->
+        <activity
+            android:name="cn.jpush.android.ui.PushActivity"
+            android:configChanges="orientation|keyboardHidden"
+            android:exported="false"
+            android:theme="@android:style/Theme.NoTitleBar">
+            <intent-filter>
+                <action android:name="cn.jpush.android.ui.PushActivity" />
+
+                <category android:name="android.intent.category.DEFAULT" />
+                <category android:name="${appId}" />
+            </intent-filter>
+        </activity>
+        <!-- SDK鏍稿績鍔熻兘-->
+        <activity
+            android:name="cn.jpush.android.ui.PopWinActivity"
+            android:configChanges="orientation|keyboardHidden"
+            android:exported="false"
+            android:theme="@style/MyDialogStyle">
+            <intent-filter>
+                <category android:name="android.intent.category.DEFAULT" />
+                <category android:name="${appId}" />
+            </intent-filter>
+        </activity>
+
+        <!-- Required SDK鏍稿績鍔熻兘-->
+        <service
+            android:name="cn.jpush.android.service.DownloadService"
+            android:enabled="true"
+            android:exported="false"></service>
+
+        <!-- Required SDK鏍稿績鍔熻兘-->
+        <receiver android:name="cn.jpush.android.service.AlarmReceiver" />
+
+        <!-- Required since 3.0.7 -->
+        <!-- 鏂扮殑tag/alias鎺ュ彛缁撴灉杩斿洖闇�瑕佸紑鍙戣�呴厤缃竴涓嚜瀹氱殑骞挎挱 -->
+        <!-- 璇ュ箍鎾渶瑕佺户鎵縅Push鎻愪緵鐨凧PushMessageReceiver绫�, 骞跺涓嬫柊澧炰竴涓� Intent-Filter -->
+        <!--<receiver-->
+        <!--android:name="鑷畾涔� Receiver"-->
+        <!--android:enabled="true" >-->
+        <!--<intent-filter>-->
+        <!--<action android:name="cn.jpush.android.intent.RECEIVE_MESSAGE" />-->
+        <!--<category android:name="鎮ㄥ簲鐢ㄧ殑鍖呭悕" />-->
+        <!--</intent-filter>-->
+        <!--</receiver>-->
+
+        <!--&lt;!&ndash; User defined. 鐢ㄦ埛鑷畾涔夌殑骞挎挱鎺ユ敹鍣�&ndash;&gt;-->
+        <receiver
+            android:name="com.secondworld.univeralsdk.JPushReceiver"
+            android:enabled="true">
+            <intent-filter>
+                <!--Required 鐢ㄦ埛娉ㄥ唽SDK鐨刬ntent-->
+                <action android:name="cn.jpush.android.intent.REGISTRATION" />
+                <!--Required 鐢ㄦ埛鎺ユ敹SDK娑堟伅鐨刬ntent-->
+                <action android:name="cn.jpush.android.intent.MESSAGE_RECEIVED" />
+                <!--Required 鐢ㄦ埛鎺ユ敹SDK閫氱煡鏍忎俊鎭殑intent-->
+                <action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED" />
+                <!-- 鎺ユ敹缃戠粶鍙樺寲 杩炴帴/鏂紑 since 1.6.3 -->
+                <action android:name="cn.jpush.android.intent.CONNECTION" />
+                <category android:name="${appId}" />
+            </intent-filter>
+        </receiver>
+
+        <!-- Required. For publish channel feature -->
+        <!-- JPUSH_CHANNEL 鏄负浜嗘柟渚垮紑鍙戣�呯粺璁PK鍒嗗彂娓犻亾銆�-->
+        <!-- 渚嬪: -->
+        <!-- 鍙戝埌 Google Play 鐨凙PK鍙互璁剧疆涓� google-play; -->
+        <!-- 鍙戝埌鍏朵粬甯傚満鐨� APK 鍙互璁剧疆涓� xxx-market銆� -->
+        <meta-data
+            android:name="JPUSH_CHANNEL"
+            android:value="developer-default" />
+        <!-- Required. AppKey copied from Portal -->
+        <meta-data
+            android:name="JPUSH_APPKEY"
+            android:value="${JpushAppKey}" />
+    </application>
+
+</manifest>
\ No newline at end of file
diff --git a/Project/xn_sdk/src/main/java/com/secondworld/univeralsdk/BatteryUtil.java b/Project/xn_sdk/src/main/java/com/secondworld/univeralsdk/BatteryUtil.java
new file mode 100644
index 0000000..abd77fb
--- /dev/null
+++ b/Project/xn_sdk/src/main/java/com/secondworld/univeralsdk/BatteryUtil.java
@@ -0,0 +1,113 @@
+package com.secondworld.univeralsdk;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.os.BatteryManager;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * Created by Administrator on 2018/7/15 0015.
+ */
+
+public class BatteryUtil
+{
+    private static BatteryUtil s_Instance = null;
+
+    public static BatteryUtil getInstance()
+    {
+        if (s_Instance == null)
+        {
+            s_Instance = new BatteryUtil();
+        }
+        return s_Instance;
+    }
+
+    private BatteryBroadCastReceiver m_BatteryBroadCastReceiver;
+
+    private BatteryUtil() {}
+
+    public void start(Context context)
+    {
+        m_BatteryBroadCastReceiver = new BatteryBroadCastReceiver();
+        IntentFilter filter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
+        context.registerReceiver(m_BatteryBroadCastReceiver, filter);
+    }
+
+    public void stop(Context context)
+    {
+        context.unregisterReceiver(m_BatteryBroadCastReceiver);
+        m_BatteryBroadCastReceiver = null;
+    }
+
+    private class BatteryBroadCastReceiver extends BroadcastReceiver
+    {
+        private int m_BatteryLevel;
+        private int m_Status;
+
+        public BatteryBroadCastReceiver()
+        {
+            m_BatteryLevel = 0;
+        }
+
+        @Override
+        public void onReceive(Context context, Intent intent)
+        {
+            if (intent.getAction().equals(Intent.ACTION_BATTERY_CHANGED))
+            {
+                int _batteryLevel = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, 0);
+
+                Map<String, Object> _msg = new HashMap<>();
+
+                if (_batteryLevel != m_BatteryLevel)
+                {
+                    try
+                    {
+                        _msg.put("code", CodeA2U.BatteryLevel);
+                        _msg.put("level", _batteryLevel);
+
+                        UniversalUtil.sendMessageToUnity(_msg);
+
+                        m_BatteryLevel = _batteryLevel;
+
+                    } catch (Exception e)
+                    {
+                        e.printStackTrace();
+                    }
+                }
+
+                int _status = intent.getIntExtra("status", 0);
+
+                if (_status != m_Status)
+                {
+                    _msg.clear();
+
+                    int _transCode = 0;
+                    if (_status == BatteryManager.BATTERY_STATUS_CHARGING)
+                    {
+                        _transCode = 2;
+                    }
+                    else if (_status == BatteryManager.BATTERY_STATUS_NOT_CHARGING ||
+                            _status == BatteryManager.BATTERY_STATUS_DISCHARGING)
+                    {
+                        _transCode = 1;
+                    }
+                    else if (_status == BatteryManager.BATTERY_STATUS_FULL)
+                    {
+                        _transCode = 3;
+                    }
+
+                    _msg.put("code", CodeA2U.BatteryCharging);
+                    _msg.put("status", _transCode);
+
+                    UniversalUtil.sendMessageToUnity(_msg);
+
+                    m_Status = _status;
+                }
+            }
+        }
+    }
+}
diff --git a/Project/xn_sdk/src/main/java/com/secondworld/univeralsdk/CodeA2U.java b/Project/xn_sdk/src/main/java/com/secondworld/univeralsdk/CodeA2U.java
new file mode 100644
index 0000000..f74f976
--- /dev/null
+++ b/Project/xn_sdk/src/main/java/com/secondworld/univeralsdk/CodeA2U.java
@@ -0,0 +1,59 @@
+package com.secondworld.univeralsdk;
+
+/**
+ * Created by Administrator on 2018/7/18 0018.
+ */
+
+public class CodeA2U
+{
+    /**
+     * 璧勬簮鎷疯礉瀹屾垚
+     */
+    public static final int AssetCopyFinished = 0;
+    /**
+     * 鐢甸噺鏀瑰彉
+     */
+    public static final int BatteryLevel = 1;
+    /**
+     * 鍏呯數鐘舵�佹敼鍙�
+     */
+    public static final int BatteryCharging = 2;
+    /**
+     * 鍥炶皟sdk閫昏緫瀹屾瘯
+     * */
+    public static final int SdkInitComplete = 90;
+    /**
+     * 鍥炶皟android璁惧淇℃伅
+     * */
+    public static final int DeviceInfo = 3;
+    /**
+     * 鍥炶皟鎺ㄩ�佺殑鐙珛id
+     * */
+    public static final int PushClientID = 4;
+    /**
+     * 鍥炶皟澶栭儴瀛樺偍鏍圭洰褰曞湴鍧�
+     */
+    public static final int ExternalStorage = 5;
+
+    /**
+     * --------------------------------------------------------------------------------------------
+     * 浠ヤ笅涓哄悇鑷」鐩甋DK鐩稿叧
+     * --------------------------------------------------------------------------------------------
+     */
+
+    // ------------------------------------------------------------------------------------------
+    // 鑷敱SDK鐩稿叧鍥炶皟Code
+    // ------------------------------------------------------------------------------------------
+    public static final int FreePlatformInitOk = 10;
+    public static final int FreePlatformInitFail = 11;
+    public static final int FreePlatformLoginOk = 12;
+    public static final int FreePlatformLoginFail = 13;
+    public static final int FreePlatformLoginCancel = 14;
+    public static final int FreePlatformLogoutOk = 15;
+    public static final int FreePlatformLogoutFail = 16;
+    public static final int FreePlatformSwitchAccountOk = 17;
+    public static final int FreePlatformPayOk = 18;
+    public static final int FreePlatformPayFail = 19;
+    public static final int FreePlatformPayCancel = 20;
+    public static final int FreePlatformRegisterOk = 21;
+}
diff --git a/Project/xn_sdk/src/main/java/com/secondworld/univeralsdk/CodeU2A.java b/Project/xn_sdk/src/main/java/com/secondworld/univeralsdk/CodeU2A.java
new file mode 100644
index 0000000..1583ffa
--- /dev/null
+++ b/Project/xn_sdk/src/main/java/com/secondworld/univeralsdk/CodeU2A.java
@@ -0,0 +1,85 @@
+package com.secondworld.univeralsdk;
+
+/**
+ * Created by Administrator on 2018/7/18 0018.
+ */
+
+public class CodeU2A
+{
+    /**
+     * 鎵ц璧勬簮鎷疯礉
+     */
+    public static final int AssetCopy = 0;
+    /**
+     * 鎵ц寮�濮嬬數閲忔敼鍙�,鍏呯數鐘舵�佹敼鍙樼洃鍚�
+     */
+    public static final int BatteryListenStart = 1;
+    /**
+     * 鎵ц鍋滄鐢甸噺鏀瑰彉,鍏呯數鐘舵�佹敼鍙樼洃鍚�
+     */
+    public static final int BatteryListenStop = 2;
+    /**
+     * 鑾峰彇鍞竴璇嗗埆鐮�
+     */
+    public static final int UniqueID = 3;
+    /**
+     * 鐢宠鍦ˋndroidManifest鏂囦欢涓�
+     */
+    public static final int RequestManifestPermissions = 4;
+    /**
+     * 鍗曠嫭鍔ㄦ�佺敵璇锋煇涓�涓潈闄�
+     */
+    public static final int RequestPermission = 5;
+    /**
+     * 閲嶅惎搴旂敤
+     */
+    public static final int RestartApp = 6;
+    /**
+     * 鎷疯礉鏂囨湰淇℃伅
+     */
+    public static final int CopyContent = 7;
+    /**
+     * 鎵撳紑缃戝潃
+     */
+    public static final int OpenWebView = 8;
+    /**
+     * SDK鍒濆鍖�, 瀹屽叏鑷姩鍒濆鍖栫殑娴佺▼, 瀹屾垚蹇呰閫昏緫鍚庡啀鍥炶皟鍥炲幓
+     */
+    public static final int Init = 9;
+    /**
+     * 瀹夎搴旂敤
+     */
+    public static final int InstallAPK = 10;
+    /**
+     * 澶栭儴瀛樺偍鏍圭洰褰曞湴鍧�
+     */
+    public static final int ExteneralStorage = 11;
+    public static final int CopyOneAsset = 12;
+    /**
+     * --------------------------------------------------------------------------------------------
+     * 浠ヤ笅涓哄悇鑷」鐩甋DK鐩稿叧
+     * --------------------------------------------------------------------------------------------
+     */
+    /**
+     * 鑷敱sdk鐩稿叧
+     * */
+    public static final int FreePlatformInit = 100;
+    public static final int FreePlatformLogin = 101;
+    public static final int FreePlatformLogout = 102;
+    public static final int FreePlatformSwitchAccount = 103;
+    public static final int FreePlatformPay = 104;
+    public static final int PayFinished = 105;
+    public static final int CreateRole = 106;
+    public static final int RoleLogin = 107;
+    public static final int RoleLevelUp = 108;
+    /**
+     * 鏋佸厜鎺ㄩ��
+     * */
+    public static final int JPushAddLocalMessage = 200;
+    public static final int JPushRemoveLocalMessage = 201;
+    /**
+     * ClientPackage鍚憇dk鍙戦�佸垎鍖卛d
+     */
+    public static final int ClientPackage = 400;
+    public static final int SendRegistEvent = 500;
+}
diff --git a/Project/xn_sdk/src/main/java/com/secondworld/univeralsdk/CrashCatchUtil.java b/Project/xn_sdk/src/main/java/com/secondworld/univeralsdk/CrashCatchUtil.java
new file mode 100644
index 0000000..21f1d5c
--- /dev/null
+++ b/Project/xn_sdk/src/main/java/com/secondworld/univeralsdk/CrashCatchUtil.java
@@ -0,0 +1,233 @@
+package com.secondworld.univeralsdk;
+
+import android.content.Context;
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageManager;
+import android.os.Build;
+import android.os.Looper;
+import android.os.SystemClock;
+import android.widget.Toast;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.FilenameFilter;
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.io.Writer;
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * Created by Administrator on 2018/7/19 0019.
+ */
+
+public class CrashCatchUtil implements Thread.UncaughtExceptionHandler
+{
+    private static final String TAG = "CrashCatchUtil";
+    private Context m_Context;
+    private Thread.UncaughtExceptionHandler m_UncaughtExceptionHandler;
+    private Map<String, String> m_DevicceInfo = new HashMap<>();
+
+    private CrashCatchUtil() {}
+
+    private static CrashCatchUtil m_Instance;
+
+    public static CrashCatchUtil getInstance()
+    {
+        if (m_Instance == null)
+        {
+            m_Instance = new CrashCatchUtil();
+        }
+        return m_Instance;
+    }
+
+    public void init(Context context)
+    {
+        m_Context = context;
+        m_UncaughtExceptionHandler = Thread.getDefaultUncaughtExceptionHandler();
+        Thread.setDefaultUncaughtExceptionHandler(this);
+        autoClear(5);
+    }
+
+    @Override
+    public void uncaughtException(Thread thread, Throwable throwable)
+    {
+        if (!handleException(throwable) && m_UncaughtExceptionHandler != null)
+        {
+            m_UncaughtExceptionHandler.uncaughtException(thread, throwable);
+        }
+        else
+        {
+            SystemClock.sleep(3000);
+            android.os.Process.killProcess(android.os.Process.myPid());
+            System.exit(1);
+        }
+    }
+
+    private void recordDeviceInfo()
+    {
+        m_DevicceInfo.clear();
+        m_DevicceInfo.put("brand", Build.BRAND);
+        m_DevicceInfo.put("model", Build.MODEL);
+        m_DevicceInfo.put("android_version", String.valueOf(Build.VERSION.SDK_INT));
+        try
+        {
+            PackageManager _pkgMgr = m_Context.getPackageManager();
+            PackageInfo _pkgInfo = _pkgMgr.getPackageInfo(m_Context.getPackageName(),
+                                                          PackageManager.GET_ACTIVITIES);
+            if (_pkgInfo != null)
+            {
+                m_DevicceInfo.put("versionName", _pkgInfo.versionName);
+                m_DevicceInfo.put("versionCode", String.valueOf(_pkgInfo.versionCode));
+            }
+        } catch (PackageManager.NameNotFoundException e)
+        {
+            e.printStackTrace();
+        }
+    }
+
+    private boolean handleException(Throwable throwable)
+    {
+        if (throwable == null)
+        {
+            return false;
+        }
+
+        try
+        {
+            new Thread(new Runnable()
+            {
+                @Override
+                public void run()
+                {
+                    Looper.prepare();
+                    Toast.makeText(m_Context, "绋嬪簭鍑虹幇寮傚父,鍗冲皢閲嶅惎", Toast.LENGTH_LONG).show();
+                    Looper.loop();
+                }
+            }).start();
+
+            recordDeviceInfo();
+
+            save(throwable);
+
+            SystemClock.sleep(3000);
+
+        } catch (Exception e)
+        {
+            e.printStackTrace();
+        }
+        return true;
+    }
+
+    private String save(Throwable throwable) throws Exception
+    {
+        StringBuffer sb = new StringBuffer();
+        try
+        {
+            SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+            String date = sDateFormat.format(new Date());
+            sb.append("\r\n" + date + "\n");
+            for (Map.Entry<String, String> entry : m_DevicceInfo.entrySet())
+            {
+                String key = entry.getKey();
+                String value = entry.getValue();
+                sb.append(key + "=" + value + "\n");
+            }
+
+            Writer writer = new StringWriter();
+            PrintWriter printWriter = new PrintWriter(writer);
+            throwable.printStackTrace(printWriter);
+            Throwable cause = throwable.getCause();
+            while (cause != null)
+            {
+                cause.printStackTrace(printWriter);
+                cause = cause.getCause();
+            }
+            printWriter.flush();
+            printWriter.close();
+            String result = writer.toString();
+            sb.append(result);
+
+            String fileName = writeFile(sb.toString());
+            return fileName;
+        } catch (Exception e)
+        {
+            sb.append("鍐欏叆宕╂簝鏃ュ織鏃�, 鍑虹幇浜嗗紓甯哥姸鍐�...\r\n");
+            writeFile(sb.toString());
+        }
+        return null;
+
+    }
+
+    private DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
+
+    private String writeFile(String sb) throws Exception
+    {
+        String time = formatter.format(new Date());
+        String fileName = "crash-" + time + ".log";
+        String path = getPath();
+        File dir = new File(getPath());
+        if (!dir.exists())
+        {
+            dir.mkdirs();
+        }
+        FileOutputStream fos = new FileOutputStream(path + fileName, true);
+        fos.write(sb.getBytes());
+        fos.flush();
+        fos.close();
+        return fileName;
+    }
+
+    private String getPath()
+    {
+        return m_Context.getExternalFilesDir("").getAbsolutePath()
+                + File.separator
+                + "crash"
+                + File.separator;
+    }
+
+    /**
+     * 鏂囦欢鍒犻櫎
+     *
+     * @param autoClearDay 鏂囦欢淇濆瓨澶╂暟
+     */
+    public void autoClear(final int autoClearDay)
+    {
+        delete(getPath(), new FilenameFilter()
+        {
+            @Override
+            public boolean accept(File file, String filename)
+            {
+                String s = FileUtil.getFileNameWithoutExtension(filename);
+                int day = autoClearDay < 0 ? autoClearDay : -1 * autoClearDay;
+                String date = "crash-" + getOtherDay(day);
+                return date.compareTo(s) >= 0;
+            }
+        });
+    }
+
+    private void delete(String path, FilenameFilter filter)
+    {
+        File _file = new File(path);
+        if (!_file.exists())
+        {
+            return;
+        }
+        File[] _files = _file.listFiles(filter);
+        for (int i = _files.length - 1; i >= 0; i--)
+        {
+            _files[i].delete();
+        }
+    }
+
+    private String getOtherDay(int offset)
+    {
+        Calendar _calendar = Calendar.getInstance();
+        _calendar.add(Calendar.DATE, offset);
+        return formatter.format(_calendar.getTime());
+    }
+}
diff --git a/Project/xn_sdk/src/main/java/com/secondworld/univeralsdk/DebugUtil.java b/Project/xn_sdk/src/main/java/com/secondworld/univeralsdk/DebugUtil.java
new file mode 100644
index 0000000..5e6da5d
--- /dev/null
+++ b/Project/xn_sdk/src/main/java/com/secondworld/univeralsdk/DebugUtil.java
@@ -0,0 +1,59 @@
+package com.secondworld.univeralsdk;
+
+import android.app.Activity;
+import android.os.Environment;
+import android.util.Log;
+
+import java.io.File;
+
+/**
+ * Created by Administrator on 2018/7/20 0020.
+ */
+
+public class DebugUtil
+{
+    private final String TAG = "DebugUtil";
+
+    private static DebugUtil s_Instance;
+
+    public static DebugUtil getInstance()
+    {
+        if (s_Instance == null)
+        {
+            s_Instance = new DebugUtil();
+        }
+        return s_Instance;
+    }
+
+    private DebugUtil() {}
+
+    private boolean m_Enable = false;
+
+    private Activity m_Activity;
+
+    public void init(Activity activity)
+    {
+        m_Activity = activity;
+
+        String _path = Environment.getExternalStorageDirectory() + File.separator + activity.getPackageName();
+        Log.i(TAG, _path);
+        File _dir = new File(_path);
+        if (!_dir.exists())
+        {
+            _dir.mkdir();
+        }
+        _path = _path + File.separator + "SdkDebug";
+        _dir = new File(_path);
+        m_Enable = _dir.exists();
+        if(m_Enable){
+            Log.i(TAG, "--------- SDK璋冭瘯妯″紡: 寮�鍚� ---------");
+        }else{
+            Log.i(TAG, "--------- SDK璋冭瘯妯″紡: 鍏抽棴 ---------");
+        }
+    }
+
+    public boolean enable()
+    {
+        return m_Enable;
+    }
+}
diff --git a/Project/xn_sdk/src/main/java/com/secondworld/univeralsdk/FileUtil.java b/Project/xn_sdk/src/main/java/com/secondworld/univeralsdk/FileUtil.java
new file mode 100644
index 0000000..9dbafb9
--- /dev/null
+++ b/Project/xn_sdk/src/main/java/com/secondworld/univeralsdk/FileUtil.java
@@ -0,0 +1,211 @@
+package com.secondworld.univeralsdk;
+
+import android.app.Activity;
+import android.content.Context;
+import android.content.SharedPreferences;
+import android.content.res.AssetManager;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStreamWriter;
+import java.io.Writer;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * Created by Administrator on 2018/6/14 0014.
+ */
+
+public class FileUtil
+{
+
+    private static final String TAG = "H2Engine_FileUtil";
+
+    /**
+     * Unity闅忓寘璧勬簮(StreamingAssets)鎷疯礉鑷� persistentDataPath 璺緞涓�
+     */
+    public static void copyAssets(final Activity activity)
+    {
+
+        // 鍒ゆ柇鏄惁宸茬粡鎵ц杩�
+        SharedPreferences _sp = activity.getPreferences(Context.MODE_PRIVATE);
+        Boolean _isCopied = hasCopy(activity);
+
+        LogUtil.i(TAG, "鏄惁宸茬粡鎵ц杩囨嫹璐濋�昏緫: " + _isCopied);
+
+        // 鑾峰彇褰撳墠鍖呯殑鐗堟湰鍙�
+        final String _currentVer = UniversalUtil.GetVersionName(activity);
+
+        // 宸茬粡鎷疯礉杩�, 鍒欏啀娆″垽鏂竴娆$増鏈彿
+        // 濡傛灉鐗堟湰鍙蜂笉鐩稿悓, 鍒欓噸鏂拌繘琛屾嫹璐�
+        // 鑾峰彇鏈湴瀛樺偍鐨勭増鏈彿
+        String _installVer = _sp.getString(StaticDefine.LS_KEY_VERSION, "");
+
+        if (!_installVer.equals(_currentVer))
+        {
+            LogUtil.i(TAG, "鐗堟湰姣旇緝杩囧悗鍙戠幇涓嶅悓: " + _installVer + " != " + _currentVer);
+            SharedPreferences.Editor _editor = _sp.edit();
+            // 瀛樺偍姝ゆ鐨勭増鏈俊鎭�
+            _editor.putString(StaticDefine.LS_KEY_VERSION, _currentVer);
+            _editor.apply();
+
+            if (_isCopied)
+            {
+                // 灏嗘湰鍦板瓨鍌ㄤ慨鏀逛负鏈嫹璐濊繃
+                deleteRecord(activity);
+                _isCopied = false;
+            }
+        }
+
+        if (_isCopied)
+        {
+            Map<String, Object> _msg = new HashMap<>();
+            _msg.put("code", CodeA2U.AssetCopyFinished);
+            UniversalUtil.sendMessageToUnity(_msg);
+            return;
+        }
+
+        new Thread(new Runnable()
+        {
+            @Override
+            public void run()
+            {
+
+                String _dest = activity.getExternalFilesDir("").getAbsolutePath();
+                AssetManager _assetMgr = activity.getAssets();
+
+                try
+                {
+
+                    String[] _fileNames = _assetMgr.list("android");
+                    if (_fileNames != null)
+                    {
+                        for (String _fileName : _fileNames)
+                        {
+                            copy(activity, "android" + File.separator + _fileName,
+                                 _dest + File.separator + _fileName);
+                        }
+                    }
+
+                    recordCopy(activity);
+
+                    Map<String, Object> _msg = new HashMap<>();
+                    _msg.put("code", CodeA2U.AssetCopyFinished);
+                    UniversalUtil.sendMessageToUnity(_msg);
+
+                } catch (Exception e)
+                {
+                    e.printStackTrace();
+                }
+
+            }
+        }).start();
+    }
+
+    public static void copy(Context context, String fileName)
+    {
+        String _originalPath = "android" + File.separator + fileName;
+        String _destPath = context.getExternalFilesDir(
+                "").getAbsolutePath() + File.separator + fileName;
+        String _destDir = _destPath.substring(0, _destPath.lastIndexOf('/') + 1);
+        File _file = new File(_destDir);
+        if(!_file.exists())
+        {
+            LogUtil.i(TAG,"鍗曠嫭鎷疯礉 => 涓嶅瓨鍦ㄦ寚瀹氳矾寰�: " + _destDir + ", 杩欓噷鍒涘缓...");
+            _file.mkdir();
+        }
+        try
+        {
+            InputStream _is = context.getAssets().open(_originalPath);
+            FileOutputStream _fos = new FileOutputStream(new File(_destPath));
+            byte[] _buffer = new byte[1024];
+            int _byteCount;
+            while ((_byteCount = _is.read(_buffer)) != -1)
+            {
+                _fos.write(_buffer, 0, _byteCount);
+            }
+            _fos.flush();
+            _is.close();
+            _fos.close();
+            LogUtil.i("FileUtil", "鍗曠嫭鎷疯礉 => 鏂囦欢: " + _originalPath + " 宸叉嫹璐濊嚦: " + _destPath);
+        } catch (Exception e)
+        {
+            e.printStackTrace();
+        }
+    }
+
+    public static void copy(Context context, String original, String dest)
+    {
+        try
+        {
+            String _fileNames[] = context.getAssets().list(original);
+            if (_fileNames.length > 0)
+            {
+                File _dir = new File(dest);
+                _dir.mkdir();
+                LogUtil.i("FileUtil", "[" + original + "] 鏄竴涓枃浠跺す, 鍒涘缓鏂囦欢澶�: [" + dest + "]");
+                for (String _fileName : _fileNames)
+                {
+                    copy(context, original + File.separator + _fileName,
+                         dest + File.separator + _fileName);
+                }
+            }
+            else
+            {
+                InputStream _is = context.getAssets().open(original);
+                FileOutputStream _fos = new FileOutputStream(new File(dest));
+                byte[] _buffer = new byte[1024];
+                int _byteCount;
+                while ((_byteCount = _is.read(_buffer)) != -1)
+                {
+                    _fos.write(_buffer, 0, _byteCount);
+                }
+                _fos.flush();
+                _is.close();
+                _fos.close();
+                LogUtil.i("FileUtil", "鏂囦欢: " + original + " 宸叉嫹璐濊嚦: " + dest);
+            }
+        } catch (Exception e)
+        {
+            e.printStackTrace();
+        }
+    }
+
+    public static String getFileNameWithoutExtension(String fileName)
+    {
+        return fileName.substring(0, fileName.lastIndexOf("."));
+    }
+
+    private static boolean hasCopy(Context context)
+    {
+        File _file = new File(context.getExternalFilesDir(""), "/assetCopyFinish.txt");
+        return _file.exists();
+    }
+
+    private static void deleteRecord(Context context)
+    {
+        File _file = new File(context.getExternalFilesDir(""), "/assetCopyFinish.txt");
+        if (_file.exists())
+        {
+            _file.delete();
+        }
+    }
+
+    private static void recordCopy(Context context)
+    {
+        File _file = new File(context.getExternalFilesDir(""), "/assetCopyFinish.txt");
+        try
+        {
+            FileOutputStream _fos = new FileOutputStream(_file);
+            Writer _writer = new OutputStreamWriter(_fos, "UTF-8");
+            _writer.write(1);
+            _writer.close();
+            _fos.close();
+        } catch (IOException e)
+        {
+            e.printStackTrace();
+        }
+    }
+}
diff --git a/Project/xn_sdk/src/main/java/com/secondworld/univeralsdk/JPushReceiver.java b/Project/xn_sdk/src/main/java/com/secondworld/univeralsdk/JPushReceiver.java
new file mode 100644
index 0000000..9ec4e3b
--- /dev/null
+++ b/Project/xn_sdk/src/main/java/com/secondworld/univeralsdk/JPushReceiver.java
@@ -0,0 +1,147 @@
+package com.secondworld.univeralsdk;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.os.Bundle;
+import android.util.Log;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import cn.jpush.android.api.JPushInterface;
+
+/**
+ * Created by Administrator on 2018/6/16 0016.
+ */
+public class JPushReceiver extends BroadcastReceiver
+{
+    private static final String TAG = "JPushReceiver";
+
+    @Override
+    public void onReceive(Context context, Intent intent)
+    {
+        try
+        {
+            Bundle bundle = intent.getExtras();
+            Log.d(TAG,
+                  "[MyReceiver] onReceive - " + intent.getAction() + ", extras: " + printBundle(
+                          bundle));
+
+            if (JPushInterface.ACTION_REGISTRATION_ID.equals(intent.getAction()))
+            {
+                String regId = bundle.getString(JPushInterface.EXTRA_REGISTRATION_ID);
+                Log.d(TAG, "[MyReceiver] 鎺ユ敹Registration Id : " + regId);
+                //send the Registration Id to your server...
+                Map<String, Object> _msgStruct = new HashMap<>();
+                _msgStruct.put("code", CodeA2U.PushClientID);
+                _msgStruct.put("clientID", regId);
+                UniversalUtil.sendMessageToUnity(_msgStruct);
+            }
+            else if (JPushInterface.ACTION_MESSAGE_RECEIVED.equals(intent.getAction()))
+            {
+                processCustomMessage(context, bundle);
+            }
+            else if (JPushInterface.ACTION_NOTIFICATION_RECEIVED.equals(intent.getAction()))
+            {
+                Log.d(TAG, "[MyReceiver] 鎺ユ敹鍒版帹閫佷笅鏉ョ殑閫氱煡");
+                int notifactionId = bundle.getInt(JPushInterface.EXTRA_NOTIFICATION_ID);
+                Log.d(TAG, "[MyReceiver] 鎺ユ敹鍒版帹閫佷笅鏉ョ殑閫氱煡鐨処D: " + notifactionId);
+            }
+            else if (JPushInterface.ACTION_NOTIFICATION_OPENED.equals(intent.getAction()))
+            {
+                Log.d(TAG, "[MyReceiver] 鐢ㄦ埛鐐瑰嚮鎵撳紑浜嗛�氱煡");
+                //鎵撳紑鑷畾涔夌殑Activity
+                Intent i = new Intent(context, MainActivity.class);
+                i.putExtras(bundle);
+                i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
+                context.startActivity(i);
+            }
+            else if (JPushInterface.ACTION_RICHPUSH_CALLBACK.equals(intent.getAction()))
+            {
+                Log.d(TAG, "[MyReceiver] 鐢ㄦ埛鏀跺埌鍒癛ICH PUSH CALLBACK: " + bundle.getString(
+                        JPushInterface.EXTRA_EXTRA));
+                //鍦ㄨ繖閲屾牴鎹� JPushInterface.EXTRA_EXTRA 鐨勫唴瀹瑰鐞嗕唬鐮侊紝姣斿鎵撳紑鏂扮殑Activity锛� 鎵撳紑涓�涓綉椤电瓑..
+            }
+            else if (JPushInterface.ACTION_CONNECTION_CHANGE.equals(intent.getAction()))
+            {
+                boolean connected = intent.getBooleanExtra(JPushInterface.EXTRA_CONNECTION_CHANGE,
+                                                           false);
+                Log.w(TAG,
+                      "[MyReceiver]" + intent.getAction() + " connected state change to " + connected);
+            }
+            else
+            {
+                Log.d(TAG, "[MyReceiver] Unhandled intent - " + intent.getAction());
+            }
+        } catch (Exception e)
+        {
+
+        }
+
+    }
+
+    // 鎵撳嵃鎵�鏈夌殑 intent extra 鏁版嵁
+    private static String printBundle(Bundle bundle)
+    {
+        StringBuilder sb = new StringBuilder();
+//        for (String key : bundle.keySet()) {
+//            if (key.equals(JPushInterface.EXTRA_NOTIFICATION_ID)) {
+//                sb.append("\nkey:" + key + ", value:" + bundle.getInt(key));
+//            }else if(key.equals(JPushInterface.EXTRA_CONNECTION_CHANGE)){
+//                sb.append("\nkey:" + key + ", value:" + bundle.getBoolean(key));
+//            } else if (key.equals(JPushInterface.EXTRA_EXTRA)) {
+//                if (TextUtils.isEmpty(bundle.getString(JPushInterface.EXTRA_EXTRA))) {
+//                    Logger.i(TAG, "This message has no Extra data");
+//                    continue;
+//                }
+//
+//                try {
+//                    JSONObject json = new JSONObject(bundle.getString(JPushInterface.EXTRA_EXTRA));
+//                    Iterator<String> it =  json.keys();
+//
+//                    while (it.hasNext()) {
+//                        String myKey = it.next();
+//                        sb.append("\nkey:" + key + ", value: [" +
+//                                          myKey + " - " +json.optString(myKey) + "]");
+//                    }
+//                } catch (JSONException e) {
+//                    Logger.e(TAG, "Get message extra JSON error!");
+//                }
+//
+//            } else {
+//                sb.append("\nkey:" + key + ", value:" + bundle.get(key));
+//            }
+//        }
+        return sb.toString();
+    }
+
+//    public static final String KEY_TITLE = "title";
+//    public static final String KEY_MESSAGE = "message";
+//    public static final String KEY_EXTRAS = "extras";
+
+    //send msg to MainActivity
+    private void processCustomMessage(Context context, Bundle bundle)
+    {
+        Log.d(TAG, "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!![MyReceiver] 鎺ユ敹鍒版帹閫佷笅鏉ョ殑鑷畾涔夋秷鎭�: " + bundle.getString(
+                JPushInterface.EXTRA_MESSAGE));
+//        if (MainActivity.isForeground) {
+//            String message = bundle.getString(JPushInterface.EXTRA_MESSAGE);
+//            String extras = bundle.getString(JPushInterface.EXTRA_EXTRA);
+//            Intent msgIntent = new Intent(MainActivity.MESSAGE_RECEIVED_ACTION);
+//            msgIntent.putExtra(MainActivity.KEY_MESSAGE, message);
+//            if (!UniversalUtil.isEmpty(extras)) {
+//                try {
+//                    JSONObject extraJson = new JSONObject(extras);
+//                    if (extraJson.length() > 0) {
+//                        msgIntent.putExtra(MainActivity.KEY_EXTRAS, extras);
+//                    }
+//                } catch (JSONException e) {
+//
+//                }
+//
+//            }
+//            LocalBroadcastManager.getInstance(context).sendBroadcast(msgIntent);
+//        }
+    }
+}
diff --git a/Project/xn_sdk/src/main/java/com/secondworld/univeralsdk/LogUtil.java b/Project/xn_sdk/src/main/java/com/secondworld/univeralsdk/LogUtil.java
new file mode 100644
index 0000000..f92fca1
--- /dev/null
+++ b/Project/xn_sdk/src/main/java/com/secondworld/univeralsdk/LogUtil.java
@@ -0,0 +1,114 @@
+package com.secondworld.univeralsdk;
+
+import android.app.Activity;
+import android.util.Log;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+/**
+ * Created by Administrator on 2018/7/25 0025.
+ */
+
+public class LogUtil
+{
+    private static final String Global_TAG = "h2EngineSdk";
+    private static final String TAG = "LogUtil";
+    public static boolean UPLOAD = false;
+    private static boolean SAVE = false;
+    private static boolean SHOW = true;
+
+    private final static SimpleDateFormat m_DateFormatMS = new SimpleDateFormat(
+            "yyyy-MM-dd HH:mm:ss.SSS");
+    private final static SimpleDateFormat m_DateFormatDay = new SimpleDateFormat("yyyy-MM-dd");
+
+    private static Activity m_Activity;
+
+    public static void init(Activity activity, boolean showLog)
+    {
+        m_Activity = activity;
+        SHOW = showLog;
+        File _file = new File(getPath());
+        if (_file.exists())
+        {
+            SAVE = true;
+            i(TAG, "鍚姩鏈湴log瀛樺偍鍔熻兘");
+        }
+        else
+        {
+            SAVE = false;
+            i(TAG, "鏈惎鍔ㄦ湰鍦發og瀛樺偍鍔熻兘");
+        }
+    }
+
+    public static void i(String tag, String content)
+    {
+        content = ("[" + m_DateFormatMS.format(new Date()) + "]") + "[" + tag + "] " + content;
+        Log.i(Global_TAG, content);
+        if (SAVE)
+        {
+            write(content);
+        }
+    }
+
+    public static void w(String tag, String content)
+    {
+        content = ("[" + m_DateFormatMS.format(new Date()) + "]") + "[" + tag + "] " + content;
+        Log.w(Global_TAG, content);
+        if (SAVE)
+        {
+            write(content);
+        }
+    }
+
+    public static void e(String tag, String content)
+    {
+        content = ("[" + m_DateFormatMS.format(new Date()) + "]") + "[" + tag + "] " + content;
+        Log.e(Global_TAG, content);
+        if (SAVE)
+        {
+            write(content);
+        }
+    }
+
+    private static String getPath()
+    {
+        if (m_Activity.getExternalFilesDir("") == null)
+        {
+            Log.i(TAG,"m_Activity.getExternalFilesDir(\"\") == null");
+            return "";
+        }
+
+        return m_Activity.getExternalFilesDir("").getAbsolutePath()
+                + File.separator
+                + "debugLog"
+                + File.separator;
+    }
+
+    private static void write(String content)
+    {
+        try
+        {
+            String time = m_DateFormatDay.format(new Date());
+            String fileName = "log_" + time + ".log";
+            FileOutputStream fos = new FileOutputStream(getPath() + fileName, true);
+            fos.write(content.getBytes());
+            fos.flush();
+            fos.close();
+        } catch (IOException e)
+        {
+            e.printStackTrace();
+        }
+    }
+
+    public static void upLoad()
+    {
+        if (!UPLOAD)
+        {
+            return;
+        }
+    }
+}
diff --git a/Project/xn_sdk/src/main/java/com/secondworld/univeralsdk/MainActivity.java b/Project/xn_sdk/src/main/java/com/secondworld/univeralsdk/MainActivity.java
new file mode 100644
index 0000000..8a12c9f
--- /dev/null
+++ b/Project/xn_sdk/src/main/java/com/secondworld/univeralsdk/MainActivity.java
@@ -0,0 +1,209 @@
+package com.secondworld.univeralsdk;
+
+import android.Manifest;
+import android.app.AlertDialog;
+import android.content.DialogInterface;
+import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.content.res.Configuration;
+import android.net.Uri;
+import android.os.Bundle;
+import android.os.Process;
+import android.provider.Settings;
+import android.support.annotation.NonNull;
+import android.support.v4.content.PermissionChecker;
+import android.view.View;
+import android.widget.FrameLayout;
+import android.widget.RelativeLayout;
+
+import com.unity3d.player.UnityPlayerActivity;
+import com.xiaoniu.enter.XNSDK;
+
+public class MainActivity extends UnityPlayerActivity
+{
+    private static final String TAG = "MainActivity";
+    public static boolean isForeground = false;
+    // 鍚敤6.0浠ヤ笂鏉冮檺鍥炶皟code
+    // private static final int CODE_REQUEST_PERMISSION = 1000;
+
+    private RelativeLayout m_MainContainer;
+    private int mType;
+    private boolean isNotch = false;
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState)
+    {
+        super.onCreate(savedInstanceState);
+
+        LogUtil.i(TAG, "onCreate");
+        LogUtil.init(this, true);
+
+        setContentView(R.layout.activity_main);
+
+        m_MainContainer = (RelativeLayout) findViewById(R.id.main_container);
+
+        String _brand = NotchPhoneUtil.getDeviceBrand();
+        if (_brand.toUpperCase().contains("VIVO"))
+        {
+            isNotch = NotchPhoneUtil.HasNotchVivo(MainActivity.this);
+            mType = 1;
+        }
+        else if (_brand.toUpperCase().contains("HUAWEI")
+                || _brand.toUpperCase().contains("HONOR"))
+        {
+//            isNotch = NotchPhoneUtil.hasNotchAtHuawei(this);;
+//            mType = 2;
+        }
+        else if (_brand.toUpperCase().contains("OPPO"))
+        {
+            isNotch = NotchPhoneUtil.HasNotchOPPO(MainActivity.this);
+            mType = 3;
+        }
+        else if (_brand.toUpperCase().contains("XIAOMI"))
+        {
+            isNotch = NotchPhoneUtil.HasNotchXiaoMi();
+            mType = 4;
+        }
+
+        NotchPhoneUtil.onConfigurationChanged(this, isNotch, mType, m_MainContainer);
+
+        FrameLayout _frameLayout = (FrameLayout) findViewById(R.id.unity_view);
+        View unityView = mUnityPlayer.getView();
+        _frameLayout.addView(unityView);
+
+        H2EngineSDK.onCreate(this, savedInstanceState);
+    }
+
+    @Override
+    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions,
+                                           @NonNull int[] grantResults)
+    {
+        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
+        XNSDK.getInstance().onRequestPermissionsResult(requestCode);
+    }
+
+    @Override
+    public void onWindowFocusChanged(boolean b)
+    {
+        super.onWindowFocusChanged(b);
+        H2EngineSDK.onWindowFocusChanged(b);
+    }
+
+    @Override
+    protected void onNewIntent(Intent intent)
+    {
+        super.onNewIntent(intent);
+        H2EngineSDK.onNewIntent(this, intent);
+    }
+
+    @Override
+    protected void onActivityResult(int requestCode, int resultCode, Intent data)
+    {
+        H2EngineSDK.onActivityResult(requestCode, resultCode, data, this);
+        super.onActivityResult(requestCode, resultCode, data);
+    }
+
+    @Override
+    public void onConfigurationChanged(Configuration newConfig)
+    {
+        NotchPhoneUtil.onConfigurationChanged(this, isNotch, mType, m_MainContainer);
+
+        H2EngineSDK.onConfigurationChanged(newConfig);
+
+        super.onConfigurationChanged(newConfig);
+    }
+
+    @Override
+    protected void onStart()
+    {
+        H2EngineSDK.onStart(this);
+
+        super.onStart();
+    }
+
+    @Override
+    protected void onStop()
+    {
+        isForeground = false;
+        H2EngineSDK.onStop(this);
+
+        super.onStop();
+    }
+
+    @Override
+    protected void onResume()
+    {
+        isForeground = true;
+        H2EngineSDK.onResume(this);
+
+        super.onResume();
+
+        // 妫�娴嬫湰鍦板瓨鍌ㄦ潈闄愭槸鍚︽湁, 娌℃湁鐨勮瘽瑕佹彁绀虹敤鎴�
+        if (PermissionChecker.checkPermission(this,
+                                              Manifest.permission.WRITE_EXTERNAL_STORAGE,
+                                              Process.myPid(), Process.myUid(),
+                                              getPackageName()) != PackageManager.PERMISSION_GRANTED
+                || PermissionChecker.checkPermission(this,
+                                                     Manifest.permission.READ_EXTERNAL_STORAGE,
+                                                     Process.myPid(), Process.myUid(),
+                                                     getPackageName()) != PackageManager.PERMISSION_GRANTED)
+        {
+            new AlertDialog.Builder(this)
+                    .setMessage("搴旂敤娌℃湁瀛樺偍璇诲彇鏉冮檺,鐐瑰嚮纭畾鑷宠缃腑寮�鍚�,鍚﹀垯鏃犳硶缁х画娓告垙.")
+                    .setCancelable(false)
+                    .setPositiveButton("纭畾",
+                                       new DialogInterface.OnClickListener()
+                                       {
+                                           @Override
+                                           public void onClick(DialogInterface dialogInterface,
+                                                               int i)
+                                           {
+                                               UniversalUtil.hasGoToSetting = true;
+                                               Intent intent = new Intent(
+                                                       Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
+                                               intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+                                               Uri uri = Uri.fromParts("package",
+                                                                       getPackageName(),
+                                                                       null);
+                                               intent.setData(uri);
+                                               startActivity(intent);
+                                           }
+                                       })
+                    .setNegativeButton("鎷掔粷",
+                                       new DialogInterface.OnClickListener()
+                                       {
+                                           @Override
+                                           public void onClick(DialogInterface dialogInterface,
+                                                               int i)
+                                           {
+                                               finish();
+                                           }
+                                       })
+                    .show();
+        }
+    }
+
+    @Override
+    protected void onPause()
+    {
+        H2EngineSDK.onPause(this);
+
+        super.onPause();
+    }
+
+    @Override
+    protected void onDestroy()
+    {
+        H2EngineSDK.onDestroy(this);
+
+        super.onDestroy();
+    }
+
+    @Override
+    protected void onRestart()
+    {
+        H2EngineSDK.onRestart(this);
+
+        super.onRestart();
+    }
+}
diff --git a/Project/xn_sdk/src/main/java/com/secondworld/univeralsdk/NotchPhoneUtil.java b/Project/xn_sdk/src/main/java/com/secondworld/univeralsdk/NotchPhoneUtil.java
new file mode 100644
index 0000000..51a355c
--- /dev/null
+++ b/Project/xn_sdk/src/main/java/com/secondworld/univeralsdk/NotchPhoneUtil.java
@@ -0,0 +1,347 @@
+package com.secondworld.univeralsdk;
+
+import android.app.Activity;
+import android.content.Context;
+import android.view.Surface;
+import android.view.ViewGroup;
+import android.widget.FrameLayout;
+
+import java.lang.reflect.Method;
+
+/**
+ * Created by Administrator on 2018/9/11 0011.
+ */
+
+public class NotchPhoneUtil
+{
+    private final static String TAG = "Notch";
+    /**
+     * 鍗庝负鎵嬫満鍒ゆ柇鏄笉鏄垬娴锋墜鏈�
+     *
+     * @param context
+     * @return
+     */
+    public static boolean hasNotchAtHuawei(Context context)
+    {
+        boolean ret = false;
+        try
+        {
+            ClassLoader classLoader = context.getClassLoader();
+            Class HwNotchSizeUtil = classLoader.loadClass(
+                    "com.huawei.android.util.HwNotchSizeUtil");
+            Method get = HwNotchSizeUtil.getMethod("hasNotchInScreen");
+            ret = (boolean) get.invoke(HwNotchSizeUtil);
+        } catch (ClassNotFoundException e)
+        {
+            LogUtil.e(TAG, "hasNotchAtHuawei ClassNotFoundException");
+        } catch (NoSuchMethodException e)
+        {
+            LogUtil.e(TAG, "hasNotchAtHuawei NoSuchMethodException");
+        } catch (Exception e)
+        {
+            LogUtil.e(TAG, "hasNotchAtHuawei Exception");
+        } finally
+        {
+            return ret;
+        }
+    }
+
+
+    /**
+     * 鍗庝负鎵嬫満鑾峰彇鍒樻捣鐨勫楂�
+     * int[0]鍊间负鍒樻捣瀹藉害 int[1]鍊间负鍒樻捣楂樺害
+     */
+    public static int[] getNotchSizeAtHuawei(Context context)
+    {
+        int[] ret = new int[]{0, 0};
+        try
+        {
+            ClassLoader cl = context.getClassLoader();
+            Class HwNotchSizeUtil = cl.loadClass("com.huawei.android.util.HwNotchSizeUtil");
+            Method get = HwNotchSizeUtil.getMethod("getNotchSize");
+            ret = (int[]) get.invoke(HwNotchSizeUtil);
+        } catch (ClassNotFoundException e)
+        {
+            LogUtil.e(TAG, "getNotchSizeAtHuawei ClassNotFoundException");
+        } catch (NoSuchMethodException e)
+        {
+            LogUtil.e(TAG, "getNotchSizeAtHuawei NoSuchMethodException");
+        } catch (Exception e)
+        {
+            LogUtil.e(TAG, "getNotchSizeAtHuawei Exception");
+        } finally
+        {
+            return ret;
+        }
+    }
+
+
+    /**
+     * OPPO鍒ゆ柇鏄笉鏄垬娴锋墜鏈�,
+     * OPPO涓嶆彁渚涙帴鍙h幏鍙栧垬娴峰昂瀵革紝鐩墠鍏舵湁鍒樻捣灞忕殑鏈哄瀷灏哄瑙勬牸閮芥槸缁熶竴鐨勩�備笉鎺掗櫎浠ュ悗鏈哄瀷浼氭湁鍙樺寲銆�
+     * 鍒樻捣鍖哄煙鍒欓兘鏄搴︿负324px, 楂樺害涓�80px銆�
+     *
+     * @param context
+     * @return
+     */
+    public static boolean HasNotchOPPO(Context context)
+    {
+        return context.getPackageManager().hasSystemFeature(
+                "com.oppo.feature.screen.heteromorphism");
+    }
+
+
+    public static final int VIVO_NOTCH = 0x00000020;//鏄惁鏈夊垬娴�
+
+    /**
+     * vivo鍒ゆ柇鏄笉鏄垬娴锋墜鏈�
+     */
+    public static boolean HasNotchVivo(Context context)
+    {
+        boolean ret = false;
+        try
+        {
+            ClassLoader classLoader = context.getClassLoader();
+            Class FtFeature = classLoader.loadClass("android.util.FtFeature");
+            Method method = FtFeature.getMethod("isFeatureSupport", int.class);
+            ret = (boolean) method.invoke(FtFeature, VIVO_NOTCH);
+        } catch (ClassNotFoundException e)
+        {
+            LogUtil.e(TAG, "hasNotchAtVivo ClassNotFoundException");
+        } catch (NoSuchMethodException e)
+        {
+            LogUtil.e(TAG, "hasNotchAtVivo NoSuchMethodException");
+        } catch (Exception e)
+        {
+            LogUtil.e(TAG, "hasNotchAtVivo Exception");
+        } finally
+        {
+            return ret;
+        }
+
+    }
+
+    /**
+     * 灏忕背鎵嬫満鍒ゆ柇鏄笉鏄垬娴锋墜鏈�
+     *
+     * @return
+     */
+    public static boolean HasNotchXiaoMi()
+    {
+        Boolean _hasNotchXiaoMi = getPropertyInt("ro.miui.notch", 0) == 1 ? true : false;
+        LogUtil.i(TAG,"鏄惁鏄皬绫冲垬娴锋墜鏈�: " + _hasNotchXiaoMi);
+        return _hasNotchXiaoMi;
+    }
+
+    private static int getPropertyInt(String key,int defaultValue)
+    {
+        int value = defaultValue;
+        try
+        {
+            Class<?> c = Class.forName("android.os.SystemProperties");
+            Method get = c.getMethod("get", String.class, String.class);
+            value = (int) (get.invoke(c, key, "unknown"));
+        } catch (Exception e)
+        {
+            e.printStackTrace();
+        } finally
+        {
+            return value;
+        }
+    }
+
+    /**
+     * 灏忕背鎵嬫満鑾峰彇鍒樻捣鐨勯珮搴�
+     */
+    public static int getStatusBarHeight(Context context)
+    {
+        int statusBarHeight = 0;
+        int resourceId = context.getResources().getIdentifier("status_bar_height", "dimen",
+                                                              "android");
+        if (resourceId > 0)
+        {
+            statusBarHeight = context.getResources().getDimensionPixelSize(resourceId);
+        }
+        return statusBarHeight;
+    }
+
+    /**
+     * 灞忓箷鏃嬭浆姹囨�荤殑鏂规硶
+     *
+     * @param activity
+     * @param isNotch
+     * @param type
+     * @param viewGroup
+     */
+    public static void onConfigurationChanged(Activity activity, Boolean isNotch, int type,
+                                              ViewGroup viewGroup)
+    {
+        if (getDisplayRotation(activity) == 0)
+        {
+            if (isNotch)
+            {
+                switch (type)
+                {
+                    case 1:   //vivo
+                        FrameLayout.LayoutParams lpvivo = (FrameLayout.LayoutParams) viewGroup.getLayoutParams();
+                        lpvivo.topMargin = dp2px(activity, 32);
+                        lpvivo.leftMargin = 0;
+                        lpvivo.rightMargin = 0;
+                        viewGroup.setLayoutParams(lpvivo);
+                        break;
+                    case 2: //HUAWEI
+
+                        int[] sizeAtHuawei = NotchPhoneUtil.getNotchSizeAtHuawei(activity);
+                        FrameLayout.LayoutParams lphuawei = (FrameLayout.LayoutParams) viewGroup.getLayoutParams();
+                        lphuawei.topMargin = sizeAtHuawei[1];
+                        lphuawei.leftMargin = 0;
+                        lphuawei.rightMargin = 0;
+                        viewGroup.setLayoutParams(lphuawei);
+
+                        break;
+                    case 3:  //OPPO  鐩墠閮戒负 80px
+                        FrameLayout.LayoutParams lpOppo = (FrameLayout.LayoutParams) viewGroup.getLayoutParams();
+                        lpOppo.topMargin = 80;
+                        lpOppo.leftMargin = 0;
+                        lpOppo.rightMargin = 0;
+                        viewGroup.setLayoutParams(lpOppo);
+
+
+                        break;
+                    case 4:  //Xiaomi
+                        int sizeAtXiaomi = NotchPhoneUtil.getStatusBarHeight(activity);
+                        FrameLayout.LayoutParams lpXiaomi = (FrameLayout.LayoutParams) viewGroup.getLayoutParams();
+                        lpXiaomi.topMargin = sizeAtXiaomi;
+                        lpXiaomi.leftMargin = 0;
+                        lpXiaomi.rightMargin = 0;
+                        viewGroup.setLayoutParams(lpXiaomi);
+
+                        break;
+                }
+
+            }
+
+        }
+        else if (getDisplayRotation(activity) == 90)
+        {
+            leftAndRightChange(activity, isNotch, type, viewGroup);
+        }
+        else if (getDisplayRotation(activity) == 180)
+        {
+        }
+        else if (getDisplayRotation(activity) == 270)
+        {
+            leftAndRightChange(activity, isNotch, type, viewGroup);
+        }
+
+
+    }
+
+    /**
+     * 宸﹀彸妯睆閮芥槸璁� leftMargin  鍜宺ightMargin 绌哄嚭涓�涓垬娴风殑璺濈
+     *
+     * @param activity
+     * @param isNotch
+     * @param type
+     * @param viewGroup
+     */
+    private static void leftAndRightChange(Activity activity, Boolean isNotch, int type,
+                                           ViewGroup viewGroup)
+    {
+        if (isNotch)
+        {
+            switch (type)
+            {
+                case 1:   //vivo
+                    FrameLayout.LayoutParams lpvivo = (FrameLayout.LayoutParams) viewGroup.getLayoutParams();
+                    lpvivo.leftMargin = dp2px(activity, 32);
+                    lpvivo.rightMargin = dp2px(activity, 32);
+                    lpvivo.topMargin = 0;
+                    lpvivo.bottomMargin = 0;
+                    viewGroup.setLayoutParams(lpvivo);
+                    break;
+                case 2: //HUAWEI
+
+                    int[] sizeAtHuawei = NotchPhoneUtil.getNotchSizeAtHuawei(activity);
+                    FrameLayout.LayoutParams lphuawei = (FrameLayout.LayoutParams) viewGroup.getLayoutParams();
+                    lphuawei.leftMargin = sizeAtHuawei[1];
+                    lphuawei.rightMargin = sizeAtHuawei[1];
+                    lphuawei.topMargin = 0;
+                    lphuawei.bottomMargin = 0;
+                    viewGroup.setLayoutParams(lphuawei);
+
+                    break;
+                case 3:  //OPPO  鐩墠閮戒负 80px
+                    FrameLayout.LayoutParams lpOppo = (FrameLayout.LayoutParams) viewGroup.getLayoutParams();
+                    lpOppo.leftMargin = 80;
+                    lpOppo.rightMargin = 80;
+                    lpOppo.topMargin = 0;
+                    lpOppo.bottomMargin = 0;
+                    viewGroup.setLayoutParams(lpOppo);
+
+                    break;
+                case 4:  //Xiaomi
+                    int sizeAtXiaomi = NotchPhoneUtil.getStatusBarHeight(activity);
+                    FrameLayout.LayoutParams lpXiaomi = (FrameLayout.LayoutParams) viewGroup.getLayoutParams();
+                    lpXiaomi.leftMargin = sizeAtXiaomi;
+                    lpXiaomi.rightMargin = sizeAtXiaomi;
+                    lpXiaomi.topMargin = 0;
+                    lpXiaomi.bottomMargin = 0;
+                    viewGroup.setLayoutParams(lpXiaomi);
+                    break;
+            }
+
+        }
+    }
+
+    /**
+     * 鑾峰彇褰撳墠灞忓箷鏃嬭浆瑙掑害
+     *
+     * @param activity
+     * @return 0琛ㄧず鏄珫灞�; 90琛ㄧず鏄乏妯睆; 180琛ㄧず鏄弽鍚戠珫灞�; 270琛ㄧず鏄彸妯睆
+     */
+    public static int getDisplayRotation(Activity activity)
+    {
+        if (activity == null)
+        {
+            return 0;
+        }
+
+        int rotation = activity.getWindowManager().getDefaultDisplay()
+                .getRotation();
+        switch (rotation)
+        {
+            case Surface.ROTATION_0:
+                return 0;
+            case Surface.ROTATION_90:
+                return 90;
+            case Surface.ROTATION_180:
+                return 180;
+            case Surface.ROTATION_270:
+                return 270;
+        }
+        return 0;
+    }
+
+    /**
+     * px杞琩p
+     *
+     * @param context
+     * @param dipValue
+     */
+    public static int dp2px(Context context, float dipValue)
+    {
+        final float scale = context.getResources().getDisplayMetrics().density;
+        return (int) (dipValue * scale + 0.5f);
+    }
+
+    /**
+     * 鑾峰彇鎵嬫満鍘傚晢
+     *
+     * @return 鎵嬫満鍘傚晢   Xiaomi   HUAWEI   vivo
+     */
+    public static String getDeviceBrand()
+    {
+        return android.os.Build.BRAND;
+    }
+}
diff --git a/Project/xn_sdk/src/main/java/com/secondworld/univeralsdk/StaticDefine.java b/Project/xn_sdk/src/main/java/com/secondworld/univeralsdk/StaticDefine.java
new file mode 100644
index 0000000..c53009b
--- /dev/null
+++ b/Project/xn_sdk/src/main/java/com/secondworld/univeralsdk/StaticDefine.java
@@ -0,0 +1,18 @@
+package com.secondworld.univeralsdk;
+
+/**
+ * Created by Administrator on 2018/6/14 0014.
+ */
+
+public class StaticDefine {
+
+    public static final String UnityGameObjectName = "SDKUtility";
+    public static final String UnityHandleFuncName = "HandleSdkMessage";
+
+    public static final String LS_KEY_VERSION = "H2Engine_App_Version";
+    public static final String LS_KEY_COPIED = "H2Engine_Copy_Finished";
+    public final static String LS_KEY_IMEI = "H2Engine_DEVICE_IMEI";
+    public final static String LS_KEY_MAC = "H2Engine_DEVICE_MAC";
+    public final static String LS_KEY_ANDROID_ID = "H2Engine_DEVICE_ANDROID_ID";
+
+}
diff --git a/Project/xn_sdk/src/main/java/com/secondworld/univeralsdk/UniqueID.java b/Project/xn_sdk/src/main/java/com/secondworld/univeralsdk/UniqueID.java
new file mode 100644
index 0000000..11899ea
--- /dev/null
+++ b/Project/xn_sdk/src/main/java/com/secondworld/univeralsdk/UniqueID.java
@@ -0,0 +1,226 @@
+package com.secondworld.univeralsdk;
+
+import android.Manifest;
+import android.content.Context;
+import android.content.SharedPreferences;
+import android.content.pm.PackageManager;
+import android.provider.Settings;
+import android.support.v4.content.ContextCompat;
+import android.telephony.TelephonyManager;
+import android.util.Log;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.OutputStreamWriter;
+import java.io.Reader;
+import java.io.Writer;
+import java.net.NetworkInterface;
+import java.net.SocketException;
+import java.security.MessageDigest;
+import java.util.UUID;
+
+/**
+ * Created by Administrator on 2018/7/12 0012.
+ */
+
+public class UniqueID
+{
+    public static String get(Context context)
+    {
+        String _id = read(context);
+
+        if (_id != null && !_id.equals(""))
+        {
+            return _id;
+        }
+
+        StringBuffer _buffer = new StringBuffer();
+
+        _id = getDeviceId(context);
+        _buffer.append(_id);
+
+        _id = getLocalMac(context).replace(":", "");
+        _buffer.append(_id);
+
+        if (_buffer == null || _buffer.length() <= 0)
+        {
+            UUID _uuid = UUID.randomUUID();
+            _id = _uuid.toString().replace("-", "");
+            _buffer.append(_id);
+        }
+
+        _id = getMD5(_buffer.toString(), false);
+
+        if (_id.length() > 0)
+        {
+            save(_id, context);
+        }
+        return _id;
+    }
+
+    private static String read(Context context)
+    {
+        File _file = new File(context.getExternalFilesDir(""), "/tsw_device_unique_id.txt");
+        if (!_file.exists())
+        {
+            return null;
+        }
+        StringBuffer _buffer = new StringBuffer();
+        try
+        {
+            FileInputStream _fis = new FileInputStream(_file);
+            InputStreamReader _isr = new InputStreamReader(_fis, "UTF-8");
+            Reader _in = new BufferedReader(_isr);
+            int _index;
+            while ((_index = _in.read()) > -1)
+            {
+                _buffer.append((char) _index);
+            }
+            _in.close();
+            return _buffer.toString();
+        } catch (IOException e)
+        {
+            e.printStackTrace();
+        }
+        return null;
+    }
+
+    private static void save(String id, Context context)
+    {
+        File _file = new File(context.getExternalFilesDir(""), "/tsw_device_unique_id.txt");
+        try
+        {
+            Log.i("UniqueIDUtil", "path: " + _file.getAbsolutePath());
+            FileOutputStream _fos = new FileOutputStream(_file);
+            Writer _writer = new OutputStreamWriter(_fos, "UTF-8");
+            _writer.write(id);
+            _writer.close();
+            _fos.close();
+        } catch (IOException e)
+        {
+            e.printStackTrace();
+        }
+    }
+
+    public static String getAndroidID(Context context)
+    {
+        return Settings.System.getString(context.getContentResolver(), Settings.System.ANDROID_ID);
+    }
+
+    public static String getDeviceId(Context context)
+    {
+        SharedPreferences _sp = context.getSharedPreferences(context.getPackageName(),
+                                                             Context.MODE_PRIVATE);
+        String _deviceId = _sp.getString(StaticDefine.LS_KEY_IMEI, "");
+        if (!_deviceId.equals(""))
+        {
+            return _deviceId;
+        }
+
+        TelephonyManager tm = (TelephonyManager) context
+                .getSystemService(Context.TELEPHONY_SERVICE);
+
+        if (ContextCompat.checkSelfPermission(context,
+                                              Manifest.permission.READ_PHONE_STATE) == PackageManager.PERMISSION_GRANTED)
+        {
+            _deviceId = tm.getDeviceId();
+            SharedPreferences.Editor _e = _sp.edit();
+            _e.putString(StaticDefine.LS_KEY_IMEI, _deviceId);
+            _e.apply();
+            return _deviceId;
+        }
+        return "";
+    }
+
+    public static String getLocalMac(Context context)
+    {
+        SharedPreferences _sp = context.getSharedPreferences(context.getPackageName(),
+                                                             Context.MODE_PRIVATE);
+        String _macAddress = _sp.getString(StaticDefine.LS_KEY_MAC, "");
+        if (!_macAddress.equals(""))
+        {
+            return _macAddress;
+        }
+        StringBuffer _buffer = new StringBuffer();
+        NetworkInterface _networkInterface;
+        try
+        {
+            _networkInterface = NetworkInterface.getByName("eth1");
+            if (_networkInterface == null)
+            {
+                _networkInterface = NetworkInterface.getByName("wlan0");
+            }
+            if (_networkInterface == null)
+            {
+                return "";
+            }
+            byte[] _addresses = _networkInterface.getHardwareAddress();
+            for (byte b : _addresses)
+            {
+                _buffer.append(String.format("%02X:", b));
+            }
+            if (_buffer.length() > 0)
+            {
+                _buffer.deleteCharAt(_buffer.length() - 1);
+            }
+            _macAddress = _buffer.toString();
+            SharedPreferences.Editor _e = _sp.edit();
+            _e.putString(StaticDefine.LS_KEY_MAC, _macAddress);
+            _e.apply();
+        } catch (SocketException e)
+        {
+            e.printStackTrace();
+            return "";
+        }
+        return _macAddress;
+    }
+
+    public static String getMD5(String message, boolean upperCase)
+    {
+        String md5str = "";
+        try
+        {
+            MessageDigest md = MessageDigest.getInstance("MD5");
+
+            byte[] input = message.getBytes();
+
+            byte[] buff = md.digest(input);
+
+            md5str = bytesToHex(buff, upperCase);
+
+        } catch (Exception e)
+        {
+            e.printStackTrace();
+        }
+        return md5str;
+    }
+
+    private static String bytesToHex(byte[] bytes, boolean upperCase)
+    {
+        StringBuffer md5str = new StringBuffer();
+        int digital;
+        for (int i = 0; i < bytes.length; i++)
+        {
+            digital = bytes[i];
+
+            if (digital < 0)
+            {
+                digital += 256;
+            }
+            if (digital < 16)
+            {
+                md5str.append("0");
+            }
+            md5str.append(Integer.toHexString(digital));
+        }
+        if (upperCase)
+        {
+            return md5str.toString().toUpperCase();
+        }
+        return md5str.toString().toLowerCase();
+    }
+}
diff --git a/Project/xn_sdk/src/main/java/com/secondworld/univeralsdk/UniversalUtil.java b/Project/xn_sdk/src/main/java/com/secondworld/univeralsdk/UniversalUtil.java
new file mode 100644
index 0000000..8b2a47c
--- /dev/null
+++ b/Project/xn_sdk/src/main/java/com/secondworld/univeralsdk/UniversalUtil.java
@@ -0,0 +1,401 @@
+package com.secondworld.univeralsdk;
+
+import android.Manifest;
+import android.app.Activity;
+import android.app.AlertDialog;
+import android.content.ClipData;
+import android.content.ClipboardManager;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.content.Intent;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageManager;
+import android.content.pm.PermissionInfo;
+import android.net.ConnectivityManager;
+import android.net.NetworkInfo;
+import android.net.Uri;
+import android.net.wifi.WifiInfo;
+import android.net.wifi.WifiManager;
+import android.os.Process;
+import android.provider.Settings;
+import android.support.v4.content.PermissionChecker;
+import android.widget.Toast;
+
+import com.unity3d.player.UnityPlayer;
+
+import org.json.JSONObject;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.net.Inet4Address;
+import java.net.InetAddress;
+import java.net.NetworkInterface;
+import java.net.SocketException;
+import java.net.URL;
+import java.net.URLConnection;
+import java.util.Enumeration;
+import java.util.Map;
+
+/**
+ * Created by Administrator on 2018/6/15 0015.
+ */
+
+public class UniversalUtil
+{
+    private final static String TAG = "UniversalUtil";
+
+    /**
+     * 鑾峰緱搴旂敤鐨勭増鏈彿
+     */
+    public static String GetVersionName(Context context)
+    {
+        PackageManager _packageManager = context.getPackageManager();
+        PackageInfo _packageInfo = null;
+
+        try
+        {
+            _packageInfo = _packageManager.getPackageInfo(context.getPackageName(), 0);
+        } catch (Exception e)
+        {
+            e.printStackTrace();
+        }
+
+        if (_packageInfo != null)
+        {
+            return _packageInfo.versionName;
+        }
+        return null;
+    }
+
+    public static void sendMessageToUnity(Map<String, Object> jsonMap)
+    {
+        if (jsonMap == null || jsonMap.isEmpty())
+        {
+            return;
+        }
+
+        JSONObject _jsonObject = new JSONObject(jsonMap);
+
+        UnityPlayer.UnitySendMessage(StaticDefine.UnityGameObjectName,
+                                     StaticDefine.UnityHandleFuncName,
+                                     _jsonObject.toString());
+    }
+
+    public static void InstallAPK(Context context, final String path)
+    {
+        File _file = new File(path);
+
+        if (_file == null)
+        {
+            Toast.makeText(context, "缁欏畾鐨勫湴鍧�[" + path + "]鎵句笉鍒拌瀹夎鐨勫簲鐢ㄦ枃浠�", Toast.LENGTH_SHORT).show();
+            return;
+        }
+
+        try
+        {
+            Intent _intent = new Intent(Intent.ACTION_VIEW);
+
+//            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N)
+//            {
+//                _intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
+//                Uri _contentUri = FileProvider.getUriForFile(context,
+//                                                             context.getPackageName() + ".fileProvider",
+//                                                             _file);
+//                _intent.setDataAndType(_contentUri, "application/vnd.android.package-archive");
+//            }
+//            else
+//            {
+            _intent.setDataAndType(Uri.fromFile(_file),
+                                   "application/vnd.android.package-archive");
+            _intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+//            }
+
+            context.startActivity(_intent);
+
+        } catch (Exception e)
+        {
+            e.printStackTrace();
+            Toast.makeText(context, "鎵句笉鍒版墦寮�姝ょ被鍨嬫枃浠剁殑绋嬪簭", Toast.LENGTH_SHORT).show();
+        }
+    }
+
+    public static void CopyTextToClipboard(final Activity activity, final String text)
+    {
+        activity.runOnUiThread(new Runnable()
+        {
+            @Override
+            public void run()
+            {
+                ClipboardManager _mgr = (ClipboardManager) activity.getSystemService(
+                        Context.CLIPBOARD_SERVICE);
+                ClipData _data = ClipData.newPlainText("playerId", text);
+                _mgr.setPrimaryClip(_data);
+            }
+        });
+    }
+
+    public static long getMemTotal()
+    {
+        try
+        {
+            FileReader fileReader = new FileReader("/proc/meminfo");
+            BufferedReader bufferedReader = new BufferedReader(fileReader, 4 * 1024);
+            String str;
+            while ((str = bufferedReader.readLine()) != null)
+            {
+                if (str.contains("MemTotal"))
+                {
+                    break;
+                }
+            }
+            bufferedReader.close();
+            fileReader.close();
+            String[] array = str.split("\\s+");
+            // 鑾峰緱绯荤粺鎬诲唴瀛橈紝鍗曚綅鏄疜B
+            return Integer.valueOf(array[1]).intValue();
+        } catch (FileNotFoundException e)
+        {
+            e.printStackTrace();
+        } catch (IOException e)
+        {
+            e.printStackTrace();
+        }
+        return 0;
+    }
+
+    public static String getPublicIp(boolean useHttps)
+    {
+        String _ip;
+        try
+        {
+            URL ipify = useHttps ? new URL("https://api.ipify.org") : new URL(
+                    "http://api.ipify.org");
+            URLConnection conn = ipify.openConnection();
+            BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
+            _ip = in.readLine();
+            in.close();
+        } catch (IOException e)
+        {
+            e.printStackTrace();
+        }
+        return "";
+    }
+
+    public static String getIP(Context context)
+    {
+        NetworkInfo info = ((ConnectivityManager) context
+                .getSystemService(Context.CONNECTIVITY_SERVICE)).getActiveNetworkInfo();
+        if (info != null && info.isConnected())
+        {
+            if (info.getType() == ConnectivityManager.TYPE_MOBILE)
+            {//褰撳墠浣跨敤2G/3G/4G缃戠粶
+                try
+                {
+                    for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements(); )
+                    {
+                        NetworkInterface intf = en.nextElement();
+                        for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); )
+                        {
+                            InetAddress inetAddress = enumIpAddr.nextElement();
+                            if (!inetAddress.isLoopbackAddress() && inetAddress instanceof Inet4Address)
+                            {
+                                return inetAddress.getHostAddress();
+                            }
+                        }
+                    }
+                } catch (SocketException e)
+                {
+                    e.printStackTrace();
+                }
+
+            }
+            else if (info.getType() == ConnectivityManager.TYPE_WIFI)
+            {//褰撳墠浣跨敤鏃犵嚎缃戠粶
+                WifiManager wifiManager = (WifiManager) context.getSystemService(
+                        Context.WIFI_SERVICE);
+                WifiInfo wifiInfo = wifiManager.getConnectionInfo();
+                return intIP2StringIP(wifiInfo.getIpAddress());
+            }
+        }
+        else
+        {
+            //褰撳墠鏃犵綉缁滆繛鎺�,璇峰湪璁剧疆涓墦寮�缃戠粶
+        }
+        return null;
+    }
+
+    private static String intIP2StringIP(int ip)
+    {
+        return (ip & 0xFF) + "." +
+                ((ip >> 8) & 0xFF) + "." +
+                ((ip >> 16) & 0xFF) + "." +
+                (ip >> 24 & 0xFF);
+    }
+
+    public static boolean hasRWP = false;
+    public static boolean hasGoToSetting = false;
+
+    public static void CheckWriteAndReadExternalStorage(final Activity activity)
+    {
+        //Log.i("MainActivity", "CheckWriteAndReadExternalStorage 寮�濮� hasGoToSetting: " + hasGoToSetting);
+
+        if (hasRWP && !hasGoToSetting)
+        {
+            //Log.i("MainActivity", "1111 鏈夋潈闄�");
+            return;
+        }
+
+        if (PermissionChecker.checkPermission(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE,
+                                              Process.myPid(), Process.myUid(),
+                                              activity.getPackageName()) == PackageManager.PERMISSION_GRANTED)
+        {
+            //Log.i("MainActivity", "鏈夋潈闄�");
+            hasRWP = true;
+            if (hasGoToSetting)
+            {
+                //Log.i("MainActivity", "鍘昏繃璁剧疆鐣岄潰, 杩欓噷閲嶅惎");
+                activity.runOnUiThread(new Runnable()
+                {
+                    @Override
+                    public void run()
+                    {
+                        new Thread()
+                        {
+                            public void run()
+                            {
+                                String _packageName = activity.getPackageName();
+                                Intent _launch = activity.getBaseContext().getPackageManager().getLaunchIntentForPackage(
+                                        _packageName);
+                                _launch.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
+                                activity.startActivity(_launch);
+                                Process.killProcess(Process.myPid());
+                            }
+                        }.start();
+                        activity.finish();
+                    }
+                });
+            }
+            return;
+        }
+
+        if (!hasRWP)
+        {
+            new AlertDialog.Builder(activity)
+                    .setMessage("搴旂敤娌℃湁瀛樺偍璇诲彇鏉冮檺,鐐瑰嚮纭畾鑷宠缃腑寮�鍚�,鍚﹀垯鏃犳硶缁х画娓告垙.")
+                    .setCancelable(false)
+                    .setPositiveButton("纭畾",
+                                       new DialogInterface.OnClickListener()
+                                       {
+                                           @Override
+                                           public void onClick(DialogInterface dialogInterface,
+                                                               int i)
+                                           {
+                                               UniversalUtil.hasGoToSetting = true;
+                                               Intent intent = new Intent(
+                                                       Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
+                                               intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+                                               Uri uri = Uri.fromParts("package",
+                                                                       activity.getPackageName(),
+                                                                       null);
+                                               intent.setData(uri);
+                                               activity.startActivity(intent);
+                                           }
+                                       })
+                    .setNegativeButton("鎷掔粷",
+                                       new DialogInterface.OnClickListener()
+                                       {
+                                           @Override
+                                           public void onClick(DialogInterface dialogInterface,
+                                                               int i)
+                                           {
+                                               activity.finish();
+                                           }
+                                       })
+                    .show();
+        }
+    }
+
+    public static boolean checkPermission22(Activity activity, String permission)
+    {
+        PackageManager _pkgMgr = activity.getPackageManager();
+        LogUtil.i(TAG, "寮�濮嬫娴嬫潈闄�: " + permission);
+        try
+        {
+            PermissionInfo _info = _pkgMgr.getPermissionInfo(permission,
+                                                             PackageManager.GET_META_DATA);
+
+            LogUtil.i(TAG, "  |-- 淇濇姢绾у埆: " + _info.protectionLevel);
+            if (_info.protectionLevel != PermissionInfo.PROTECTION_DANGEROUS && _info.protectionLevel != 4097)
+            {
+                LogUtil.i(TAG, "  |-- 涓嶆槸鍗遍櫓鏉冮檺.");
+                return false;
+            }
+
+        } catch (PackageManager.NameNotFoundException e)
+        {
+            e.printStackTrace();
+        }
+
+        int _result = PermissionChecker.checkPermission(activity, permission,
+                                                        Process.myPid(), Process.myUid(),
+                                                        activity.getPackageName());
+
+        LogUtil.i(TAG, "  |-- 鑾峰彇绫诲瀷: " + _result);
+
+        if (_result == PackageManager.PERMISSION_GRANTED)
+        {
+            LogUtil.i(TAG, permission + " 鏈夎繖涓潈闄�.");
+            return false;
+        }
+
+        return true;
+    }
+
+    public static String getMetaString(Activity activity, String key)
+    {
+        PackageManager _pkgMgr = activity.getPackageManager();
+        ApplicationInfo _appInfo;
+        try
+        {
+            _appInfo = _pkgMgr.getApplicationInfo(activity.getPackageName(),
+                                                  PackageManager.GET_META_DATA);
+            return _appInfo.metaData.getString(key);
+        } catch (PackageManager.NameNotFoundException e)
+        {
+            e.printStackTrace();
+        }
+        return null;
+    }
+
+    public static int getMetaInt(Activity activity, String key)
+    {
+        LogUtil.i(TAG, "灏嗚鑾峰彇鐨凪etaKey: " + key);
+        PackageManager _pkgMgr = activity.getPackageManager();
+        ApplicationInfo _appInfo;
+        try
+        {
+            _appInfo = _pkgMgr.getApplicationInfo(activity.getPackageName(),
+                                                  PackageManager.GET_META_DATA);
+            return _appInfo.metaData.getInt(key);
+        } catch (PackageManager.NameNotFoundException e)
+        {
+            e.printStackTrace();
+        }
+        return -1;
+    }
+
+    public static boolean isEmpty(String s) {
+        if (null == s)
+            return true;
+        if (s.length() == 0)
+            return true;
+        if (s.trim().length() == 0)
+            return true;
+        return false;
+    }
+}
diff --git a/Project/xn_sdk/src/main/java/com/secondworld/univeralsdk/WebViewUtil.java b/Project/xn_sdk/src/main/java/com/secondworld/univeralsdk/WebViewUtil.java
new file mode 100644
index 0000000..8c14377
--- /dev/null
+++ b/Project/xn_sdk/src/main/java/com/secondworld/univeralsdk/WebViewUtil.java
@@ -0,0 +1,185 @@
+package com.secondworld.univeralsdk;
+
+import android.app.Activity;
+import android.content.ActivityNotFoundException;
+import android.content.Intent;
+import android.net.Uri;
+import android.util.DisplayMetrics;
+import android.view.View;
+import android.view.ViewGroup;
+import android.webkit.WebChromeClient;
+import android.webkit.WebResourceResponse;
+import android.webkit.WebView;
+import android.webkit.WebViewClient;
+import android.widget.Button;
+import android.widget.RelativeLayout;
+
+/**
+ * Created by Administrator on 2018/8/1 0001.
+ */
+public class WebViewUtil
+{
+    private static Activity m_Activity;
+    private static String m_ReceivedUrl;
+    private static WebView m_WebView;
+    private static Button m_BtnClose;
+
+    public static void OpenWebView(final Activity activity, final String url)
+    {
+        m_Activity = activity;
+        m_ReceivedUrl = url;
+
+        activity.runOnUiThread(new Runnable()
+        {
+            @Override
+            public void run()
+            {
+                if (m_WebView != null && m_WebView.getVisibility() == View.VISIBLE)
+                {
+                    processClose();
+                    return;
+                }
+
+                DisplayMetrics _dm = new DisplayMetrics();
+                m_Activity.getWindowManager().getDefaultDisplay().getMetrics(_dm);
+                final float _scale = _dm.widthPixels * 1f / 1344;
+                final int _width = (int) (_scale * 982);
+                final int _height = (int) (_scale * 560);
+
+                m_BtnClose = (Button) m_Activity.findViewById(R.id.webView_btn_close);
+                ViewGroup.MarginLayoutParams _margin = new ViewGroup.MarginLayoutParams(
+                        m_BtnClose.getLayoutParams());
+                RelativeLayout.LayoutParams _params = new RelativeLayout.LayoutParams(_margin);
+                _params.width = 0;
+                _params.height = 0;
+                _params.addRule(RelativeLayout.ALIGN_BOTTOM, R.id.webView);
+                _params.addRule(RelativeLayout.ALIGN_RIGHT, R.id.webView);
+                m_BtnClose.setLayoutParams(_params);
+
+                m_BtnClose.setOnClickListener(new View.OnClickListener()
+                {
+                    @Override
+                    public void onClick(View view)
+                    {
+                        processClose();
+                    }
+                });
+
+                m_WebView = (WebView) m_Activity.findViewById(R.id.webView);
+                ViewGroup.MarginLayoutParams margin = new ViewGroup.MarginLayoutParams(
+                        m_WebView.getLayoutParams());
+                RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(margin);
+                layoutParams.width = 0;
+                layoutParams.height = 0;
+                layoutParams.addRule(RelativeLayout.CENTER_IN_PARENT, RelativeLayout.TRUE);
+                m_WebView.setLayoutParams(layoutParams);
+                m_WebView.getSettings().setJavaScriptEnabled(true);
+                m_WebView.setWebViewClient(new WebViewClient()
+                {
+                    @Override
+                    public void onReceivedError(WebView view, int errorCode, String description,
+                                                String failingUrl)
+                    {
+                        super.onReceivedError(view, errorCode, description, failingUrl);
+                        view.loadUrl(m_ReceivedUrl);
+                    }
+
+                    @Override
+                    public boolean shouldOverrideUrlLoading(WebView view, String url)
+                    {
+                        if (url.startsWith("http") || url.startsWith("https"))
+                        { //http鍜宧ttps鍗忚寮�澶寸殑鎵ц姝e父鐨勬祦绋�
+                            view.loadUrl(url);
+                            return true;
+                        }
+                        else
+                        {  //鍏朵粬鐨刄RL鍒欎細寮�鍚竴涓狝citity鐒跺悗鍘昏皟鐢ㄥ師鐢烝PP
+                            return super.shouldOverrideUrlLoading(view, url);
+                        }
+                    }
+
+                    @Override
+                    public WebResourceResponse shouldInterceptRequest(WebView view, String url)
+                    {
+                        if (url.startsWith("http") || url.startsWith("https"))
+                        { //http鍜宧ttps鍗忚寮�澶寸殑鎵ц姝e父鐨勬祦绋�
+                            return super.shouldInterceptRequest(view, url);
+                        }
+                        else
+                        {  //鍏朵粬鐨刄RL鍒欎細寮�鍚竴涓狝citity鐒跺悗鍘昏皟鐢ㄥ師鐢烝PP
+                            try
+                            {
+                                Intent in = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
+                                m_Activity.startActivity(in);
+                            } catch (ActivityNotFoundException e)
+                            {
+                                e.printStackTrace();
+                            }
+                            return null;
+                        }
+                    }
+                });
+                m_WebView.setWebChromeClient(new WebChromeClient()
+                {
+                    @Override
+                    public void onReceivedTitle(WebView view, String title)
+                    {
+                        if (title.contains("I'm QQ"))
+                        {
+                            m_WebView.loadUrl(m_ReceivedUrl);
+                        }
+                        super.onReceivedTitle(view, title);
+                    }
+
+                    @Override
+                    public void onProgressChanged(WebView view, int newProgress)
+                    {
+                        if (newProgress == 100)
+                        {
+                            if (view.getUrl().contains("noticeweb"))
+                            {
+
+                                ViewGroup.MarginLayoutParams margin = new ViewGroup.MarginLayoutParams(
+                                        m_WebView.getLayoutParams());
+                                RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(
+                                        margin);
+                                layoutParams.width = _width;
+                                layoutParams.height = _height;
+                                layoutParams.addRule(RelativeLayout.CENTER_IN_PARENT,
+                                                     RelativeLayout.TRUE);
+                                m_WebView.setLayoutParams(layoutParams);
+
+                                ViewGroup.MarginLayoutParams _margin = new ViewGroup.MarginLayoutParams(
+                                        m_BtnClose.getLayoutParams());
+                                RelativeLayout.LayoutParams _params = new RelativeLayout.LayoutParams(
+                                        _margin);
+                                _params.width = (int) (180 * _scale);
+                                _params.height = (int) (72 * _scale);
+                                _params.rightMargin = (int) (250 * _scale);
+                                _params.bottomMargin = (int) (10 * _scale);
+                                _params.addRule(RelativeLayout.ALIGN_BOTTOM, R.id.webView);
+                                _params.addRule(RelativeLayout.ALIGN_RIGHT, R.id.webView);
+                                m_BtnClose.setLayoutParams(_params);
+                            }
+                        }
+                    }
+                });
+
+                m_WebView.loadUrl(m_ReceivedUrl);
+
+                m_WebView.setVisibility(View.VISIBLE);
+                m_BtnClose.setVisibility(View.VISIBLE);
+            }
+        });
+    }
+
+    private static void processClose()
+    {
+        m_WebView.clearFocus();
+        m_WebView.clearCache(true);
+        m_WebView.clearHistory();
+        m_WebView.clearFormData();
+        m_WebView.setVisibility(View.INVISIBLE);
+        m_BtnClose.setVisibility(View.INVISIBLE);
+    }
+}
diff --git a/Project/xn_sdk/src/main/res/drawable-hdpi/jpush_ic_richpush_actionbar_back.png b/Project/xn_sdk/src/main/res/drawable-hdpi/jpush_ic_richpush_actionbar_back.png
new file mode 100644
index 0000000..c9f4e4d
--- /dev/null
+++ b/Project/xn_sdk/src/main/res/drawable-hdpi/jpush_ic_richpush_actionbar_back.png
Binary files differ
diff --git a/Project/xn_sdk/src/main/res/drawable-hdpi/jpush_ic_richpush_actionbar_divider.png b/Project/xn_sdk/src/main/res/drawable-hdpi/jpush_ic_richpush_actionbar_divider.png
new file mode 100644
index 0000000..f289651
--- /dev/null
+++ b/Project/xn_sdk/src/main/res/drawable-hdpi/jpush_ic_richpush_actionbar_divider.png
Binary files differ
diff --git a/Project/xn_sdk/src/main/res/drawable-hdpi/jpush_richpush_btn_selector.xml b/Project/xn_sdk/src/main/res/drawable-hdpi/jpush_richpush_btn_selector.xml
new file mode 100644
index 0000000..c6dd002
--- /dev/null
+++ b/Project/xn_sdk/src/main/res/drawable-hdpi/jpush_richpush_btn_selector.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?> 
+<selector xmlns:android="http://schemas.android.com/apk/res/android" > 
+    <!-- 鑾峰緱鐒︾偣浣嗘湭鎸変笅鏃剁殑鑳屾櫙鍥剧墖 --> 
+    <item 
+        android:state_focused="true" 
+        android:state_enabled="true" 
+        android:state_pressed="false" 
+        android:drawable="@drawable/jpush_ic_richpush_actionbar_back" />
+     <!-- 鎸変笅鏃剁殑鑳屾櫙鍥剧墖 --> 
+    <item 
+        android:state_enabled="true" 
+        android:state_pressed="true" 
+        android:drawable="@android:color/darker_gray" /> 
+    <!-- 鎸変笅鏃剁殑鑳屾櫙鍥剧墖 --> 
+    <item 
+        android:state_enabled="true" 
+        android:state_checked="true" 
+        android:drawable="@android:color/darker_gray" /> 
+    <!-- 榛樿鏃剁殑鑳屾櫙鍥剧墖 --> 
+    <item android:drawable="@drawable/jpush_ic_richpush_actionbar_back" />
+</selector> 
\ No newline at end of file
diff --git a/Project/xn_sdk/src/main/res/drawable-hdpi/jpush_richpush_progressbar.xml b/Project/xn_sdk/src/main/res/drawable-hdpi/jpush_richpush_progressbar.xml
new file mode 100644
index 0000000..a1d9b8f
--- /dev/null
+++ b/Project/xn_sdk/src/main/res/drawable-hdpi/jpush_richpush_progressbar.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
+
+    <!-- 鑳屾櫙  gradient鏄笎鍙�,corners瀹氫箟鐨勬槸鍦嗚 -->
+    <item android:id="@android:id/background">
+        <shape>
+            <solid android:color="#ffffff" />
+        </shape>
+    </item>
+    
+    <!-- 杩涘害鏉� -->
+    <item android:id="@android:id/progress">
+        <clip>
+            <shape>
+                <solid android:color="#4393ea" />
+            </shape>
+        </clip>
+    </item>
+
+</layer-list>
\ No newline at end of file
diff --git a/Project/xn_sdk/src/main/res/drawable/app_icon.png b/Project/xn_sdk/src/main/res/drawable/app_icon.png
new file mode 100644
index 0000000..9f03b9d
--- /dev/null
+++ b/Project/xn_sdk/src/main/res/drawable/app_icon.png
Binary files differ
diff --git a/Project/xn_sdk/src/main/res/drawable/web_btn_close_icon.png b/Project/xn_sdk/src/main/res/drawable/web_btn_close_icon.png
new file mode 100644
index 0000000..7ac8e4d
--- /dev/null
+++ b/Project/xn_sdk/src/main/res/drawable/web_btn_close_icon.png
Binary files differ
diff --git a/Project/xn_sdk/src/main/res/layout/activity_main.xml b/Project/xn_sdk/src/main/res/layout/activity_main.xml
new file mode 100644
index 0000000..4bf1374
--- /dev/null
+++ b/Project/xn_sdk/src/main/res/layout/activity_main.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/main_container"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
+
+    <FrameLayout
+        android:id="@+id/unity_view"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent" />
+
+    <WebView
+        android:id="@+id/webView"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_centerInParent="true"
+        android:visibility="invisible" />
+
+    <Button
+        android:id="@+id/webView_btn_close"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_alignBottom="@id/webView"
+        android:layout_alignRight="@id/webView"
+        android:background="@drawable/web_btn_close_icon"
+        android:text="鎴戠煡閬撲簡"
+        android:textSize="16dp"
+        android:visibility="invisible" />
+
+</RelativeLayout>
\ No newline at end of file
diff --git a/Project/xn_sdk/src/main/res/layout/jpush_popwin_layout.xml b/Project/xn_sdk/src/main/res/layout/jpush_popwin_layout.xml
new file mode 100644
index 0000000..f43e478
--- /dev/null
+++ b/Project/xn_sdk/src/main/res/layout/jpush_popwin_layout.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/popLayoutId"
+    style="@style/MyDialogStyle"
+    android:orientation="vertical"
+    android:layout_width="280dp"
+    android:layout_height="250dp" >
+
+        <WebView
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:id="@+id/wvPopwin"/>
+
+</LinearLayout>
\ No newline at end of file
diff --git a/Project/xn_sdk/src/main/res/layout/jpush_webview_layout.xml b/Project/xn_sdk/src/main/res/layout/jpush_webview_layout.xml
new file mode 100644
index 0000000..bebdd61
--- /dev/null
+++ b/Project/xn_sdk/src/main/res/layout/jpush_webview_layout.xml
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="utf-8"?>
+<cn.jpush.android.ui.FullScreenView xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/actionbarLayoutId"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical" >
+
+    <RelativeLayout
+        android:id="@+id/rlRichpushTitleBar"
+        android:layout_width="match_parent"
+        android:layout_height="40.0dp"
+        android:background="#29313a">
+
+        <ImageButton
+            android:id="@+id/imgRichpushBtnBack"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_centerVertical="true"
+            android:layout_marginLeft="9dp"
+            android:layout_marginRight="10dp"
+            android:background="@drawable/jpush_richpush_btn_selector" />
+
+        <ImageView
+            android:id="@+id/imgView"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_centerVertical="true"
+            android:layout_toRightOf="@id/imgRichpushBtnBack"
+            android:clickable="false"
+            android:src="@drawable/jpush_ic_richpush_actionbar_divider" />
+
+        <TextView
+            android:id="@+id/tvRichpushTitle"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_centerVertical="true"
+            android:layout_marginLeft="7dp"
+            android:layout_marginRight="5dp"
+            android:layout_toRightOf="@id/imgView"
+            android:clickable="false"
+            android:text=" "
+            android:textSize="20sp"
+            android:textColor="#ffffff" />
+    </RelativeLayout>
+
+    <ProgressBar
+        android:id="@+id/pushPrograssBar"
+        android:layout_width="match_parent"
+        android:layout_height="1dp"
+        android:progress="0"
+        android:progressDrawable="@drawable/jpush_richpush_progressbar"
+        style="?android:attr/progressBarStyleHorizontal" />
+    <WebView
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:id="@+id/fullWebView"
+        android:background="#000000" />
+
+</cn.jpush.android.ui.FullScreenView>
\ No newline at end of file
diff --git a/Project/xn_sdk/src/main/res/values/colors.xml b/Project/xn_sdk/src/main/res/values/colors.xml
new file mode 100644
index 0000000..3ab3e9c
--- /dev/null
+++ b/Project/xn_sdk/src/main/res/values/colors.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+    <color name="colorPrimary">#3F51B5</color>
+    <color name="colorPrimaryDark">#303F9F</color>
+    <color name="colorAccent">#FF4081</color>
+</resources>
diff --git a/Project/xn_sdk/src/main/res/values/jpush_style.xml b/Project/xn_sdk/src/main/res/values/jpush_style.xml
new file mode 100644
index 0000000..81dfdbb
--- /dev/null
+++ b/Project/xn_sdk/src/main/res/values/jpush_style.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android">
+    <style name="MyDialogStyle">
+        <item name="android:windowBackground">@android:color/transparent</item>
+        <item name="android:windowFrame">@null</item>
+        <item name="android:windowNoTitle">true</item>
+        <item name="android:windowIsFloating">true</item>
+        <item name="android:windowIsTranslucent">true</item>
+        <item name="android:windowContentOverlay">@null</item>
+        <item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>
+        <item name="android:backgroundDimEnabled">true</item>
+    </style>
+</resources>
\ No newline at end of file
diff --git a/Project/xn_sdk/src/main/res/values/strings.xml b/Project/xn_sdk/src/main/res/values/strings.xml
new file mode 100644
index 0000000..c17e5b3
--- /dev/null
+++ b/Project/xn_sdk/src/main/res/values/strings.xml
@@ -0,0 +1,3 @@
+<resources>
+    <string name="app_name">UniveralSDK</string>
+</resources>
diff --git a/Project/xn_sdk/src/main/res/values/styles.xml b/Project/xn_sdk/src/main/res/values/styles.xml
new file mode 100644
index 0000000..ff6c9d2
--- /dev/null
+++ b/Project/xn_sdk/src/main/res/values/styles.xml
@@ -0,0 +1,8 @@
+<resources>
+
+    <!-- Base application theme. -->
+    <style name="AppTheme" parent="android:Theme.Holo.Light.DarkActionBar">
+        <!-- Customize your theme here. -->
+    </style>
+
+</resources>
diff --git a/Project/xn_sdk/src/main/res/xml/file_paths.xml b/Project/xn_sdk/src/main/res/xml/file_paths.xml
new file mode 100644
index 0000000..517ede7
--- /dev/null
+++ b/Project/xn_sdk/src/main/res/xml/file_paths.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<paths>
+	<external-path path="Android/data/com.shandangceshi.snxxz/" name="files_root" />
+	<external-path path="." name="external_storage_root" />
+</paths>
\ No newline at end of file
diff --git a/Project/yj_sdk/src/game_yj/java/com/secondworld/univeralsdk/H2EngineSDK.java b/Project/yj_sdk/src/game_yj/java/com/secondworld/univeralsdk/H2EngineSDK.java
index 5e8c1a6..5ed0fa8 100644
--- a/Project/yj_sdk/src/game_yj/java/com/secondworld/univeralsdk/H2EngineSDK.java
+++ b/Project/yj_sdk/src/game_yj/java/com/secondworld/univeralsdk/H2EngineSDK.java
@@ -111,8 +111,8 @@
 //                                                         URLEncoder.encode(_extraData.toString(),
 //                                                                           "utf-8"));
                         if (_yjAppID.contains("mzgame")
-                         || _yjAppID.contains("ucgame")
-                         || _yjAppID.contains("yybgame"))
+                                || _yjAppID.contains("ucgame")
+                                || _yjAppID.contains("yybgame"))
                         {
                             YJPlatformUtil.getInstance().pay(_activity,
                                                              _json.getString("title"),
@@ -198,6 +198,9 @@
                 case CodeU2A.TencentLogin:
                     YJPlatformUtil.getInstance().loginTencent(_activity, _json.getString("param"));
                     break;
+                case CodeU2A.SendRegistEvent:
+                    YJPlatformUtil.getInstance().SendRegisterEvent();
+                    break;
             }
 
         } catch (JSONException e)
diff --git a/Project/yj_sdk/src/game_yj/java/com/secondworld/univeralsdk/YJPlatformUtil.java b/Project/yj_sdk/src/game_yj/java/com/secondworld/univeralsdk/YJPlatformUtil.java
index dcda166..942b444 100644
--- a/Project/yj_sdk/src/game_yj/java/com/secondworld/univeralsdk/YJPlatformUtil.java
+++ b/Project/yj_sdk/src/game_yj/java/com/secondworld/univeralsdk/YJPlatformUtil.java
@@ -359,4 +359,7 @@
         return null;
     }
 
+    public void SendRegisterEvent()
+    {
+    }
 }
diff --git a/Project/yj_sdk/src/main/java/com/secondworld/univeralsdk/CodeU2A.java b/Project/yj_sdk/src/main/java/com/secondworld/univeralsdk/CodeU2A.java
index 176955d..67f3ed1 100644
--- a/Project/yj_sdk/src/main/java/com/secondworld/univeralsdk/CodeU2A.java
+++ b/Project/yj_sdk/src/main/java/com/secondworld/univeralsdk/CodeU2A.java
@@ -83,4 +83,5 @@
      * ClientPackage鍚憇dk鍙戦�佸垎鍖卛d
      */
     public static final int ClientPackage = 400;
+    public static final int SendRegistEvent = 500;
 }
diff --git a/Project/yl_sdk/src/game_ylgame/java/com/secondworld/univeralsdk/H2EngineSDK.java b/Project/yl_sdk/src/game_ylgame/java/com/secondworld/univeralsdk/H2EngineSDK.java
index d8deb6a..9c5217a 100644
--- a/Project/yl_sdk/src/game_ylgame/java/com/secondworld/univeralsdk/H2EngineSDK.java
+++ b/Project/yl_sdk/src/game_ylgame/java/com/secondworld/univeralsdk/H2EngineSDK.java
@@ -166,6 +166,9 @@
                 case CodeU2A.JPushRemoveLocalMessage:
                     removeNotification(_activity, _json.getInt("id"));
                     break;
+                case CodeU2A.SendRegistEvent:
+                    YLPlatformUtil.getInstance().SendRegisterEvent();
+                    break;
             }
 
         } catch (JSONException e)
diff --git a/Project/yl_sdk/src/game_ylgame/java/com/secondworld/univeralsdk/YLPlatformUtil.java b/Project/yl_sdk/src/game_ylgame/java/com/secondworld/univeralsdk/YLPlatformUtil.java
index 129ace7..29d7e76 100644
--- a/Project/yl_sdk/src/game_ylgame/java/com/secondworld/univeralsdk/YLPlatformUtil.java
+++ b/Project/yl_sdk/src/game_ylgame/java/com/secondworld/univeralsdk/YLPlatformUtil.java
@@ -150,51 +150,15 @@
                            String serverName,
                            JSONObject ext)
     {
-        StringBuilder _stringBuilder = new StringBuilder();
-        _stringBuilder.append("http://pub.game.2460web.com:11000/event_receiver?").
-                append("ProductID=snxxz").
-                append("&OperatorID=").append("yilegame").
-                append("&RegionName=data").
-                append("&RegionID=").append(serverID).
-                append("&EventID=1105").
-                append("&Time=").append(UniversalUtil.getStringDate()).
-                append("&AccountID=").append(m_AccountID);
-
-        LogUtil.i(TAG,"娉ㄥ唽璇锋眰: " + _stringBuilder.toString());
-
-        OkHttpClient client = new OkHttpClient();
-        Request request = new Request.Builder()
-                .url(_stringBuilder.toString())
-                .build();
-        client.newCall(request).enqueue(new Callback() {
-            @Override
-            public void onFailure(Request request, IOException e)
-            {
-
-            }
-
-            @Override
-            public void onResponse(Response response) throws IOException
-            {
-                if(response.isSuccessful()){
-                    String _code = response.body().string().trim();
-                    LogUtil.i(TAG,"娉ㄥ唽杩斿洖 : " + _code);
-                    if(_code.equals("1"))
-                    {
-                        Tracking.setRegisterWithAccountID(m_AccountID);
-                        EventUtils.setRegister("mobile",true);
-                    }
-                }
-            }
-        });
-
-        EventUtils.setLogin("mobile",true);
-        Tracking.setLoginSuccessBusiness(m_AccountID);
-
         SDKManager.getInstance(activity).setRoleDate(activity, roleID,
                                                      roleName, roleLv,
                                                      serverID, serverName,
                                                      ext);
     }
 
+    public void SendRegisterEvent()
+    {
+        Tracking.setRegisterWithAccountID(m_AccountID);
+        EventUtils.setRegister("mobile",true);
+    }
 }
diff --git a/Project/yl_sdk/src/main/java/com/secondworld/univeralsdk/CodeU2A.java b/Project/yl_sdk/src/main/java/com/secondworld/univeralsdk/CodeU2A.java
index ef44ba0..1583ffa 100644
--- a/Project/yl_sdk/src/main/java/com/secondworld/univeralsdk/CodeU2A.java
+++ b/Project/yl_sdk/src/main/java/com/secondworld/univeralsdk/CodeU2A.java
@@ -81,4 +81,5 @@
      * ClientPackage鍚憇dk鍙戦�佸垎鍖卛d
      */
     public static final int ClientPackage = 400;
+    public static final int SendRegistEvent = 500;
 }

--
Gitblit v1.8.0