├── .gitignore ├── GameSDKBuildJarTool ├── .gitignore ├── build.gradle ├── libs │ ├── common-24.3.0.jar │ ├── guava-18.0.jar │ ├── manifest-merger-24.3.0.jar │ ├── proguard.jar │ ├── retrace.jar │ └── sdk-common-25.1.2.jar ├── src │ └── main │ │ ├── cmd │ │ └── test │ │ │ ├── class │ │ │ └── com │ │ │ │ └── bzai │ │ │ │ └── demo │ │ │ │ ├── HelloWorld.class │ │ │ │ └── TestA.class │ │ │ ├── jar │ │ │ ├── test.jar │ │ │ └── test_proguard.jar │ │ │ ├── java │ │ │ ├── HelloWorld.java │ │ │ └── TestA.java │ │ │ └── proguard │ │ │ ├── proguard_config.pro │ │ │ └── tools │ │ │ ├── proguard.jar │ │ │ └── rt.jar │ │ ├── java │ │ └── com │ │ │ └── bzai │ │ │ └── gamesdk │ │ │ └── build │ │ │ ├── BuildJarTask.java │ │ │ ├── Config.java │ │ │ ├── Main.java │ │ │ ├── bean │ │ │ ├── ErrorMsg.java │ │ │ └── Project.java │ │ │ ├── tools │ │ │ ├── JavaTool.java │ │ │ ├── ProGuardTool.java │ │ │ ├── ServerTool.java │ │ │ └── exec │ │ │ │ └── Shell.java │ │ │ └── utils │ │ │ ├── FileUtils.java │ │ │ └── Utils.java │ │ └── resources │ │ ├── config │ │ ├── proguard_config.pro │ │ └── project_list └── 必读说明 ├── GameSDKDemo_Release ├── .gitignore ├── build.gradle ├── proguard-rules.pro └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── bzai │ │ └── gamesdkframe │ │ └── ExampleInstrumentedTest.java │ ├── main │ ├── AndroidManifest.xml │ ├── java │ │ └── com │ │ │ └── bzai │ │ │ └── gamesdkframe │ │ │ └── demo │ │ │ ├── GameApplication.java │ │ │ └── GameSDKMain.java │ └── res │ │ ├── drawable │ │ └── ic_launcher.png │ │ ├── layout │ │ └── activity_main.xml │ │ └── values │ │ ├── colors.xml │ │ └── strings.xml │ └── test │ └── java │ └── com │ └── bzai │ └── gamesdkframe │ └── ExampleUnitTest.java ├── GameSDKLibrary_Release ├── .gitignore ├── build.gradle ├── libs │ ├── alipaySdk-20180601.jar │ ├── android-support-v4.jar │ ├── org.apache.http.legacy.jar │ ├── sdk_test_v1.0.0.jar │ └── wechat-sdk-android-without-mta-5.1.4.jar ├── proguard-rules.pro └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── suyutech │ │ └── baselibrary │ │ └── ExampleInstrumentedTest.java │ ├── main │ ├── AndroidManifest.xml │ ├── assets │ │ ├── Channel_config.txt │ │ ├── Plugin_config.txt │ │ ├── Project_config.txt │ │ ├── SDKInfo.json │ │ └── splash │ │ │ └── splash_screen.jpg │ └── res │ │ └── values │ │ └── strings.xml │ └── test │ └── java │ └── com │ └── suyutech │ └── baselibrary │ └── ExampleUnitTest.java ├── GameSDK_API ├── .gitignore ├── build.gradle ├── proguard-rules.pro └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── bzai │ │ └── gamesdk │ │ └── api │ │ └── ExampleInstrumentedTest.java │ ├── main │ ├── AndroidManifest.xml │ └── java │ │ └── com │ │ └── bzai │ │ └── gamesdk │ │ ├── GameInfoSetting.java │ │ ├── SDKApplication.java │ │ ├── api │ │ └── SDKAPI.java │ │ ├── bean │ │ ├── info │ │ │ ├── AccountEventResultInfo.java │ │ │ └── PlayerInfo.java │ │ └── params │ │ │ ├── GameRoleParams.java │ │ │ └── PayParams.java │ │ └── listener │ │ ├── AccountCallBackLister.java │ │ ├── ExitCallBackLister.java │ │ ├── InitCallBackLister.java │ │ └── PurchaseCallBackListener.java │ └── test │ └── java │ └── com │ └── bzai │ └── gamesdk │ └── api │ └── ExampleUnitTest.java ├── GameSDK_BeginProject ├── GameSDK_Project_Custom │ ├── .gitignore │ ├── build.gradle │ ├── proguard-rules.pro │ └── src │ │ ├── androidTest │ │ └── java │ │ │ └── com │ │ │ └── bzai │ │ │ └── gamesdk │ │ │ └── project │ │ │ └── channel │ │ │ └── ExampleInstrumentedTest.java │ │ ├── main │ │ ├── AndroidManifest.xml │ │ ├── assets │ │ │ ├── Plugin_config.txt │ │ │ ├── Project_config.txt │ │ │ └── SDKInfo.json │ │ └── java │ │ │ └── com │ │ │ └── bzai │ │ │ └── gamesdk │ │ │ └── project │ │ │ ├── CustomProject.java │ │ │ └── ProjectApplication.java │ │ └── test │ │ └── java │ │ └── com │ │ └── bzai │ │ └── gamesdk │ │ └── project │ │ └── channel │ │ └── ExampleUnitTest.java └── GameSDK_Project_JuHe │ ├── .gitignore │ ├── build.gradle │ ├── proguard-rules.pro │ └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── bzai │ │ └── gamesdk │ │ └── project │ │ └── juhe │ │ └── ExampleInstrumentedTest.java │ ├── main │ ├── AndroidManifest.xml │ ├── assets │ │ ├── Plugin_config.txt │ │ ├── Project_config.txt │ │ └── SDKInfo.json │ └── java │ │ └── com │ │ └── bzai │ │ └── gamesdk │ │ └── project │ │ ├── JuHeProject.java │ │ └── ProjectApplication.java │ └── test │ └── java │ └── com │ └── bzai │ └── gamesdk │ └── project │ └── juhe │ └── ExampleUnitTest.java ├── GameSDK_Channel ├── GameSDK_Channel_Lexiang │ ├── .gitignore │ ├── build.gradle │ ├── libs │ │ ├── HeepayPlugin_v3.0.jar │ │ ├── eventbus-3.0.0.jar │ │ └── youxunsdk.jar │ ├── proguard-rules.pro │ ├── src │ │ ├── androidTest │ │ │ └── java │ │ │ │ └── com │ │ │ │ └── bzai │ │ │ │ └── gamesdk │ │ │ │ └── channel │ │ │ │ └── test │ │ │ │ └── ExampleInstrumentedTest.java │ │ ├── main │ │ │ ├── AndroidManifest.xml │ │ │ ├── assets │ │ │ │ ├── Channel_config.txt │ │ │ │ └── splash │ │ │ │ │ └── splash_screen.jpg │ │ │ ├── java │ │ │ │ └── com │ │ │ │ │ └── bzai │ │ │ │ │ └── gamesdk │ │ │ │ │ └── channel │ │ │ │ │ ├── application │ │ │ │ │ └── ChannelApplication.java │ │ │ │ │ └── lexiang │ │ │ │ │ └── LexiangSDK.java │ │ │ └── res │ │ │ │ ├── drawable-hdpi │ │ │ │ ├── youxun_acchint_logo.png │ │ │ │ ├── youxun_alipay_logo.png │ │ │ │ ├── youxun_attent.png │ │ │ │ ├── youxun_choose.png │ │ │ │ ├── youxun_close.png │ │ │ │ ├── youxun_code.jpg │ │ │ │ ├── youxun_deselect.png │ │ │ │ ├── youxun_float_icon.png │ │ │ │ ├── youxun_float_icon_gb.png │ │ │ │ ├── youxun_float_left_arrow.png │ │ │ │ ├── youxun_float_logo.png │ │ │ │ ├── youxun_gb.png │ │ │ │ ├── youxun_login_1.png │ │ │ │ ├── youxun_login_10.png │ │ │ │ ├── youxun_login_11.png │ │ │ │ ├── youxun_login_12.png │ │ │ │ ├── youxun_login_13.png │ │ │ │ ├── youxun_login_14.png │ │ │ │ ├── youxun_login_2.png │ │ │ │ ├── youxun_login_3.png │ │ │ │ ├── youxun_login_4.png │ │ │ │ ├── youxun_login_5.png │ │ │ │ ├── youxun_login_6.png │ │ │ │ ├── youxun_login_7.png │ │ │ │ ├── youxun_login_8.png │ │ │ │ ├── youxun_login_9.png │ │ │ │ ├── youxun_notice.png │ │ │ │ ├── youxun_pay_btn.png │ │ │ │ ├── youxun_pay_logo.png │ │ │ │ ├── youxun_service.jpg │ │ │ │ ├── youxun_service_icon.png │ │ │ │ ├── youxun_share.png │ │ │ │ ├── youxun_switch_account.png │ │ │ │ ├── youxun_wechat_logo.png │ │ │ │ └── youxun_yxpay.png │ │ │ │ ├── drawable │ │ │ │ ├── youxun_border_stroke.xml │ │ │ │ ├── youxun_cir_hint_bg.xml │ │ │ │ ├── youxun_cir_rect.xml │ │ │ │ ├── youxun_drawable_1.xml │ │ │ │ ├── youxun_drawable_2.xml │ │ │ │ ├── youxun_drawable_3.xml │ │ │ │ ├── youxun_drawable_33.xml │ │ │ │ ├── youxun_drawable_4.xml │ │ │ │ ├── youxun_drawable_44.xml │ │ │ │ ├── youxun_drawable_5.xml │ │ │ │ ├── youxun_drawable_6.xml │ │ │ │ └── youxun_service_rect.xml │ │ │ │ └── layout │ │ │ │ ├── youxun_account.xml │ │ │ │ ├── youxun_account_hint.xml │ │ │ │ ├── youxun_account_login.xml │ │ │ │ ├── youxun_account_reg.xml │ │ │ │ ├── youxun_bound.xml │ │ │ │ ├── youxun_dialog.xml │ │ │ │ ├── youxun_dialog2.xml │ │ │ │ ├── youxun_dialog3.xml │ │ │ │ ├── youxun_floating.xml │ │ │ │ ├── youxun_gb_dialog.xml │ │ │ │ ├── youxun_gb_item.xml │ │ │ │ ├── youxun_gb_menu.xml │ │ │ │ ├── youxun_gift_bag.xml │ │ │ │ ├── youxun_login.xml │ │ │ │ ├── youxun_login_footprint.xml │ │ │ │ ├── youxun_login_menu.xml │ │ │ │ ├── youxun_login_option_item.xml │ │ │ │ ├── youxun_login_popup.xml │ │ │ │ ├── youxun_menu_2.xml │ │ │ │ ├── youxun_menu_3.xml │ │ │ │ ├── youxun_menu_4.xml │ │ │ │ ├── youxun_mobile.xml │ │ │ │ ├── youxun_mobile_login.xml │ │ │ │ ├── youxun_mobile_reg.xml │ │ │ │ ├── youxun_mobile_verify.xml │ │ │ │ ├── youxun_notice.xml │ │ │ │ ├── youxun_pay.xml │ │ │ │ ├── youxun_toast.xml │ │ │ │ └── youxun_webview.xml │ │ └── test │ │ │ └── java │ │ │ └── com │ │ │ └── bzai │ │ │ └── gamesdk │ │ │ └── channel │ │ │ └── test │ │ │ └── ExampleUnitTest.java │ └── 开发者说明 └── GameSDK_Channel_Test │ ├── .gitignore │ ├── build.gradle │ ├── proguard-rules.pro │ ├── src │ ├── androidTest │ │ └── java │ │ │ └── com │ │ │ └── bzai │ │ │ └── gamesdk │ │ │ └── channel │ │ │ └── test │ │ │ └── ExampleInstrumentedTest.java │ ├── main │ │ ├── AndroidManifest.xml │ │ ├── assets │ │ │ ├── Channel_config.txt │ │ │ └── splash │ │ │ │ └── splash_screen.jpg │ │ ├── java │ │ │ └── com │ │ │ │ └── bzai │ │ │ │ └── gamesdk │ │ │ │ └── channel │ │ │ │ ├── application │ │ │ │ └── ChannelApplication.java │ │ │ │ └── test │ │ │ │ └── TestChannelSDK.java │ │ └── res │ │ │ └── values │ │ │ └── strings.xml │ └── test │ │ └── java │ │ └── com │ │ └── bzai │ │ └── gamesdk │ │ └── channel │ │ └── test │ │ └── ExampleUnitTest.java │ └── 开发者说明 ├── GameSDK_Manager ├── GameSDK_Module_Account │ ├── .gitignore │ ├── build.gradle │ ├── proguard-rules.pro │ └── src │ │ ├── androidTest │ │ └── java │ │ │ └── com │ │ │ └── bzai │ │ │ └── gamesdk │ │ │ └── module │ │ │ └── account │ │ │ └── ExampleInstrumentedTest.java │ │ ├── main │ │ ├── AndroidManifest.xml │ │ └── java │ │ │ └── com │ │ │ └── bzai │ │ │ └── gamesdk │ │ │ └── module │ │ │ └── account │ │ │ ├── AccountManager.java │ │ │ └── bean │ │ │ ├── AccountBean.java │ │ │ └── AccountCallBackBean.java │ │ └── test │ │ └── java │ │ └── com │ │ └── bzai │ │ └── gamesdk │ │ └── module │ │ └── account │ │ └── ExampleUnitTest.java ├── GameSDK_Module_Init │ ├── .gitignore │ ├── build.gradle │ ├── proguard-rules.pro │ └── src │ │ ├── androidTest │ │ └── java │ │ │ └── com │ │ │ └── bzai │ │ │ └── gamesdk │ │ │ └── module │ │ │ └── init │ │ │ └── ExampleInstrumentedTest.java │ │ ├── main │ │ ├── AndroidManifest.xml │ │ └── java │ │ │ └── com │ │ │ └── bzai │ │ │ └── gamesdk │ │ │ └── module │ │ │ └── init │ │ │ └── InitManager.java │ │ └── test │ │ └── java │ │ └── com │ │ └── bzai │ │ └── gamesdk │ │ └── module │ │ └── init │ │ └── ExampleUnitTest.java └── GameSDK_Module_Purchase │ ├── .gitignore │ ├── build.gradle │ ├── proguard-rules.pro │ └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── bzai │ │ └── gamesdk │ │ └── module │ │ └── purchase │ │ └── ExampleInstrumentedTest.java │ ├── main │ ├── AndroidManifest.xml │ ├── java │ │ └── com │ │ │ └── bzai │ │ │ └── gamesdk │ │ │ └── module │ │ │ └── purchase │ │ │ ├── PurchaseManager.java │ │ │ └── PurchaseResult.java │ └── res │ │ └── values │ │ └── strings.xml │ └── test │ └── java │ └── com │ └── bzai │ └── gamesdk │ └── module │ └── purchase │ └── ExampleUnitTest.java ├── GameSDK_Manager_Impl ├── .gitignore ├── build.gradle ├── proguard-rules.pro └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── bzai │ │ └── gamesdk │ │ └── manager │ │ └── impl │ │ └── ExampleInstrumentedTest.java │ ├── main │ ├── AndroidManifest.xml │ ├── java │ │ └── com │ │ │ └── bzai │ │ │ └── gamesdk │ │ │ └── invoke │ │ │ └── plugin │ │ │ ├── AlipayPluginApi.java │ │ │ └── WechatPluginApi.java │ └── res │ │ └── values │ │ └── strings.xml │ └── test │ └── java │ └── com │ └── bzai │ └── gamesdk │ └── manager │ └── impl │ └── ExampleUnitTest.java ├── GameSDK_Plugin ├── GameSDK_Plugin_Alipay │ ├── .gitignore │ ├── build.gradle │ ├── libs │ │ └── alipaySdk-20180601.jar │ ├── proguard-rules.pro │ └── src │ │ ├── androidTest │ │ └── java │ │ │ └── com │ │ │ └── bzai │ │ │ └── gamesdk │ │ │ └── plugin │ │ │ └── alipay │ │ │ └── ExampleInstrumentedTest.java │ │ ├── main │ │ ├── AndroidManifest.xml │ │ ├── java │ │ │ └── com │ │ │ │ └── bzai │ │ │ │ └── gamesdk │ │ │ │ └── plugin │ │ │ │ └── alipay │ │ │ │ ├── AlipayPlugin.java │ │ │ │ └── pay │ │ │ │ ├── AlipayPay.java │ │ │ │ └── PayResult.java │ │ └── res │ │ │ └── values │ │ │ └── strings.xml │ │ └── test │ │ └── java │ │ └── com │ │ └── bzai │ │ └── gamesdk │ │ └── plugin │ │ └── alipay │ │ └── ExampleUnitTest.java └── GameSDK_Plugin_Wechat │ ├── .gitignore │ ├── build.gradle │ ├── libs │ └── wechat-sdk-android-without-mta-5.1.4.jar │ ├── proguard-rules.pro │ └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── bzai │ │ └── gamesdk │ │ └── plugin │ │ └── wechat │ │ └── ExampleInstrumentedTest.java │ ├── main │ ├── AndroidManifest.xml │ └── java │ │ └── com │ │ └── bzai │ │ └── gamesdk │ │ └── plugin │ │ └── wechat │ │ ├── WechatPlugin.java │ │ ├── login │ │ └── WechatLogin.java │ │ └── pay │ │ └── WechatPay.java │ └── test │ └── java │ └── com │ └── bzai │ └── gamesdk │ └── plugin │ └── wechat │ └── ExampleUnitTest.java ├── GameSDK_Utils ├── .gitignore ├── build.gradle ├── libs │ ├── android-support-v4.jar │ └── org.apache.http.legacy.jar ├── proguard-rules.pro └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── bzai │ │ └── gamesdk │ │ └── utils │ │ └── ExampleInstrumentedTest.java │ ├── main │ ├── AndroidManifest.xml │ └── java │ │ └── com │ │ └── bzai │ │ └── gamesdk │ │ └── common │ │ ├── utils_base │ │ ├── cache │ │ │ └── ApplicationCache.java │ │ ├── config │ │ │ ├── ErrCode.java │ │ │ └── TypeConfig.java │ │ ├── frame │ │ │ ├── google │ │ │ │ ├── gson │ │ │ │ │ ├── DefaultDateTypeAdapter.java │ │ │ │ │ ├── ExclusionStrategy.java │ │ │ │ │ ├── FieldAttributes.java │ │ │ │ │ ├── FieldNamingPolicy.java │ │ │ │ │ ├── FieldNamingStrategy.java │ │ │ │ │ ├── Gson.java │ │ │ │ │ ├── GsonBuilder.java │ │ │ │ │ ├── InstanceCreator.java │ │ │ │ │ ├── JsonArray.java │ │ │ │ │ ├── JsonDeserializationContext.java │ │ │ │ │ ├── JsonDeserializer.java │ │ │ │ │ ├── JsonElement.java │ │ │ │ │ ├── JsonIOException.java │ │ │ │ │ ├── JsonNull.java │ │ │ │ │ ├── JsonObject.java │ │ │ │ │ ├── JsonParseException.java │ │ │ │ │ ├── JsonParser.java │ │ │ │ │ ├── JsonPrimitive.java │ │ │ │ │ ├── JsonSerializationContext.java │ │ │ │ │ ├── JsonSerializer.java │ │ │ │ │ ├── JsonStreamParser.java │ │ │ │ │ ├── JsonSyntaxException.java │ │ │ │ │ ├── LongSerializationPolicy.java │ │ │ │ │ ├── TreeTypeAdapter.java │ │ │ │ │ ├── TypeAdapter.java │ │ │ │ │ ├── TypeAdapterFactory.java │ │ │ │ │ ├── annotations │ │ │ │ │ │ ├── Expose.java │ │ │ │ │ │ ├── SerializedName.java │ │ │ │ │ │ ├── Since.java │ │ │ │ │ │ ├── Until.java │ │ │ │ │ │ └── package-info.java │ │ │ │ │ ├── internal │ │ │ │ │ │ ├── $Gson$Preconditions.java │ │ │ │ │ │ ├── $Gson$Types.java │ │ │ │ │ │ ├── ConstructorConstructor.java │ │ │ │ │ │ ├── Excluder.java │ │ │ │ │ │ ├── JsonReaderInternalAccess.java │ │ │ │ │ │ ├── LazilyParsedNumber.java │ │ │ │ │ │ ├── ObjectConstructor.java │ │ │ │ │ │ ├── Primitives.java │ │ │ │ │ │ ├── Streams.java │ │ │ │ │ │ ├── StringMap.java │ │ │ │ │ │ ├── UnsafeAllocator.java │ │ │ │ │ │ ├── bind │ │ │ │ │ │ │ ├── ArrayTypeAdapter.java │ │ │ │ │ │ │ ├── CollectionTypeAdapterFactory.java │ │ │ │ │ │ │ ├── DateTypeAdapter.java │ │ │ │ │ │ │ ├── JsonTreeReader.java │ │ │ │ │ │ │ ├── JsonTreeWriter.java │ │ │ │ │ │ │ ├── MapTypeAdapterFactory.java │ │ │ │ │ │ │ ├── ObjectTypeAdapter.java │ │ │ │ │ │ │ ├── ReflectiveTypeAdapterFactory.java │ │ │ │ │ │ │ ├── SqlDateTypeAdapter.java │ │ │ │ │ │ │ ├── TimeTypeAdapter.java │ │ │ │ │ │ │ ├── TypeAdapterRuntimeTypeWrapper.java │ │ │ │ │ │ │ └── TypeAdapters.java │ │ │ │ │ │ └── package-info.java │ │ │ │ │ ├── package-info.java │ │ │ │ │ ├── reflect │ │ │ │ │ │ ├── TypeToken.java │ │ │ │ │ │ └── package-info.java │ │ │ │ │ └── stream │ │ │ │ │ │ ├── JsonReader.java │ │ │ │ │ │ ├── JsonScope.java │ │ │ │ │ │ ├── JsonToken.java │ │ │ │ │ │ ├── JsonWriter.java │ │ │ │ │ │ ├── MalformedJsonException.java │ │ │ │ │ │ └── StringPool.java │ │ │ │ └── volley │ │ │ │ │ ├── AuthFailureError.java │ │ │ │ │ ├── Cache.java │ │ │ │ │ ├── CacheDispatcher.java │ │ │ │ │ ├── DefaultRetryPolicy.java │ │ │ │ │ ├── ExecutorDelivery.java │ │ │ │ │ ├── InternalUtils.java │ │ │ │ │ ├── Network.java │ │ │ │ │ ├── NetworkDispatcher.java │ │ │ │ │ ├── NetworkError.java │ │ │ │ │ ├── NetworkResponse.java │ │ │ │ │ ├── NoConnectionError.java │ │ │ │ │ ├── ParseError.java │ │ │ │ │ ├── RedirectError.java │ │ │ │ │ ├── Request.java │ │ │ │ │ ├── RequestQueue.java │ │ │ │ │ ├── Response.java │ │ │ │ │ ├── ResponseDelivery.java │ │ │ │ │ ├── RetryPolicy.java │ │ │ │ │ ├── ServerError.java │ │ │ │ │ ├── TimeoutError.java │ │ │ │ │ ├── VolleyError.java │ │ │ │ │ ├── VolleyLog.java │ │ │ │ │ └── toolbox │ │ │ │ │ ├── AndroidAuthenticator.java │ │ │ │ │ ├── Authenticator.java │ │ │ │ │ ├── BasicNetwork.java │ │ │ │ │ ├── ByteArrayPool.java │ │ │ │ │ ├── ClearCacheRequest.java │ │ │ │ │ ├── DiskBasedCache.java │ │ │ │ │ ├── HttpClientStack.java │ │ │ │ │ ├── HttpHeaderParser.java │ │ │ │ │ ├── HttpStack.java │ │ │ │ │ ├── HurlStack.java │ │ │ │ │ ├── ImageLoader.java │ │ │ │ │ ├── ImageRequest.java │ │ │ │ │ ├── JsonArrayRequest.java │ │ │ │ │ ├── JsonObjectRequest.java │ │ │ │ │ ├── JsonRequest.java │ │ │ │ │ ├── NetworkImageView.java │ │ │ │ │ ├── NoCache.java │ │ │ │ │ ├── PoolingByteArrayOutputStream.java │ │ │ │ │ ├── RequestFuture.java │ │ │ │ │ ├── StringRequest.java │ │ │ │ │ └── Volley.java │ │ │ ├── logger │ │ │ │ ├── AndroidLogAdapter.java │ │ │ │ ├── CsvFormatStrategy.java │ │ │ │ ├── DiskLogAdapter.java │ │ │ │ ├── DiskLogStrategy.java │ │ │ │ ├── FormatStrategy.java │ │ │ │ ├── LogAdapter.java │ │ │ │ ├── LogStrategy.java │ │ │ │ ├── LogcatLogStrategy.java │ │ │ │ ├── Logger.java │ │ │ │ ├── LoggerPrinter.java │ │ │ │ ├── PrettyFormatStrategy.java │ │ │ │ ├── Printer.java │ │ │ │ └── Utils.java │ │ │ └── walle │ │ │ │ ├── WalleChannelReader.java │ │ │ │ └── payload_reader │ │ │ │ ├── ApkUtil.java │ │ │ │ ├── ChannelInfo.java │ │ │ │ ├── ChannelReader.java │ │ │ │ ├── Pair.java │ │ │ │ ├── PayloadReader.java │ │ │ │ └── SignatureNotFoundException.java │ │ ├── interfaces │ │ │ ├── CallBackListener.java │ │ │ └── LifeCycleInterface.java │ │ ├── net │ │ │ ├── RequestExecutor.java │ │ │ ├── base │ │ │ │ ├── VolleyRequestWrapper.java │ │ │ │ ├── VolleyResponseListener.java │ │ │ │ └── VolleySingleton.java │ │ │ ├── impl │ │ │ │ ├── BaseRequest.java │ │ │ │ ├── BaseRequestCallback.java │ │ │ │ ├── BaseRequestUtils.java │ │ │ │ └── bean │ │ │ │ │ └── ResponseResult.java │ │ │ └── request │ │ │ │ ├── IRequestManager.java │ │ │ │ ├── RequestCallback.java │ │ │ │ └── VolleyRequestManager.java │ │ ├── parse │ │ │ ├── channel │ │ │ │ ├── Channel.java │ │ │ │ ├── ChannelBeanList.java │ │ │ │ ├── ChannelListenerImpl.java │ │ │ │ └── ChannelManager.java │ │ │ ├── plugin │ │ │ │ ├── Plugin.java │ │ │ │ ├── PluginBeanList.java │ │ │ │ ├── PluginManager.java │ │ │ │ └── PluginReflectApi.java │ │ │ └── project │ │ │ │ ├── Project.java │ │ │ │ ├── ProjectBeanList.java │ │ │ │ └── ProjectManager.java │ │ ├── proguard │ │ │ ├── ProguardInterface.java │ │ │ └── ProguardObject.java │ │ └── utils │ │ │ ├── ArrayUtils.java │ │ │ ├── CodeUtils.java │ │ │ ├── ContextUtils.java │ │ │ ├── CryptUtils.java │ │ │ ├── DateUtils.java │ │ │ ├── FileUtils.java │ │ │ ├── IOUtils.java │ │ │ ├── JsonUtils.java │ │ │ ├── ListUtils.java │ │ │ ├── LogUtils.java │ │ │ ├── Md5Utils.java │ │ │ ├── ObjectUtils.java │ │ │ └── StringUtils.java │ │ ├── utils_business │ │ ├── cache │ │ │ ├── BaseCache.java │ │ │ ├── SDKInfoCache.java │ │ │ └── SharePreferencesCache.java │ │ └── config │ │ │ ├── KeyConfig.java │ │ │ └── UrlConfig.java │ │ └── utils_ui │ │ ├── BitmapUtils.java │ │ ├── LoadingUtils.java │ │ ├── ResourseIdUtils.java │ │ ├── ToastUtils.java │ │ └── activity │ │ └── SplashActivity.java │ └── test │ └── java │ └── com │ └── bzai │ └── gamesdk │ └── utils │ └── ExampleUnitTest.java ├── README.md ├── app ├── .gitignore ├── build.gradle ├── proguard-rules.pro └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── bzai │ │ └── gamesdkframe │ │ └── ExampleInstrumentedTest.java │ ├── main │ ├── AndroidManifest.xml │ ├── java │ │ └── com │ │ │ └── bzai │ │ │ └── gamesdkframe │ │ │ ├── GameApplication.java │ │ │ └── GameSDKMain.java │ └── res │ │ ├── drawable │ │ └── ic_launcher.png │ │ ├── layout │ │ └── activity_main.xml │ │ └── values │ │ ├── colors.xml │ │ └── strings.xml │ └── test │ └── java │ └── com │ └── bzai │ └── gamesdkframe │ └── ExampleUnitTest.java ├── build.gradle ├── git └── SDK架构设计.png ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── settings.gradle └── 框架必读说明 /.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .gradle 3 | /local.properties 4 | /.idea/workspace.xml 5 | /.idea/libraries 6 | .DS_Store 7 | /build 8 | /captures 9 | .externalNativeBuild 10 | -------------------------------------------------------------------------------- /GameSDKBuildJarTool/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /GameSDKBuildJarTool/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'java-library' 2 | apply plugin: 'idea' 3 | 4 | dependencies { 5 | compile fileTree(include: ['*.jar'], dir: 'libs') 6 | compile files('libs/proguard.jar') 7 | } 8 | 9 | //解决控件台中文乱码问题 10 | tasks.withType(JavaCompile) { 11 | options.encoding = "UTF-8" 12 | } 13 | 14 | tasks.withType(JavaCompile) { 15 | compileTask -> compileTask.dependsOn tasks.findByName('idea') 16 | } 17 | 18 | sourceSets { 19 | main { 20 | resources { 21 | srcDirs "src/main/resources" 22 | } 23 | } 24 | } 25 | 26 | sourceCompatibility = "1.7" 27 | targetCompatibility = "1.7" 28 | 29 | -------------------------------------------------------------------------------- /GameSDKBuildJarTool/libs/common-24.3.0.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bzaigege/GameSDKFrameDemo/31e812349bfd3d0341c5f4a9b174b05ccd3f47d3/GameSDKBuildJarTool/libs/common-24.3.0.jar -------------------------------------------------------------------------------- /GameSDKBuildJarTool/libs/guava-18.0.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bzaigege/GameSDKFrameDemo/31e812349bfd3d0341c5f4a9b174b05ccd3f47d3/GameSDKBuildJarTool/libs/guava-18.0.jar -------------------------------------------------------------------------------- /GameSDKBuildJarTool/libs/manifest-merger-24.3.0.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bzaigege/GameSDKFrameDemo/31e812349bfd3d0341c5f4a9b174b05ccd3f47d3/GameSDKBuildJarTool/libs/manifest-merger-24.3.0.jar -------------------------------------------------------------------------------- /GameSDKBuildJarTool/libs/proguard.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bzaigege/GameSDKFrameDemo/31e812349bfd3d0341c5f4a9b174b05ccd3f47d3/GameSDKBuildJarTool/libs/proguard.jar -------------------------------------------------------------------------------- /GameSDKBuildJarTool/libs/retrace.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bzaigege/GameSDKFrameDemo/31e812349bfd3d0341c5f4a9b174b05ccd3f47d3/GameSDKBuildJarTool/libs/retrace.jar -------------------------------------------------------------------------------- /GameSDKBuildJarTool/libs/sdk-common-25.1.2.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bzaigege/GameSDKFrameDemo/31e812349bfd3d0341c5f4a9b174b05ccd3f47d3/GameSDKBuildJarTool/libs/sdk-common-25.1.2.jar -------------------------------------------------------------------------------- /GameSDKBuildJarTool/src/main/cmd/test/class/com/bzai/demo/HelloWorld.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bzaigege/GameSDKFrameDemo/31e812349bfd3d0341c5f4a9b174b05ccd3f47d3/GameSDKBuildJarTool/src/main/cmd/test/class/com/bzai/demo/HelloWorld.class -------------------------------------------------------------------------------- /GameSDKBuildJarTool/src/main/cmd/test/class/com/bzai/demo/TestA.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bzaigege/GameSDKFrameDemo/31e812349bfd3d0341c5f4a9b174b05ccd3f47d3/GameSDKBuildJarTool/src/main/cmd/test/class/com/bzai/demo/TestA.class -------------------------------------------------------------------------------- /GameSDKBuildJarTool/src/main/cmd/test/jar/test.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bzaigege/GameSDKFrameDemo/31e812349bfd3d0341c5f4a9b174b05ccd3f47d3/GameSDKBuildJarTool/src/main/cmd/test/jar/test.jar -------------------------------------------------------------------------------- /GameSDKBuildJarTool/src/main/cmd/test/jar/test_proguard.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bzaigege/GameSDKFrameDemo/31e812349bfd3d0341c5f4a9b174b05ccd3f47d3/GameSDKBuildJarTool/src/main/cmd/test/jar/test_proguard.jar -------------------------------------------------------------------------------- /GameSDKBuildJarTool/src/main/cmd/test/java/HelloWorld.java: -------------------------------------------------------------------------------- 1 | package com.bzai.demo; 2 | 3 | public class HelloWorld { 4 | 5 | public static void main(String[] args){ 6 | System.out.println("hello world"); 7 | test(); 8 | } 9 | 10 | public static void test(){ 11 | TestA testA = new TestA(); 12 | testA.Test(); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /GameSDKBuildJarTool/src/main/cmd/test/java/TestA.java: -------------------------------------------------------------------------------- 1 | package com.bzai.demo; 2 | 3 | public class TestA { 4 | 5 | public String name = "asdfa"; 6 | 7 | public void Test(){ 8 | System.out.println("name:"+name); 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /GameSDKBuildJarTool/src/main/cmd/test/proguard/proguard_config.pro: -------------------------------------------------------------------------------- 1 | 2 | -dontskipnonpubliclibraryclassmembers 3 | -dontshrink 4 | -optimizations !code/simplification/arithmetic,!field/*,!class/merging/*,!code/allocation/variable 5 | -dontusemixedcaseclassnames 6 | -keepattributes SourceFile,LineNumberTable,*Annotation*,Signature,Deprecated,InnerClasses 7 | -keepparameternames 8 | -renamesourcefileattribute SourceFile 9 | -verbose 10 | 11 | -dontwarn android.support.v4.** 12 | 13 | # Keep names - Native method names. Keep all native class/method names. 14 | -keepclasseswithmembers,allowshrinking class * { 15 | native ; 16 | } 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /GameSDKBuildJarTool/src/main/cmd/test/proguard/tools/proguard.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bzaigege/GameSDKFrameDemo/31e812349bfd3d0341c5f4a9b174b05ccd3f47d3/GameSDKBuildJarTool/src/main/cmd/test/proguard/tools/proguard.jar -------------------------------------------------------------------------------- /GameSDKBuildJarTool/src/main/cmd/test/proguard/tools/rt.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bzaigege/GameSDKFrameDemo/31e812349bfd3d0341c5f4a9b174b05ccd3f47d3/GameSDKBuildJarTool/src/main/cmd/test/proguard/tools/rt.jar -------------------------------------------------------------------------------- /GameSDKBuildJarTool/src/main/java/com/bzai/gamesdk/build/Main.java: -------------------------------------------------------------------------------- 1 | package com.bzai.gamesdk.build; 2 | 3 | public class Main { 4 | 5 | public static void main(String[] args){ 6 | new Thread(new BuildJarTask()).start(); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /GameSDKBuildJarTool/src/main/java/com/bzai/gamesdk/build/bean/ErrorMsg.java: -------------------------------------------------------------------------------- 1 | package com.bzai.gamesdk.build.bean; 2 | 3 | /** 4 | * 描述打包结果 5 | */ 6 | public class ErrorMsg { 7 | 8 | public int code; 9 | public String message; 10 | public Exception e; 11 | 12 | public ErrorMsg(int code, String message){ 13 | this.code = code; 14 | this.message = message; 15 | } 16 | 17 | public ErrorMsg(int code, String message, Exception e){ 18 | this.code = code; 19 | this.message = message; 20 | this.e = e; 21 | } 22 | 23 | public int getCode() { 24 | return code; 25 | } 26 | 27 | public void setCode(int code) { 28 | this.code = code; 29 | } 30 | 31 | public String getMessage() { 32 | return message; 33 | } 34 | 35 | public void setMessage(String message) { 36 | this.message = message; 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /GameSDKBuildJarTool/src/main/java/com/bzai/gamesdk/build/tools/ServerTool.java: -------------------------------------------------------------------------------- 1 | package com.bzai.gamesdk.build.tools; 2 | 3 | import com.bzai.gamesdk.build.bean.Project; 4 | import com.bzai.gamesdk.build.utils.FileUtils; 5 | 6 | import java.io.File; 7 | import java.io.IOException; 8 | import java.nio.file.FileSystems; 9 | import java.nio.file.Files; 10 | import java.nio.file.LinkOption; 11 | import java.nio.file.Path; 12 | import java.util.Iterator; 13 | import java.util.List; 14 | 15 | /** 16 | * 模拟服务器同步过程 17 | * 一般项目代码都是放到svn或者git上托管的,模拟服务器存储地址 18 | */ 19 | public class ServerTool { 20 | 21 | public static void DownServerResource(List projectList, String checkoutDir) throws IOException{ 22 | 23 | String root_path = System.getProperty("user.dir"); 24 | Iterator iterator = projectList.iterator(); 25 | while (iterator.hasNext()){ 26 | Project project = iterator.next(); 27 | 28 | // 获取源码目录 29 | String projectName = project.getName(); 30 | String projectUrl = project.getUrl(); 31 | String projectResource = root_path + File.separator + projectUrl; 32 | // System.out.println(projectResource); 33 | 34 | // 工作目录 35 | String destPath = checkoutDir + File.separator + projectName ; 36 | Path destDirPath = FileSystems.getDefault().getPath(destPath); 37 | // System.out.println(destDirPath); 38 | 39 | boolean destDirPathExists = Files.exists(destDirPath, new LinkOption[]{LinkOption.NOFOLLOW_LINKS}); 40 | if (destDirPathExists){ 41 | FileUtils.delete(destPath); 42 | } 43 | 44 | FileUtils.copy(projectResource,destPath,false); 45 | 46 | //设置本地存放路径 47 | project.setPath(destPath); 48 | } 49 | 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /GameSDKBuildJarTool/src/main/java/com/bzai/gamesdk/build/utils/Utils.java: -------------------------------------------------------------------------------- 1 | package com.bzai.gamesdk.build.utils; 2 | 3 | import java.io.File; 4 | 5 | public class Utils { 6 | 7 | 8 | public static final int OK = 0; 9 | 10 | public static final int ERROR = 10001; 11 | 12 | private static String OS = System.getProperty("os.name").toLowerCase(); 13 | 14 | 15 | /** 16 | * Linux 和 Windows分号分别使用的是":"和";"。 17 | */ 18 | public static String OS_SEMICOLON = isWindows()?";":":"; 19 | 20 | 21 | public static boolean isWindows() { 22 | return (OS.indexOf("win") >= 0); 23 | } 24 | 25 | public static boolean isEmpty(String str){ 26 | if (null != str && !"".equals(str)){ 27 | return false; 28 | } 29 | return true; 30 | } 31 | 32 | 33 | /** 34 | * Get jar file path list string, use the delimiter to splice. 35 | * 36 | * @param libsPath 37 | * @return 38 | */ 39 | public static String getJarPathSet(String libsPath, String delimiter){ 40 | 41 | File file = new File(libsPath); 42 | String jarPathSet = ""; 43 | File[] files = file.listFiles(); 44 | for (int i = 0; i < files.length ; i++) { 45 | File libFile = files[i]; 46 | if (libFile.getName().endsWith(".jar")){ 47 | if (!isEmpty(jarPathSet)){ 48 | jarPathSet = jarPathSet + delimiter; 49 | } 50 | jarPathSet = jarPathSet + libFile.getAbsolutePath(); 51 | } 52 | } 53 | 54 | return jarPathSet; 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /GameSDKBuildJarTool/src/main/resources/config: -------------------------------------------------------------------------------- 1 | 2 | 3 | /** 4 | * Android sdk 路径。 5 | * 是否必须:必须。 6 | */ 7 | androidSdkPath=xxx 8 | 9 | 10 | /** 11 | * Android目标SDK版本。 12 | * 是否必须:必须。 13 | */ 14 | targetSdkVersion=android-23 15 | 16 | 17 | /** 18 | * 19 | * 输出Jar的名称 20 | * 是否必须:必须 21 | */ 22 | jarName=sdk_lexiang 23 | 24 | 25 | /** 26 | * 输出Jar的版本号 27 | * 是否必须:必须。 28 | */ 29 | jarVersion=v1.0.0 30 | 31 | 32 | /** 33 | * 输出路径。 34 | * 是否必须:必须。 35 | */ 36 | outPutPath=D:\\BuildJar 37 | 38 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /GameSDKBuildJarTool/src/main/resources/proguard_config.pro: -------------------------------------------------------------------------------- 1 | 2 | -dontskipnonpubliclibraryclassmembers 3 | -dontshrink 4 | -optimizations !code/simplification/arithmetic,!field/*,!class/merging/*,!code/allocation/variable 5 | -dontusemixedcaseclassnames 6 | -keepattributes SourceFile,LineNumberTable,*Annotation*,Signature,Deprecated,InnerClasses 7 | -keepparameternames 8 | -renamesourcefileattribute SourceFile 9 | -verbose 10 | 11 | -dontwarn android.support.v4.** 12 | 13 | # Keep names - Native method names. Keep all native class/method names. 14 | -keepclasseswithmembers,allowshrinking class * { 15 | native ; 16 | } 17 | 18 | # Also keep - Serialization code. Keep all fields and methods that are used for 19 | # serialization. 20 | -keepclassmembers class * extends java.io.Serializable { 21 | static final long serialVersionUID; 22 | static final java.io.ObjectStreamField[] serialPersistentFields; 23 | private void writeObject(java.io.ObjectOutputStream); 24 | private void readObject(java.io.ObjectInputStream); 25 | java.lang.Object writeReplace(); 26 | java.lang.Object readResolve(); 27 | } 28 | 29 | #保持 Parcelable 不被混淆 30 | -keep class * implements android.os.Parcelable { 31 | public static final android.os.Parcelable$Creator *; 32 | } 33 | 34 | 35 | # 四大组件 36 | -keep class * extends android.app.Activity { 37 | public protected ; 38 | ; 39 | } 40 | -keep class * extends android.app.Application { 41 | public protected ; 42 | ; 43 | } 44 | -keep public class * extends android.app.Service 45 | -keep public class * extends android.content.BroadcastReceiver 46 | 47 | # 对外接口不参与混淆 48 | -keep class com.bzai.gamesdk.GameInfoSetting{ *; } 49 | -keep class com.bzai.gamesdk.api.** { *; } 50 | -keep class com.bzai.gamesdk.bean.** { *; } 51 | -keep class com.bzai.gamesdk.listener.** { *; } 52 | # SDK基础不混淆类 53 | -keep class com.bzai.gamesdk.common.utils_base.proguard.** { *; } 54 | -keep class * extends com.bzai.gamesdk.common.utils_base.proguard.** { *; } 55 | 56 | -------------------------------------------------------------------------------- /GameSDKBuildJarTool/src/main/resources/project_list: -------------------------------------------------------------------------------- 1 | 2 | ###API接口层 3 | GameSDK_API=head,GameSDK_API 4 | 5 | ###Project项目层 6 | #GameSDK_Project_Custom=head,GameSDK_BeginProject\\GameSDK_Project_Custom 7 | GameSDK_Project_JuHe=head,GameSDK_BeginProject\\GameSDK_Project_JuHe 8 | 9 | ###Channel渠道层 10 | #GameSDK_Channel_Test=head,GameSDK_Channel\\GameSDK_Channel_Test 11 | GameSDK_Channel_Lexiang=head,GameSDK_Channel\\GameSDK_Channel_Lexiang 12 | 13 | ###Manager逻辑控制层 14 | GameSDK_Module_Init=head,GameSDK_Manager\\GameSDK_Module_Init 15 | GameSDK_Module_Account=head,GameSDK_Manager\\GameSDK_Module_Account 16 | GameSDK_Module_Purchase=head,GameSDK_Manager\\GameSDK_Module_Purchase 17 | 18 | ###Plugin功能插件层 19 | GameSDK_Manager_Impl=head,GameSDK_Manager_Impl 20 | GameSDK_Plugin_Alipay=head,GameSDK_Plugin\\GameSDK_Plugin_Alipay 21 | GameSDK_Plugin_Wechat=head,GameSDK_Plugin\\GameSDK_Plugin_Wechat 22 | 23 | ###基础库 24 | GameSDK_Utils=head,GameSDK_Utils 25 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /GameSDKBuildJarTool/必读说明: -------------------------------------------------------------------------------- 1 | 2 | ### 该GameSDKBuildJarTool 用于自动化混淆SDK源码工具,只需要配置config、proguard_config_pro、project_list相关配置就可以了。 3 | 4 | cmd目录 为手动脚本运行Demo,配合博客来讲解自动化混淆的过程 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /GameSDKDemo_Release/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /GameSDKDemo_Release/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.application' 2 | 3 | android { 4 | compileSdkVersion 26 5 | buildToolsVersion "27.0.3" 6 | defaultConfig { 7 | applicationId "com.bzai.gamesdkframe.demo" 8 | minSdkVersion 14 9 | targetSdkVersion 26 10 | versionCode 1 11 | versionName "1.0" 12 | testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 13 | } 14 | buildTypes { 15 | release { 16 | minifyEnabled false 17 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 18 | } 19 | } 20 | } 21 | 22 | dependencies { 23 | compile fileTree(include: ['*.jar'], dir: 'libs') 24 | compile project(':GameSDKLibrary_Release') 25 | } 26 | -------------------------------------------------------------------------------- /GameSDKDemo_Release/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile 22 | -------------------------------------------------------------------------------- /GameSDKDemo_Release/src/androidTest/java/com/bzai/gamesdkframe/ExampleInstrumentedTest.java: -------------------------------------------------------------------------------- 1 | package com.bzai.gamesdkframe; 2 | 3 | import android.content.Context; 4 | import android.support.test.InstrumentationRegistry; 5 | import android.support.test.runner.AndroidJUnit4; 6 | 7 | import org.junit.Test; 8 | import org.junit.runner.RunWith; 9 | 10 | import static org.junit.Assert.*; 11 | 12 | /** 13 | * Instrumented test, which will execute on an Android device. 14 | * 15 | * @see Testing documentation 16 | */ 17 | @RunWith(AndroidJUnit4.class) 18 | public class ExampleInstrumentedTest { 19 | @Test 20 | public void useAppContext() throws Exception { 21 | // Context of the app under test. 22 | Context appContext = InstrumentationRegistry.getTargetContext(); 23 | 24 | assertEquals("com.bzai.gamesdkframe", appContext.getPackageName()); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /GameSDKDemo_Release/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 10 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /GameSDKDemo_Release/src/main/java/com/bzai/gamesdkframe/demo/GameApplication.java: -------------------------------------------------------------------------------- 1 | package com.bzai.gamesdkframe.demo; 2 | 3 | import android.content.Context; 4 | 5 | import com.bzai.gamesdk.SDKApplication; 6 | 7 | 8 | /** 9 | * Created by bzai on 2018/4/10. 10 | *

11 | * Desc: 游戏的Application 直接继承SDK的application 12 | */ 13 | 14 | public class GameApplication extends SDKApplication { 15 | 16 | @Override 17 | protected void attachBaseContext(Context base) { 18 | super.attachBaseContext(base); 19 | } 20 | 21 | @Override 22 | public void onCreate() { 23 | super.onCreate(); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /GameSDKDemo_Release/src/main/res/drawable/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bzaigege/GameSDKFrameDemo/31e812349bfd3d0341c5f4a9b174b05ccd3f47d3/GameSDKDemo_Release/src/main/res/drawable/ic_launcher.png -------------------------------------------------------------------------------- /GameSDKDemo_Release/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #3F51B5 4 | #303F9F 5 | #FF4081 6 | #FFFFFF 7 | #000000 8 | 9 | -------------------------------------------------------------------------------- /GameSDKDemo_Release/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | GameSDKFrameDemo 3 | 4 | -------------------------------------------------------------------------------- /GameSDKDemo_Release/src/test/java/com/bzai/gamesdkframe/ExampleUnitTest.java: -------------------------------------------------------------------------------- 1 | package com.bzai.gamesdkframe; 2 | 3 | import org.junit.Test; 4 | 5 | import static org.junit.Assert.*; 6 | 7 | /** 8 | * Example local unit test, which will execute on the development machine (host). 9 | * 10 | * @see Testing documentation 11 | */ 12 | public class ExampleUnitTest { 13 | @Test 14 | public void addition_isCorrect() throws Exception { 15 | assertEquals(4, 2 + 2); 16 | } 17 | } -------------------------------------------------------------------------------- /GameSDKLibrary_Release/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /GameSDKLibrary_Release/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.library' 2 | 3 | android { 4 | compileSdkVersion 27 5 | buildToolsVersion '27.0.3' 6 | defaultConfig { 7 | minSdkVersion 14 8 | targetSdkVersion 27 9 | 10 | testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 11 | 12 | } 13 | 14 | buildTypes { 15 | release { 16 | minifyEnabled false 17 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 18 | } 19 | } 20 | 21 | } 22 | 23 | dependencies { 24 | compile fileTree(dir: 'libs', include: ['*.jar']) 25 | } 26 | -------------------------------------------------------------------------------- /GameSDKLibrary_Release/libs/alipaySdk-20180601.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bzaigege/GameSDKFrameDemo/31e812349bfd3d0341c5f4a9b174b05ccd3f47d3/GameSDKLibrary_Release/libs/alipaySdk-20180601.jar -------------------------------------------------------------------------------- /GameSDKLibrary_Release/libs/android-support-v4.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bzaigege/GameSDKFrameDemo/31e812349bfd3d0341c5f4a9b174b05ccd3f47d3/GameSDKLibrary_Release/libs/android-support-v4.jar -------------------------------------------------------------------------------- /GameSDKLibrary_Release/libs/org.apache.http.legacy.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bzaigege/GameSDKFrameDemo/31e812349bfd3d0341c5f4a9b174b05ccd3f47d3/GameSDKLibrary_Release/libs/org.apache.http.legacy.jar -------------------------------------------------------------------------------- /GameSDKLibrary_Release/libs/sdk_test_v1.0.0.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bzaigege/GameSDKFrameDemo/31e812349bfd3d0341c5f4a9b174b05ccd3f47d3/GameSDKLibrary_Release/libs/sdk_test_v1.0.0.jar -------------------------------------------------------------------------------- /GameSDKLibrary_Release/libs/wechat-sdk-android-without-mta-5.1.4.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bzaigege/GameSDKFrameDemo/31e812349bfd3d0341c5f4a9b174b05ccd3f47d3/GameSDKLibrary_Release/libs/wechat-sdk-android-without-mta-5.1.4.jar -------------------------------------------------------------------------------- /GameSDKLibrary_Release/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile 22 | -------------------------------------------------------------------------------- /GameSDKLibrary_Release/src/androidTest/java/com/suyutech/baselibrary/ExampleInstrumentedTest.java: -------------------------------------------------------------------------------- 1 | package com.suyutech.baselibrary; 2 | 3 | import android.content.Context; 4 | import android.support.test.InstrumentationRegistry; 5 | import android.support.test.runner.AndroidJUnit4; 6 | 7 | import org.junit.Test; 8 | import org.junit.runner.RunWith; 9 | 10 | import static org.junit.Assert.*; 11 | 12 | /** 13 | * Instrumented test, which will execute on an Android device. 14 | * 15 | * @see Testing documentation 16 | */ 17 | @RunWith(AndroidJUnit4.class) 18 | public class ExampleInstrumentedTest { 19 | @Test 20 | public void useAppContext() throws Exception { 21 | // Context of the app under test. 22 | Context appContext = InstrumentationRegistry.getTargetContext(); 23 | 24 | assertEquals("com.suyutech.baselibrary.test", appContext.getPackageName()); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /GameSDKLibrary_Release/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /GameSDKLibrary_Release/src/main/assets/Channel_config.txt: -------------------------------------------------------------------------------- 1 | { 2 | "channel": [ 3 | { 4 | "channel_name": "channel", 5 | "class_name": "com.bzai.gamesdk.channel.test.TestChannelSDK", 6 | "description": "测试渠道SDK", 7 | "version": "1.0.0" 8 | } 9 | ] 10 | } -------------------------------------------------------------------------------- /GameSDKLibrary_Release/src/main/assets/Plugin_config.txt: -------------------------------------------------------------------------------- 1 | { 2 | "plugin": [ 3 | { 4 | "plugin_name": "plugin_wechat", 5 | "class_name": "com.bzai.gamesdk.plugin.wechat.WechatPlugin", 6 | "description": "微信功能插件", 7 | "version": "5.1.4" 8 | }, 9 | { 10 | "plugin_name": "plugin_alipay", 11 | "class_name": "com.bzai.gamesdk.plugin.alipay.AlipayPlugin", 12 | "description": "支付宝功能插件", 13 | "version": "15.5.5" 14 | } 15 | ] 16 | } -------------------------------------------------------------------------------- /GameSDKLibrary_Release/src/main/assets/Project_config.txt: -------------------------------------------------------------------------------- 1 | { 2 | "project": [ 3 | { 4 | "project_name": "project", 5 | "class_name": "com.bzai.gamesdk.project.JuHeProject", 6 | "description": "聚合SDK项目", 7 | "version": "1.0.0" 8 | } 9 | ] 10 | } -------------------------------------------------------------------------------- /GameSDKLibrary_Release/src/main/assets/SDKInfo.json: -------------------------------------------------------------------------------- 1 | { 2 | "sdk_type": "1", 3 | "sdk_name": "SDK_JuHe", 4 | "sdk_version": "1.0.0", 5 | "sdk_url": "http://www.baidu.com/" 6 | } -------------------------------------------------------------------------------- /GameSDKLibrary_Release/src/main/assets/splash/splash_screen.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bzaigege/GameSDKFrameDemo/31e812349bfd3d0341c5f4a9b174b05ccd3f47d3/GameSDKLibrary_Release/src/main/assets/splash/splash_screen.jpg -------------------------------------------------------------------------------- /GameSDKLibrary_Release/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | GameSDK_Plugin_Alipay 3 | 4 | -------------------------------------------------------------------------------- /GameSDKLibrary_Release/src/test/java/com/suyutech/baselibrary/ExampleUnitTest.java: -------------------------------------------------------------------------------- 1 | package com.suyutech.baselibrary; 2 | 3 | import org.junit.Test; 4 | 5 | import static org.junit.Assert.*; 6 | 7 | /** 8 | * Example local unit test, which will execute on the development machine (host). 9 | * 10 | * @see Testing documentation 11 | */ 12 | public class ExampleUnitTest { 13 | @Test 14 | public void addition_isCorrect() throws Exception { 15 | assertEquals(4, 2 + 2); 16 | } 17 | } -------------------------------------------------------------------------------- /GameSDK_API/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /GameSDK_API/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.library' 2 | 3 | android { 4 | compileSdkVersion 26 5 | buildToolsVersion "27.0.3" 6 | defaultConfig { 7 | minSdkVersion 14 8 | targetSdkVersion 26 9 | testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 10 | 11 | } 12 | 13 | buildTypes { 14 | release { 15 | minifyEnabled false 16 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 17 | } 18 | } 19 | 20 | } 21 | 22 | dependencies { 23 | compile fileTree(include: ['*.jar'], dir: 'libs') 24 | compile project(':GameSDK_Project_JuHe') 25 | // compile project(':GameSDK_Project_Custom') 26 | } 27 | -------------------------------------------------------------------------------- /GameSDK_API/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile 22 | -------------------------------------------------------------------------------- /GameSDK_API/src/androidTest/java/com/bzai/gamesdk/api/ExampleInstrumentedTest.java: -------------------------------------------------------------------------------- 1 | package com.bzai.gamesdk.api; 2 | 3 | import android.content.Context; 4 | import android.support.test.InstrumentationRegistry; 5 | import android.support.test.runner.AndroidJUnit4; 6 | 7 | import org.junit.Test; 8 | import org.junit.runner.RunWith; 9 | 10 | import static org.junit.Assert.*; 11 | 12 | /** 13 | * Instrumented test, which will execute on an Android device. 14 | * 15 | * @see Testing documentation 16 | */ 17 | @RunWith(AndroidJUnit4.class) 18 | public class ExampleInstrumentedTest { 19 | @Test 20 | public void useAppContext() throws Exception { 21 | // Context of the app under test. 22 | Context appContext = InstrumentationRegistry.getTargetContext(); 23 | 24 | assertEquals("com.bzai.gamesdk.api.test", appContext.getPackageName()); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /GameSDK_API/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | -------------------------------------------------------------------------------- /GameSDK_API/src/main/java/com/bzai/gamesdk/GameInfoSetting.java: -------------------------------------------------------------------------------- 1 | package com.bzai.gamesdk; 2 | 3 | /** 4 | * Created by bzai on 2018/4/10. 5 | *

6 | * Desc: 7 | * 8 | * 用于对外给CP获取对应的游戏 gameid 和 gamekey 9 | */ 10 | 11 | public class GameInfoSetting { 12 | 13 | public String gameid; 14 | public String gamekey; 15 | 16 | public GameInfoSetting(String gameid, String gamekey){ 17 | 18 | this.gameid = gameid; 19 | this.gamekey = gamekey; 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /GameSDK_API/src/main/java/com/bzai/gamesdk/SDKApplication.java: -------------------------------------------------------------------------------- 1 | package com.bzai.gamesdk; 2 | import android.content.Context; 3 | 4 | import com.bzai.gamesdk.project.ProjectApplication; 5 | 6 | /** 7 | * Created by bzai on 2018/4/10. 8 | *

9 | * Desc: 项目SDK的application 10 | */ 11 | 12 | public class SDKApplication extends ProjectApplication { 13 | 14 | @Override 15 | protected void attachBaseContext(Context context) { 16 | super.attachBaseContext(context); 17 | } 18 | 19 | @Override 20 | public void onCreate() { 21 | super.onCreate(); 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /GameSDK_API/src/main/java/com/bzai/gamesdk/bean/info/AccountEventResultInfo.java: -------------------------------------------------------------------------------- 1 | package com.bzai.gamesdk.bean.info; 2 | 3 | /** 4 | * Created by bzai on 2018/4/17. 5 | *

6 | * Desc: 7 | * 8 | * 用于装换成Json对象的实体类,不对外提供get方法 9 | * 10 | */ 11 | 12 | public class AccountEventResultInfo { 13 | 14 | 15 | private int eventType; //事件类型 16 | 17 | private int statusCode; //事件ID的状态码 18 | 19 | private String message; //描述信息 20 | 21 | private PlayerInfo playerInfo; //用户信息 22 | 23 | public void setEventType(int eventType) { 24 | this.eventType = eventType; 25 | } 26 | 27 | public void setStatusCode(int statusCode) { 28 | this.statusCode = statusCode; 29 | } 30 | 31 | public void setMsg(String message) { 32 | this.message = message; 33 | } 34 | 35 | public void setPlayerInfo(PlayerInfo playerInfo) { 36 | this.playerInfo = playerInfo; 37 | } 38 | 39 | } 40 | -------------------------------------------------------------------------------- /GameSDK_API/src/main/java/com/bzai/gamesdk/bean/info/PlayerInfo.java: -------------------------------------------------------------------------------- 1 | package com.bzai.gamesdk.bean.info; 2 | 3 | /** 4 | * Created by bzai on 2018/4/11. 5 | *

6 | * Desc: 返回外界的用户信息实体类 7 | */ 8 | 9 | public class PlayerInfo { 10 | 11 | private String playerId; 12 | private String token; 13 | 14 | public String getPlayerId() { 15 | return playerId; 16 | } 17 | 18 | public void setPlayerId(String playerId) { 19 | this.playerId = playerId; 20 | } 21 | 22 | public String getToken() { 23 | return token; 24 | } 25 | 26 | public void setToken(String token) { 27 | this.token = token; 28 | } 29 | 30 | } 31 | -------------------------------------------------------------------------------- /GameSDK_API/src/main/java/com/bzai/gamesdk/listener/AccountCallBackLister.java: -------------------------------------------------------------------------------- 1 | package com.bzai.gamesdk.listener; 2 | 3 | /** 4 | * Created by bzai on 2018/4/12. 5 | *

6 | * Desc: 7 | * 8 | * 对外的SDK Api 账号监听接口 9 | * 10 | */ 11 | 12 | public interface AccountCallBackLister { 13 | 14 | int LOGIN_SUCCESS = 1000; //登录成功 15 | int LOGIN_FAILURE = 1001; //登录失败 16 | int LOGIN_CANCEL = 1002; //登录取消 17 | 18 | int SWITCH_ACCOUNT_SUCCESS = 1003; //切换账号成功 19 | int SWITCH_ACCOUNT_FAILURE = 1004; //切换账号失败 20 | int SWITCH_ACCOUNT_CANCEL = 1005; //切换账号取消 21 | 22 | int LOGOUT_SUCCESS = 1006; //注销账号成功 23 | int LOGOUT_FAILURE = 1007; //注销账号失败 24 | int LOGOUT_CANCEL = 1008; //注销账号取消 25 | 26 | void onAccountEventCallBack(String jsonStr); 27 | 28 | } 29 | -------------------------------------------------------------------------------- /GameSDK_API/src/main/java/com/bzai/gamesdk/listener/ExitCallBackLister.java: -------------------------------------------------------------------------------- 1 | package com.bzai.gamesdk.listener; 2 | 3 | /** 4 | * Created by bzai on 2018/4/11. 5 | *

6 | * Desc: 7 | * 对外的SDK Api 退出监听接口 8 | */ 9 | 10 | public interface ExitCallBackLister { 11 | 12 | /** 13 | * 退出框退出成功回调 14 | */ 15 | void onExitDialogSuccess(); 16 | 17 | /** 18 | * 退出框退出取消回调 19 | */ 20 | void onExitDialogCancel(); 21 | 22 | /** 23 | * 不存在退出框,需要游戏自己实现退出框 24 | */ 25 | void onNotExitDialog(); 26 | } 27 | -------------------------------------------------------------------------------- /GameSDK_API/src/main/java/com/bzai/gamesdk/listener/InitCallBackLister.java: -------------------------------------------------------------------------------- 1 | package com.bzai.gamesdk.listener; 2 | 3 | /** 4 | * Created by bzai on 2018/4/10. 5 | *

6 | * Desc: 7 | * 8 | * 对外的SDK Api 初始化监听接口 9 | */ 10 | 11 | public interface InitCallBackLister { 12 | 13 | /** 14 | * 初始化成功 15 | */ 16 | void onSuccess(); 17 | 18 | /** 19 | * 初始化失败 20 | * @param errCode 21 | * @param msg 22 | */ 23 | void onFailure(int errCode, String msg); 24 | 25 | 26 | } 27 | -------------------------------------------------------------------------------- /GameSDK_API/src/main/java/com/bzai/gamesdk/listener/PurchaseCallBackListener.java: -------------------------------------------------------------------------------- 1 | package com.bzai.gamesdk.listener; 2 | 3 | /** 4 | * Created by bzai on 2018/4/13. 5 | *

6 | * Desc: 7 | * 8 | * 支付回调 9 | * 10 | */ 11 | 12 | public interface PurchaseCallBackListener { 13 | 14 | /** 15 | * 返回订单成功信息,比支付结果早 16 | * @param orderId 17 | */ 18 | void onOrderId(String orderId); 19 | 20 | /** 21 | * 支付成功 22 | */ 23 | void onSuccess(); 24 | 25 | /** 26 | * 支付失败回调 27 | * @param errCode 28 | * @param msg 失败信息 29 | * 30 | */ 31 | void onFailure(int errCode, String msg); 32 | 33 | /** 34 | * 支付取消 35 | */ 36 | void onCancel(); 37 | 38 | 39 | /** 40 | * 支付完成,当渠道没有正确支付回调时,会返回该结果 41 | */ 42 | void onComplete(); 43 | } 44 | -------------------------------------------------------------------------------- /GameSDK_API/src/test/java/com/bzai/gamesdk/api/ExampleUnitTest.java: -------------------------------------------------------------------------------- 1 | package com.bzai.gamesdk.api; 2 | 3 | import org.junit.Test; 4 | 5 | import static org.junit.Assert.*; 6 | 7 | /** 8 | * Example local unit test, which will execute on the development machine (host). 9 | * 10 | * @see Testing documentation 11 | */ 12 | public class ExampleUnitTest { 13 | @Test 14 | public void addition_isCorrect() throws Exception { 15 | assertEquals(4, 2 + 2); 16 | } 17 | } -------------------------------------------------------------------------------- /GameSDK_BeginProject/GameSDK_Project_Custom/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /GameSDK_BeginProject/GameSDK_Project_Custom/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.library' 2 | 3 | android { 4 | compileSdkVersion 26 5 | buildToolsVersion "27.0.3" 6 | defaultConfig { 7 | minSdkVersion 14 8 | targetSdkVersion 26 9 | 10 | testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 11 | } 12 | 13 | buildTypes { 14 | release { 15 | minifyEnabled false 16 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 17 | } 18 | } 19 | 20 | } 21 | 22 | dependencies { 23 | compile fileTree(include: ['*.jar'], dir: 'libs') 24 | compile project(':GameSDK_Module_Account') 25 | compile project(':GameSDK_Module_Init') 26 | compile project(':GameSDK_Module_Purchase') 27 | } 28 | -------------------------------------------------------------------------------- /GameSDK_BeginProject/GameSDK_Project_Custom/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile 22 | -------------------------------------------------------------------------------- /GameSDK_BeginProject/GameSDK_Project_Custom/src/androidTest/java/com/bzai/gamesdk/project/channel/ExampleInstrumentedTest.java: -------------------------------------------------------------------------------- 1 | package com.bzai.gamesdk.project.channel; 2 | 3 | import android.content.Context; 4 | import android.support.test.InstrumentationRegistry; 5 | import android.support.test.runner.AndroidJUnit4; 6 | 7 | import org.junit.Test; 8 | import org.junit.runner.RunWith; 9 | 10 | import static org.junit.Assert.*; 11 | 12 | /** 13 | * Instrumented test, which will execute on an Android device. 14 | * 15 | * @see Testing documentation 16 | */ 17 | @RunWith(AndroidJUnit4.class) 18 | public class ExampleInstrumentedTest { 19 | @Test 20 | public void useAppContext() throws Exception { 21 | // Context of the app under test. 22 | Context appContext = InstrumentationRegistry.getTargetContext(); 23 | 24 | assertEquals("com.bzai.gamesdk.project.channel.test", appContext.getPackageName()); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /GameSDK_BeginProject/GameSDK_Project_Custom/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | -------------------------------------------------------------------------------- /GameSDK_BeginProject/GameSDK_Project_Custom/src/main/assets/Plugin_config.txt: -------------------------------------------------------------------------------- 1 | { 2 | "plugin": [ 3 | { 4 | "plugin_name": "plugin_wechat", 5 | "class_name": "com.bzai.gamesdk.plugin.wechat.WechatPlugin", 6 | "description": "微信功能插件", 7 | "version": "5.1.4" 8 | }, 9 | { 10 | "plugin_name": "plugin_alipay", 11 | "class_name": "com.bzai.gamesdk.plugin.alipay.AlipayPlugin", 12 | "description": "支付宝功能插件", 13 | "version": "15.5.5" 14 | } 15 | ] 16 | } -------------------------------------------------------------------------------- /GameSDK_BeginProject/GameSDK_Project_Custom/src/main/assets/Project_config.txt: -------------------------------------------------------------------------------- 1 | { 2 | "project": [ 3 | { 4 | "project_name": "project", 5 | "class_name": "com.bzai.gamesdk.project.CustomProject", 6 | "description": "自定义SDK项目", 7 | "version": "1.0.0" 8 | } 9 | ] 10 | } -------------------------------------------------------------------------------- /GameSDK_BeginProject/GameSDK_Project_Custom/src/main/assets/SDKInfo.json: -------------------------------------------------------------------------------- 1 | { 2 | "sdk_type": "1", 3 | "sdk_name": "SDK_Custom", 4 | "sdk_version": "1.0.0", 5 | "sdk_url": "http://www.baidu.com/" 6 | } -------------------------------------------------------------------------------- /GameSDK_BeginProject/GameSDK_Project_Custom/src/main/java/com/bzai/gamesdk/project/ProjectApplication.java: -------------------------------------------------------------------------------- 1 | package com.bzai.gamesdk.project; 2 | 3 | import android.app.Application; 4 | import android.content.Context; 5 | 6 | import com.bzai.gamesdk.module.init.InitManager; 7 | 8 | /** 9 | * Created by bzai on 2018/4/10. 10 | *

11 | * Desc: 项目SDK的application 12 | */ 13 | public class ProjectApplication extends Application { 14 | 15 | @Override 16 | protected void attachBaseContext(Context context) { 17 | //必须先加载项目配置文件,找到项目的入口。 18 | InitManager.getInstance().initApplication(this,context,true); 19 | super.attachBaseContext(context); 20 | } 21 | 22 | @Override 23 | public void onCreate() { 24 | super.onCreate(); 25 | } 26 | 27 | 28 | } 29 | -------------------------------------------------------------------------------- /GameSDK_BeginProject/GameSDK_Project_Custom/src/test/java/com/bzai/gamesdk/project/channel/ExampleUnitTest.java: -------------------------------------------------------------------------------- 1 | package com.bzai.gamesdk.project.channel; 2 | 3 | import org.junit.Test; 4 | 5 | import static org.junit.Assert.*; 6 | 7 | /** 8 | * Example local unit test, which will execute on the development machine (host). 9 | * 10 | * @see Testing documentation 11 | */ 12 | public class ExampleUnitTest { 13 | @Test 14 | public void addition_isCorrect() throws Exception { 15 | assertEquals(4, 2 + 2); 16 | } 17 | } -------------------------------------------------------------------------------- /GameSDK_BeginProject/GameSDK_Project_JuHe/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /GameSDK_BeginProject/GameSDK_Project_JuHe/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.library' 2 | 3 | android { 4 | compileSdkVersion 26 5 | buildToolsVersion "27.0.3" 6 | defaultConfig { 7 | minSdkVersion 14 8 | targetSdkVersion 26 9 | testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 10 | } 11 | 12 | buildTypes { 13 | release { 14 | minifyEnabled false 15 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 16 | } 17 | } 18 | 19 | } 20 | 21 | dependencies { 22 | compile fileTree(include: ['*.jar'], dir: 'libs') 23 | compile project(':GameSDK_Channel_Lexiang') 24 | compile project(':GameSDK_Module_Init') 25 | compile project(':GameSDK_Module_Account') 26 | compile project(':GameSDK_Module_Purchase') 27 | } 28 | -------------------------------------------------------------------------------- /GameSDK_BeginProject/GameSDK_Project_JuHe/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile 22 | -------------------------------------------------------------------------------- /GameSDK_BeginProject/GameSDK_Project_JuHe/src/androidTest/java/com/bzai/gamesdk/project/juhe/ExampleInstrumentedTest.java: -------------------------------------------------------------------------------- 1 | package com.bzai.gamesdk.project.juhe; 2 | 3 | import android.content.Context; 4 | import android.support.test.InstrumentationRegistry; 5 | import android.support.test.runner.AndroidJUnit4; 6 | 7 | import org.junit.Test; 8 | import org.junit.runner.RunWith; 9 | 10 | import static org.junit.Assert.*; 11 | 12 | /** 13 | * Instrumented test, which will execute on an Android device. 14 | * 15 | * @see Testing documentation 16 | */ 17 | @RunWith(AndroidJUnit4.class) 18 | public class ExampleInstrumentedTest { 19 | @Test 20 | public void useAppContext() throws Exception { 21 | // Context of the app under test. 22 | Context appContext = InstrumentationRegistry.getTargetContext(); 23 | 24 | assertEquals("com.bzai.gamesdk.project.juhe.test", appContext.getPackageName()); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /GameSDK_BeginProject/GameSDK_Project_JuHe/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | -------------------------------------------------------------------------------- /GameSDK_BeginProject/GameSDK_Project_JuHe/src/main/assets/Plugin_config.txt: -------------------------------------------------------------------------------- 1 | { 2 | "plugin": [ 3 | { 4 | "plugin_name": "plugin_wechat", 5 | "class_name": "com.bzai.gamesdk.plugin.wechat.WechatPlugin", 6 | "description": "微信功能插件", 7 | "version": "5.1.4" 8 | }, 9 | { 10 | "plugin_name": "plugin_alipay", 11 | "class_name": "com.bzai.gamesdk.plugin.alipay.AlipayPlugin", 12 | "description": "支付宝功能插件", 13 | "version": "15.5.5" 14 | } 15 | ] 16 | } -------------------------------------------------------------------------------- /GameSDK_BeginProject/GameSDK_Project_JuHe/src/main/assets/Project_config.txt: -------------------------------------------------------------------------------- 1 | { 2 | "project": [ 3 | { 4 | "project_name": "project", 5 | "class_name": "com.bzai.gamesdk.project.JuHeProject", 6 | "description": "聚合SDK项目", 7 | "version": "1.0.0" 8 | } 9 | ] 10 | } -------------------------------------------------------------------------------- /GameSDK_BeginProject/GameSDK_Project_JuHe/src/main/assets/SDKInfo.json: -------------------------------------------------------------------------------- 1 | { 2 | "sdk_type": "1", 3 | "sdk_name": "SDK_JuHe", 4 | "sdk_version": "1.0.0", 5 | "sdk_url": "http://www.baidu.com/" 6 | } -------------------------------------------------------------------------------- /GameSDK_BeginProject/GameSDK_Project_JuHe/src/main/java/com/bzai/gamesdk/project/ProjectApplication.java: -------------------------------------------------------------------------------- 1 | package com.bzai.gamesdk.project; 2 | 3 | import android.content.Context; 4 | import com.bzai.gamesdk.channel.application.ChannelApplication; 5 | import com.bzai.gamesdk.module.init.InitManager; 6 | 7 | 8 | /** 9 | * Created by bzai on 2018/4/10. 10 | *

11 | * Desc: 项目SDK的application 12 | * 13 | * ProjectApplication extends ChannelApplication 14 | */ 15 | public class ProjectApplication extends ChannelApplication { 16 | 17 | @Override 18 | protected void attachBaseContext(Context context) { 19 | //必须先加载项目配置文件,找到项目的入口。 20 | InitManager.getInstance().initApplication(this,context,true); 21 | super.attachBaseContext(context); 22 | } 23 | 24 | @Override 25 | public void onCreate() { 26 | super.onCreate(); 27 | } 28 | 29 | 30 | } 31 | -------------------------------------------------------------------------------- /GameSDK_BeginProject/GameSDK_Project_JuHe/src/test/java/com/bzai/gamesdk/project/juhe/ExampleUnitTest.java: -------------------------------------------------------------------------------- 1 | package com.bzai.gamesdk.project.juhe; 2 | 3 | import org.junit.Test; 4 | 5 | import static org.junit.Assert.*; 6 | 7 | /** 8 | * Example local unit test, which will execute on the development machine (host). 9 | * 10 | * @see Testing documentation 11 | */ 12 | public class ExampleUnitTest { 13 | @Test 14 | public void addition_isCorrect() throws Exception { 15 | assertEquals(4, 2 + 2); 16 | } 17 | } -------------------------------------------------------------------------------- /GameSDK_Channel/GameSDK_Channel_Lexiang/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /GameSDK_Channel/GameSDK_Channel_Lexiang/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.library' 2 | 3 | android { 4 | compileSdkVersion 26 5 | buildToolsVersion "27.0.3" 6 | defaultConfig { 7 | minSdkVersion 14 8 | targetSdkVersion 26 9 | 10 | testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 11 | 12 | } 13 | 14 | buildTypes { 15 | release { 16 | minifyEnabled false 17 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 18 | } 19 | } 20 | 21 | } 22 | 23 | dependencies { 24 | compile fileTree(include: ['*.jar'], dir: 'libs') 25 | compile project(':GameSDK_Utils') 26 | 27 | } 28 | -------------------------------------------------------------------------------- /GameSDK_Channel/GameSDK_Channel_Lexiang/libs/HeepayPlugin_v3.0.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bzaigege/GameSDKFrameDemo/31e812349bfd3d0341c5f4a9b174b05ccd3f47d3/GameSDK_Channel/GameSDK_Channel_Lexiang/libs/HeepayPlugin_v3.0.jar -------------------------------------------------------------------------------- /GameSDK_Channel/GameSDK_Channel_Lexiang/libs/eventbus-3.0.0.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bzaigege/GameSDKFrameDemo/31e812349bfd3d0341c5f4a9b174b05ccd3f47d3/GameSDK_Channel/GameSDK_Channel_Lexiang/libs/eventbus-3.0.0.jar -------------------------------------------------------------------------------- /GameSDK_Channel/GameSDK_Channel_Lexiang/libs/youxunsdk.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bzaigege/GameSDKFrameDemo/31e812349bfd3d0341c5f4a9b174b05ccd3f47d3/GameSDK_Channel/GameSDK_Channel_Lexiang/libs/youxunsdk.jar -------------------------------------------------------------------------------- /GameSDK_Channel/GameSDK_Channel_Lexiang/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile 22 | -------------------------------------------------------------------------------- /GameSDK_Channel/GameSDK_Channel_Lexiang/src/androidTest/java/com/bzai/gamesdk/channel/test/ExampleInstrumentedTest.java: -------------------------------------------------------------------------------- 1 | package com.bzai.gamesdk.channel.test; 2 | 3 | import android.content.Context; 4 | import android.support.test.InstrumentationRegistry; 5 | import android.support.test.runner.AndroidJUnit4; 6 | 7 | import org.junit.Test; 8 | import org.junit.runner.RunWith; 9 | 10 | import static org.junit.Assert.*; 11 | 12 | /** 13 | * Instrumented test, which will execute on an Android device. 14 | * 15 | * @see Testing documentation 16 | */ 17 | @RunWith(AndroidJUnit4.class) 18 | public class ExampleInstrumentedTest { 19 | @Test 20 | public void useAppContext() throws Exception { 21 | // Context of the app under test. 22 | Context appContext = InstrumentationRegistry.getTargetContext(); 23 | 24 | assertEquals("com.bzai.gamesdk.channel.test.test", appContext.getPackageName()); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /GameSDK_Channel/GameSDK_Channel_Lexiang/src/main/assets/Channel_config.txt: -------------------------------------------------------------------------------- 1 | { 2 | "channel": [ 3 | { 4 | "channel_name": "channel", 5 | "class_name": "com.bzai.gamesdk.channel.lexiang.LexiangSDK", 6 | "description": "乐享渠道SDK", 7 | "version": "1.0.0" 8 | } 9 | ] 10 | } -------------------------------------------------------------------------------- /GameSDK_Channel/GameSDK_Channel_Lexiang/src/main/assets/splash/splash_screen.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bzaigege/GameSDKFrameDemo/31e812349bfd3d0341c5f4a9b174b05ccd3f47d3/GameSDK_Channel/GameSDK_Channel_Lexiang/src/main/assets/splash/splash_screen.jpg -------------------------------------------------------------------------------- /GameSDK_Channel/GameSDK_Channel_Lexiang/src/main/java/com/bzai/gamesdk/channel/application/ChannelApplication.java: -------------------------------------------------------------------------------- 1 | package com.bzai.gamesdk.channel.application; 2 | 3 | import android.app.Application; 4 | import android.content.Context; 5 | 6 | /** 7 | * Created by bzai on 2018/4/11. 8 | *

9 | * Desc: 10 | * 11 | * 预留用于继承渠道的Application 12 | */ 13 | 14 | public class ChannelApplication extends Application { 15 | 16 | @Override 17 | protected void attachBaseContext(Context base) { 18 | super.attachBaseContext(base); 19 | } 20 | 21 | @Override 22 | public void onCreate() { 23 | super.onCreate(); 24 | } 25 | 26 | 27 | } 28 | -------------------------------------------------------------------------------- /GameSDK_Channel/GameSDK_Channel_Lexiang/src/main/res/drawable-hdpi/youxun_acchint_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bzaigege/GameSDKFrameDemo/31e812349bfd3d0341c5f4a9b174b05ccd3f47d3/GameSDK_Channel/GameSDK_Channel_Lexiang/src/main/res/drawable-hdpi/youxun_acchint_logo.png -------------------------------------------------------------------------------- /GameSDK_Channel/GameSDK_Channel_Lexiang/src/main/res/drawable-hdpi/youxun_alipay_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bzaigege/GameSDKFrameDemo/31e812349bfd3d0341c5f4a9b174b05ccd3f47d3/GameSDK_Channel/GameSDK_Channel_Lexiang/src/main/res/drawable-hdpi/youxun_alipay_logo.png -------------------------------------------------------------------------------- /GameSDK_Channel/GameSDK_Channel_Lexiang/src/main/res/drawable-hdpi/youxun_attent.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bzaigege/GameSDKFrameDemo/31e812349bfd3d0341c5f4a9b174b05ccd3f47d3/GameSDK_Channel/GameSDK_Channel_Lexiang/src/main/res/drawable-hdpi/youxun_attent.png -------------------------------------------------------------------------------- /GameSDK_Channel/GameSDK_Channel_Lexiang/src/main/res/drawable-hdpi/youxun_choose.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bzaigege/GameSDKFrameDemo/31e812349bfd3d0341c5f4a9b174b05ccd3f47d3/GameSDK_Channel/GameSDK_Channel_Lexiang/src/main/res/drawable-hdpi/youxun_choose.png -------------------------------------------------------------------------------- /GameSDK_Channel/GameSDK_Channel_Lexiang/src/main/res/drawable-hdpi/youxun_close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bzaigege/GameSDKFrameDemo/31e812349bfd3d0341c5f4a9b174b05ccd3f47d3/GameSDK_Channel/GameSDK_Channel_Lexiang/src/main/res/drawable-hdpi/youxun_close.png -------------------------------------------------------------------------------- /GameSDK_Channel/GameSDK_Channel_Lexiang/src/main/res/drawable-hdpi/youxun_code.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bzaigege/GameSDKFrameDemo/31e812349bfd3d0341c5f4a9b174b05ccd3f47d3/GameSDK_Channel/GameSDK_Channel_Lexiang/src/main/res/drawable-hdpi/youxun_code.jpg -------------------------------------------------------------------------------- /GameSDK_Channel/GameSDK_Channel_Lexiang/src/main/res/drawable-hdpi/youxun_deselect.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bzaigege/GameSDKFrameDemo/31e812349bfd3d0341c5f4a9b174b05ccd3f47d3/GameSDK_Channel/GameSDK_Channel_Lexiang/src/main/res/drawable-hdpi/youxun_deselect.png -------------------------------------------------------------------------------- /GameSDK_Channel/GameSDK_Channel_Lexiang/src/main/res/drawable-hdpi/youxun_float_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bzaigege/GameSDKFrameDemo/31e812349bfd3d0341c5f4a9b174b05ccd3f47d3/GameSDK_Channel/GameSDK_Channel_Lexiang/src/main/res/drawable-hdpi/youxun_float_icon.png -------------------------------------------------------------------------------- /GameSDK_Channel/GameSDK_Channel_Lexiang/src/main/res/drawable-hdpi/youxun_float_icon_gb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bzaigege/GameSDKFrameDemo/31e812349bfd3d0341c5f4a9b174b05ccd3f47d3/GameSDK_Channel/GameSDK_Channel_Lexiang/src/main/res/drawable-hdpi/youxun_float_icon_gb.png -------------------------------------------------------------------------------- /GameSDK_Channel/GameSDK_Channel_Lexiang/src/main/res/drawable-hdpi/youxun_float_left_arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bzaigege/GameSDKFrameDemo/31e812349bfd3d0341c5f4a9b174b05ccd3f47d3/GameSDK_Channel/GameSDK_Channel_Lexiang/src/main/res/drawable-hdpi/youxun_float_left_arrow.png -------------------------------------------------------------------------------- /GameSDK_Channel/GameSDK_Channel_Lexiang/src/main/res/drawable-hdpi/youxun_float_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bzaigege/GameSDKFrameDemo/31e812349bfd3d0341c5f4a9b174b05ccd3f47d3/GameSDK_Channel/GameSDK_Channel_Lexiang/src/main/res/drawable-hdpi/youxun_float_logo.png -------------------------------------------------------------------------------- /GameSDK_Channel/GameSDK_Channel_Lexiang/src/main/res/drawable-hdpi/youxun_gb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bzaigege/GameSDKFrameDemo/31e812349bfd3d0341c5f4a9b174b05ccd3f47d3/GameSDK_Channel/GameSDK_Channel_Lexiang/src/main/res/drawable-hdpi/youxun_gb.png -------------------------------------------------------------------------------- /GameSDK_Channel/GameSDK_Channel_Lexiang/src/main/res/drawable-hdpi/youxun_login_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bzaigege/GameSDKFrameDemo/31e812349bfd3d0341c5f4a9b174b05ccd3f47d3/GameSDK_Channel/GameSDK_Channel_Lexiang/src/main/res/drawable-hdpi/youxun_login_1.png -------------------------------------------------------------------------------- /GameSDK_Channel/GameSDK_Channel_Lexiang/src/main/res/drawable-hdpi/youxun_login_10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bzaigege/GameSDKFrameDemo/31e812349bfd3d0341c5f4a9b174b05ccd3f47d3/GameSDK_Channel/GameSDK_Channel_Lexiang/src/main/res/drawable-hdpi/youxun_login_10.png -------------------------------------------------------------------------------- /GameSDK_Channel/GameSDK_Channel_Lexiang/src/main/res/drawable-hdpi/youxun_login_11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bzaigege/GameSDKFrameDemo/31e812349bfd3d0341c5f4a9b174b05ccd3f47d3/GameSDK_Channel/GameSDK_Channel_Lexiang/src/main/res/drawable-hdpi/youxun_login_11.png -------------------------------------------------------------------------------- /GameSDK_Channel/GameSDK_Channel_Lexiang/src/main/res/drawable-hdpi/youxun_login_12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bzaigege/GameSDKFrameDemo/31e812349bfd3d0341c5f4a9b174b05ccd3f47d3/GameSDK_Channel/GameSDK_Channel_Lexiang/src/main/res/drawable-hdpi/youxun_login_12.png -------------------------------------------------------------------------------- /GameSDK_Channel/GameSDK_Channel_Lexiang/src/main/res/drawable-hdpi/youxun_login_13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bzaigege/GameSDKFrameDemo/31e812349bfd3d0341c5f4a9b174b05ccd3f47d3/GameSDK_Channel/GameSDK_Channel_Lexiang/src/main/res/drawable-hdpi/youxun_login_13.png -------------------------------------------------------------------------------- /GameSDK_Channel/GameSDK_Channel_Lexiang/src/main/res/drawable-hdpi/youxun_login_14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bzaigege/GameSDKFrameDemo/31e812349bfd3d0341c5f4a9b174b05ccd3f47d3/GameSDK_Channel/GameSDK_Channel_Lexiang/src/main/res/drawable-hdpi/youxun_login_14.png -------------------------------------------------------------------------------- /GameSDK_Channel/GameSDK_Channel_Lexiang/src/main/res/drawable-hdpi/youxun_login_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bzaigege/GameSDKFrameDemo/31e812349bfd3d0341c5f4a9b174b05ccd3f47d3/GameSDK_Channel/GameSDK_Channel_Lexiang/src/main/res/drawable-hdpi/youxun_login_2.png -------------------------------------------------------------------------------- /GameSDK_Channel/GameSDK_Channel_Lexiang/src/main/res/drawable-hdpi/youxun_login_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bzaigege/GameSDKFrameDemo/31e812349bfd3d0341c5f4a9b174b05ccd3f47d3/GameSDK_Channel/GameSDK_Channel_Lexiang/src/main/res/drawable-hdpi/youxun_login_3.png -------------------------------------------------------------------------------- /GameSDK_Channel/GameSDK_Channel_Lexiang/src/main/res/drawable-hdpi/youxun_login_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bzaigege/GameSDKFrameDemo/31e812349bfd3d0341c5f4a9b174b05ccd3f47d3/GameSDK_Channel/GameSDK_Channel_Lexiang/src/main/res/drawable-hdpi/youxun_login_4.png -------------------------------------------------------------------------------- /GameSDK_Channel/GameSDK_Channel_Lexiang/src/main/res/drawable-hdpi/youxun_login_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bzaigege/GameSDKFrameDemo/31e812349bfd3d0341c5f4a9b174b05ccd3f47d3/GameSDK_Channel/GameSDK_Channel_Lexiang/src/main/res/drawable-hdpi/youxun_login_5.png -------------------------------------------------------------------------------- /GameSDK_Channel/GameSDK_Channel_Lexiang/src/main/res/drawable-hdpi/youxun_login_6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bzaigege/GameSDKFrameDemo/31e812349bfd3d0341c5f4a9b174b05ccd3f47d3/GameSDK_Channel/GameSDK_Channel_Lexiang/src/main/res/drawable-hdpi/youxun_login_6.png -------------------------------------------------------------------------------- /GameSDK_Channel/GameSDK_Channel_Lexiang/src/main/res/drawable-hdpi/youxun_login_7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bzaigege/GameSDKFrameDemo/31e812349bfd3d0341c5f4a9b174b05ccd3f47d3/GameSDK_Channel/GameSDK_Channel_Lexiang/src/main/res/drawable-hdpi/youxun_login_7.png -------------------------------------------------------------------------------- /GameSDK_Channel/GameSDK_Channel_Lexiang/src/main/res/drawable-hdpi/youxun_login_8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bzaigege/GameSDKFrameDemo/31e812349bfd3d0341c5f4a9b174b05ccd3f47d3/GameSDK_Channel/GameSDK_Channel_Lexiang/src/main/res/drawable-hdpi/youxun_login_8.png -------------------------------------------------------------------------------- /GameSDK_Channel/GameSDK_Channel_Lexiang/src/main/res/drawable-hdpi/youxun_login_9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bzaigege/GameSDKFrameDemo/31e812349bfd3d0341c5f4a9b174b05ccd3f47d3/GameSDK_Channel/GameSDK_Channel_Lexiang/src/main/res/drawable-hdpi/youxun_login_9.png -------------------------------------------------------------------------------- /GameSDK_Channel/GameSDK_Channel_Lexiang/src/main/res/drawable-hdpi/youxun_notice.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bzaigege/GameSDKFrameDemo/31e812349bfd3d0341c5f4a9b174b05ccd3f47d3/GameSDK_Channel/GameSDK_Channel_Lexiang/src/main/res/drawable-hdpi/youxun_notice.png -------------------------------------------------------------------------------- /GameSDK_Channel/GameSDK_Channel_Lexiang/src/main/res/drawable-hdpi/youxun_pay_btn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bzaigege/GameSDKFrameDemo/31e812349bfd3d0341c5f4a9b174b05ccd3f47d3/GameSDK_Channel/GameSDK_Channel_Lexiang/src/main/res/drawable-hdpi/youxun_pay_btn.png -------------------------------------------------------------------------------- /GameSDK_Channel/GameSDK_Channel_Lexiang/src/main/res/drawable-hdpi/youxun_pay_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bzaigege/GameSDKFrameDemo/31e812349bfd3d0341c5f4a9b174b05ccd3f47d3/GameSDK_Channel/GameSDK_Channel_Lexiang/src/main/res/drawable-hdpi/youxun_pay_logo.png -------------------------------------------------------------------------------- /GameSDK_Channel/GameSDK_Channel_Lexiang/src/main/res/drawable-hdpi/youxun_service.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bzaigege/GameSDKFrameDemo/31e812349bfd3d0341c5f4a9b174b05ccd3f47d3/GameSDK_Channel/GameSDK_Channel_Lexiang/src/main/res/drawable-hdpi/youxun_service.jpg -------------------------------------------------------------------------------- /GameSDK_Channel/GameSDK_Channel_Lexiang/src/main/res/drawable-hdpi/youxun_service_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bzaigege/GameSDKFrameDemo/31e812349bfd3d0341c5f4a9b174b05ccd3f47d3/GameSDK_Channel/GameSDK_Channel_Lexiang/src/main/res/drawable-hdpi/youxun_service_icon.png -------------------------------------------------------------------------------- /GameSDK_Channel/GameSDK_Channel_Lexiang/src/main/res/drawable-hdpi/youxun_share.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bzaigege/GameSDKFrameDemo/31e812349bfd3d0341c5f4a9b174b05ccd3f47d3/GameSDK_Channel/GameSDK_Channel_Lexiang/src/main/res/drawable-hdpi/youxun_share.png -------------------------------------------------------------------------------- /GameSDK_Channel/GameSDK_Channel_Lexiang/src/main/res/drawable-hdpi/youxun_switch_account.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bzaigege/GameSDKFrameDemo/31e812349bfd3d0341c5f4a9b174b05ccd3f47d3/GameSDK_Channel/GameSDK_Channel_Lexiang/src/main/res/drawable-hdpi/youxun_switch_account.png -------------------------------------------------------------------------------- /GameSDK_Channel/GameSDK_Channel_Lexiang/src/main/res/drawable-hdpi/youxun_wechat_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bzaigege/GameSDKFrameDemo/31e812349bfd3d0341c5f4a9b174b05ccd3f47d3/GameSDK_Channel/GameSDK_Channel_Lexiang/src/main/res/drawable-hdpi/youxun_wechat_logo.png -------------------------------------------------------------------------------- /GameSDK_Channel/GameSDK_Channel_Lexiang/src/main/res/drawable-hdpi/youxun_yxpay.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bzaigege/GameSDKFrameDemo/31e812349bfd3d0341c5f4a9b174b05ccd3f47d3/GameSDK_Channel/GameSDK_Channel_Lexiang/src/main/res/drawable-hdpi/youxun_yxpay.png -------------------------------------------------------------------------------- /GameSDK_Channel/GameSDK_Channel_Lexiang/src/main/res/drawable/youxun_border_stroke.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /GameSDK_Channel/GameSDK_Channel_Lexiang/src/main/res/drawable/youxun_cir_hint_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /GameSDK_Channel/GameSDK_Channel_Lexiang/src/main/res/drawable/youxun_cir_rect.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /GameSDK_Channel/GameSDK_Channel_Lexiang/src/main/res/drawable/youxun_drawable_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /GameSDK_Channel/GameSDK_Channel_Lexiang/src/main/res/drawable/youxun_drawable_2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /GameSDK_Channel/GameSDK_Channel_Lexiang/src/main/res/drawable/youxun_drawable_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /GameSDK_Channel/GameSDK_Channel_Lexiang/src/main/res/drawable/youxun_drawable_33.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /GameSDK_Channel/GameSDK_Channel_Lexiang/src/main/res/drawable/youxun_drawable_4.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /GameSDK_Channel/GameSDK_Channel_Lexiang/src/main/res/drawable/youxun_drawable_44.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /GameSDK_Channel/GameSDK_Channel_Lexiang/src/main/res/drawable/youxun_drawable_5.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /GameSDK_Channel/GameSDK_Channel_Lexiang/src/main/res/drawable/youxun_drawable_6.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /GameSDK_Channel/GameSDK_Channel_Lexiang/src/main/res/drawable/youxun_service_rect.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /GameSDK_Channel/GameSDK_Channel_Lexiang/src/main/res/layout/youxun_account.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /GameSDK_Channel/GameSDK_Channel_Lexiang/src/main/res/layout/youxun_account_hint.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 17 | 18 | 23 | 24 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /GameSDK_Channel/GameSDK_Channel_Lexiang/src/main/res/layout/youxun_floating.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 13 | 14 | -------------------------------------------------------------------------------- /GameSDK_Channel/GameSDK_Channel_Lexiang/src/main/res/layout/youxun_gift_bag.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 13 | 14 | 17 | 18 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 39 | 40 | 47 | 48 | 49 | -------------------------------------------------------------------------------- /GameSDK_Channel/GameSDK_Channel_Lexiang/src/main/res/layout/youxun_login.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /GameSDK_Channel/GameSDK_Channel_Lexiang/src/main/res/layout/youxun_login_option_item.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 10 | 11 | 17 | 18 | 28 | 29 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /GameSDK_Channel/GameSDK_Channel_Lexiang/src/main/res/layout/youxun_login_popup.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 13 | 14 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /GameSDK_Channel/GameSDK_Channel_Lexiang/src/main/res/layout/youxun_menu_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 14 | 15 | 23 | 24 | 37 | 38 | 41 | 42 | 47 | 48 | 49 | 50 | -------------------------------------------------------------------------------- /GameSDK_Channel/GameSDK_Channel_Lexiang/src/main/res/layout/youxun_mobile.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /GameSDK_Channel/GameSDK_Channel_Lexiang/src/main/res/layout/youxun_notice.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 14 | 15 | 19 | 20 | 24 | 25 | 31 | 32 | 33 | 34 |