Commit b2aec417b368162233a9462394df7eccc215a9a3

Authored by kingzh
0 parents
Exists in master

initialize

Showing 34 changed files with 993 additions and 0 deletions Inline Diff

File was created 1 *.iml
2 .gradle
3 /local.properties
4 .idea
5 .DS_Store
6 /build
7 /captures
8 .externalNativeBuild
9 .cxx
10
File was created 1 # UnionSDK for Android接入文档
2
3
4 V6.0.4
5 2020年03月27日
6
7
8 ## 版本概述
9
10 此版本为使用AndroidStudio开发的版本,使用aar的方式提供sdk接入包,并使用gradle在线依赖方式,aar内别并不包含依赖包,请按此文档描述接入.
11
12 此SDK适用android api>=16 的系统,编译器jdk8+.
13
14
15 ## 1.依赖导入
16 配置gradle,以下为必须项
17
18 repositories{
19 maven{
20 url "http://117.50.8.198:8081/nexus/content/repositories/sdk"
21 }
22 }
23
24 dependencies {
25 implementation 'com.gt.union.sdk:GameSDK:6.0.4'
26
27 }
28
29
30 ## 2.向Gump平台索要游戏ID(AppID),完成代码接入
31
32 * ActionCallback为通用的异步回调接口,所有的异步方法都是用此接口做回调.
33 此接口只有一个回调方法`onCallback(String event, Object... payload)`
34 其中参数event为当前回调的事件类型,用于区别不同的方法回调;payload为不同的回调负载,包含回调时需要传输的数据
35
36
37
38 #### 1.获取SDKAgent对象,并执行初始化配置。
39
40
41 SDKAgent.object(Activity,appId).channel(channelId);
42
43
44 #### 2.调用SDKAgent的登录方法,将执行登录流程,需要一个Activity实例作参数和一个ActionCallback对象做登录结果接收
45
46 sdkAgent.login(Activity,ActionCallback);
47
48
49 payload[0]为Boolean类型表示登录结果,成功登录后收到payload[1]为SessionKey对象,可以获取以下信息
50
51 sessionKey.getUid();//获取用户的userid,此Id标识唯一用户!
52 sessionKey.getToken();//当前session的token
53 sessionKey.getExpires();//sessionKey的过期时间,类型Date
54
55 #### 3.支付功能
56
57 支付分为google play 官方Iab支付和三方支付,情况有两种:1)根据云端配置调用不同的支付方法 2)自行构建逻辑调用不同的支付方法
58
59 * 获取云端配置
60
61 `sdkAgent.judgePayment(Activity, serverId, roleId, ActionCallback);`
62
63 payload[0]为boolean类型,true时应使用三方支付,false应使用iab支付
64
65 * 调用Google Play Iab支付
66
67 ```
68 OrderForm order = new OrderForm()
69 .setServerId(serverId)//游戏服id
70 .setRoleId(roleId)//角色id
71 .setExtraInfo("orderId")//订单号
72 .setAmount(0.99f)//金额
73 .setCurrency("USD")//货币
74 .setProduct("gro.udc.mig.99");//商品id
75
76 sdk.launchIap(MainActivity.this, order,ActionCallback);
77 ```
78
79 payload[0]为boolean类型,标明支付是否完成;payload[1]为错误描述
80
81
82 * 三方支付
83
84 ```
85 OrderForm order = new OrderForm()
86 .setServerId(serverId)//游戏服id
87 .setRoleId(roleId)//角色id
88 .setExtraInfo("orderId")//订单号
89 .setAmount(0.99f)//金额
90 .setCurrency("USD")//货币
91 .setProduct("gro.udc.mig.99");//商品id
92
93 sdkAgent.goRecharge(MainActivity.this, order, ActionCallback);
94 ```
95 payload[0]为boolean类型,true支付完成,false支付异常
96
97 #### 4.注销登录
98
99 sdkAgent.logout(ActionCallback);
100 当此方法调用后,用户退出登录,为了便于用户切换登录账户,请在游戏内提供用户注销的触发按钮
101
102
File was created 1 /build
2
File was created 1 apply plugin: 'com.android.application'
2
3
4 repositories {
5 maven {
6 url "http://117.50.8.198:8081/nexus/content/repositories/sdk"
7 }
8 jcenter()
9 google()
10 }
11
12 android {
13 compileSdkVersion 28
14 buildToolsVersion "29.0.3"
15
16 defaultConfig {
17 applicationId "gro.udc.mig"
18 minSdkVersion 16
19 targetSdkVersion 28
20 versionCode 37
21 versionName "1.1"
22
23 testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
24 }
25
26 buildTypes {
27 release {
28 minifyEnabled false
29 proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
30 }
31 }
32 compileOptions {
33 sourceCompatibility = 1.8
34 targetCompatibility = 1.8
35 }
36
37 }
38
39 dependencies {
40 implementation fileTree(dir: 'libs', include: ['*.jar'])
41
42 implementation 'androidx.appcompat:appcompat:1.1.0'
43 implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
44 testImplementation 'junit:junit:4.12'
45 androidTestImplementation 'androidx.test.ext:junit:1.1.1'
46 androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
47
48 // implementation project(':sdk')
49 implementation 'com.gt.union.sdk:GameSDK:6.0.4'
50 }
51
app/proguard-rules.pro
File was created 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
app/src/androidTest/java/com/gt/union/sdk/demo/ExampleInstrumentedTest.java
File was created 1 package com.gt.union.sdk.demo;
2
3 import android.content.Context;
4
5 import androidx.test.platform.app.InstrumentationRegistry;
6 import androidx.test.ext.junit.runners.AndroidJUnit4;
7
8 import org.junit.Test;
9 import org.junit.runner.RunWith;
10
11 import static org.junit.Assert.*;
12
13 /**
14 * Instrumented test, which will execute on an Android device.
15 *
16 * @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
17 */
18 @RunWith(AndroidJUnit4.class)
19 public class ExampleInstrumentedTest {
20 @Test
21 public void useAppContext() {
22 // Context of the app under test.
23 Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
24
25 assertEquals("com.gt.union.sdk.demo", appContext.getPackageName());
26 }
27 }
28
app/src/main/AndroidManifest.xml
File was created 1 <?xml version="1.0" encoding="utf-8"?>
2 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
3 package="com.gt.union.sdk.demo">
4
5 <application
6 android:allowBackup="true"
7 android:icon="@mipmap/ic_launcher"
8 android:label="@string/app_name"
9 android:roundIcon="@mipmap/ic_launcher_round"
10 android:supportsRtl="true"
11 android:theme="@style/AppTheme">
12 <activity android:name=".MainActivity">
13 <intent-filter>
14 <action android:name="android.intent.action.MAIN" />
15
16 <category android:name="android.intent.category.LAUNCHER" />
17 </intent-filter>
18 </activity>
19 </application>
20
21 </manifest>
app/src/main/java/com/gt/union/sdk/demo/MainActivity.java
File was created 1 package com.gt.union.sdk.demo;
2
3 import androidx.annotation.Nullable;
4 import androidx.appcompat.app.AppCompatActivity;
5
6 import android.content.Intent;
7 import android.os.Bundle;
8 import android.view.View;
9 import android.widget.Button;
10 import android.widget.LinearLayout;
11 import android.widget.TextView;
12 import android.widget.Toast;
13
14 import com.gt.union.sdk.SDKAgent;
15 import com.gt.union.sdk.callback.ActionCallback;
16 import com.gt.union.sdk.login.SessionKey;
17 import com.gt.union.sdk.recharge.OrderForm;
18
19 public class MainActivity extends AppCompatActivity {
20
21 private String appId = "10105";
22 private String channelId = "1067";
23 private String serverId = "222";
24 private String roleId = "222006003";
25
26 private SDKAgent sdkAgent;
27
28 private TextView tvInfo;
29 private LinearLayout sessionLayout;
30
31 private Button btnLogin;
32
33 private Button btnLogout;
34 private Button btnPay;
35 private Button btnIab;
36 private Button btnAutoJudge;
37
38 @Override
39 protected void onCreate(Bundle savedInstanceState) {
40 super.onCreate(savedInstanceState);
41 setContentView(R.layout.activity_main);
42
43 tvInfo = findViewById(R.id.info);
44 sessionLayout = findViewById(R.id.sessionLayout);
45
46 btnLogin = findViewById(R.id.login);
47 btnLogout = findViewById(R.id.logout);
48 btnPay = findViewById(R.id.pay);
49 btnIab = findViewById(R.id.iab);
50 btnAutoJudge = findViewById(R.id.auto_judge_pay);
51
52 btnLogin.setOnClickListener(new View.OnClickListener() {
53 @Override
54 public void onClick(View v) {
55 sdkAgent.login(MainActivity.this, new ActionCallback() {
56 @Override
57 public void onCallback(String event, Object... payload) {
58 if(event.equals(ActionCallback.ACTION_LOGIN)) {
59 boolean result = (boolean) payload[0];
60 if(result) {
61 SessionKey sessionKey = (SessionKey) payload[1];
62 tvInfo.setText(sessionKey.getUid());
63 sessionLayout.setVisibility(View.VISIBLE);
64 btnLogin.setVisibility(View.GONE);
65 }else{
66 Toast.makeText(MainActivity.this,"登录取消",Toast.LENGTH_SHORT).show();
67 }
68 }
69 }
70 });
71 }
72 });
73 btnLogout.setOnClickListener(new View.OnClickListener() {
74 @Override
75 public void onClick(View v) {
76 sdkAgent.logout(new ActionCallback() {
77 @Override
78 public void onCallback(String event, Object... payload) {
79 if(event.equals(ActionCallback.ACTION_LOGOUT)) {
80 sessionLayout.setVisibility(View.GONE);
81 btnLogin.setVisibility(View.VISIBLE);
82 }
83 }
84 });
85 }
86 });
87
88 btnPay.setOnClickListener(new View.OnClickListener() {
89 @Override
90 public void onClick(View v) {
91 OrderForm order = new OrderForm();
92 order.setServerId(serverId).setRoleId(roleId).setExtraInfo("orderId").setAmount(0.99f).setCurrency("USD").setProduct("gro.udc.mig.99");
93
94 sdkAgent.goRecharge(MainActivity.this, order, new ActionCallback() {
95 @Override
96 public void onCallback(String event, Object... payload) {
97 if(event.equals(ActionCallback.ACTION_PAY)) {
98 boolean result = (boolean) payload[0];
99 String res = result ? "支付成功" : "支付失败";
100 Toast.makeText(MainActivity.this, res, Toast.LENGTH_SHORT).show();
101 }
102 }
103 });
104 }
105 });
106
107 btnIab.setOnClickListener(new View.OnClickListener() {
108 @Override
109 public void onClick(View v) {
110 OrderForm order = new OrderForm();
111 order.setServerId(serverId).setRoleId(roleId).setExtraInfo("orderId").setAmount(0.99f).setCurrency("USD").setProduct("gro.udc.mig.99");
112 sdkAgent.launchIap(MainActivity.this, order, new ActionCallback() {
113 @Override
114 public void onCallback(String event, Object... payload) {
115 if(event.equals(ActionCallback.ACTION_PAY)) {
116 boolean result = (boolean) payload[0];
117 String des = (String) payload[1];
118 String res = result ? "Iab支付完成" : "Iab支付失败:"+des;
119 Toast.makeText(MainActivity.this, res, Toast.LENGTH_SHORT).show();
120 }
121 }
122 });
123 }
124 });
125
126 btnAutoJudge.setOnClickListener(new View.OnClickListener() {
127 @Override
128 public void onClick(View v) {
129 sdkAgent.judgePayment(MainActivity.this, serverId, roleId, new ActionCallback() {
130 @Override
131 public void onCallback(String event, Object... payload) {
132 if(event.equals(ActionCallback.ACTION_JUDGE)) {
133 boolean result = (boolean) payload[0];
134 if (result)
135 btnPay.performClick();
136 else
137 btnIab.performClick();
138 }
139 }
140 });
141 }
142 });
143
144
145 sdkAgent = SDKAgent.object(this, appId).channel(channelId);
146
147
148 }
149
150 @Override
151 protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
152 if (!sdkAgent.onActivityResult(requestCode, resultCode, data))
153 super.onActivityResult(requestCode, resultCode, data);
154 }
155 }
156
app/src/main/res/drawable-v24/ic_launcher_foreground.xml
File was created 1 <vector xmlns:android="http://schemas.android.com/apk/res/android"
2 xmlns:aapt="http://schemas.android.com/aapt"
3 android:width="108dp"
4 android:height="108dp"
5 android:viewportWidth="108"
6 android:viewportHeight="108">
7 <path android:pathData="M31,63.928c0,0 6.4,-11 12.1,-13.1c7.2,-2.6 26,-1.4 26,-1.4l38.1,38.1L107,108.928l-32,-1L31,63.928z">
8 <aapt:attr name="android:fillColor">
9 <gradient
10 android:endX="85.84757"
11 android:endY="92.4963"
12 android:startX="42.9492"
13 android:startY="49.59793"
14 android:type="linear">
15 <item
16 android:color="#44000000"
17 android:offset="0.0" />
18 <item
19 android:color="#00000000"
20 android:offset="1.0" />
21 </gradient>
22 </aapt:attr>
23 </path>
24 <path
25 android:fillColor="#FFFFFF"
26 android:fillType="nonZero"
27 android:pathData="M65.3,45.828l3.8,-6.6c0.2,-0.4 0.1,-0.9 -0.3,-1.1c-0.4,-0.2 -0.9,-0.1 -1.1,0.3l-3.9,6.7c-6.3,-2.8 -13.4,-2.8 -19.7,0l-3.9,-6.7c-0.2,-0.4 -0.7,-0.5 -1.1,-0.3C38.8,38.328 38.7,38.828 38.9,39.228l3.8,6.6C36.2,49.428 31.7,56.028 31,63.928h46C76.3,56.028 71.8,49.428 65.3,45.828zM43.4,57.328c-0.8,0 -1.5,-0.5 -1.8,-1.2c-0.3,-0.7 -0.1,-1.5 0.4,-2.1c0.5,-0.5 1.4,-0.7 2.1,-0.4c0.7,0.3 1.2,1 1.2,1.8C45.3,56.528 44.5,57.328 43.4,57.328L43.4,57.328zM64.6,57.328c-0.8,0 -1.5,-0.5 -1.8,-1.2s-0.1,-1.5 0.4,-2.1c0.5,-0.5 1.4,-0.7 2.1,-0.4c0.7,0.3 1.2,1 1.2,1.8C66.5,56.528 65.6,57.328 64.6,57.328L64.6,57.328z"
28 android:strokeWidth="1"
29 android:strokeColor="#00000000" />
30 </vector>
app/src/main/res/drawable/ic_launcher_background.xml
File was created 1 <?xml version="1.0" encoding="utf-8"?>
2 <vector xmlns:android="http://schemas.android.com/apk/res/android"
3 android:width="108dp"
4 android:height="108dp"
5 android:viewportWidth="108"
6 android:viewportHeight="108">
7 <path
8 android:fillColor="#3DDC84"
9 android:pathData="M0,0h108v108h-108z" />
10 <path
11 android:fillColor="#00000000"
12 android:pathData="M9,0L9,108"
13 android:strokeWidth="0.8"
14 android:strokeColor="#33FFFFFF" />
15 <path
16 android:fillColor="#00000000"
17 android:pathData="M19,0L19,108"
18 android:strokeWidth="0.8"
19 android:strokeColor="#33FFFFFF" />
20 <path
21 android:fillColor="#00000000"
22 android:pathData="M29,0L29,108"
23 android:strokeWidth="0.8"
24 android:strokeColor="#33FFFFFF" />
25 <path
26 android:fillColor="#00000000"
27 android:pathData="M39,0L39,108"
28 android:strokeWidth="0.8"
29 android:strokeColor="#33FFFFFF" />
30 <path
31 android:fillColor="#00000000"
32 android:pathData="M49,0L49,108"
33 android:strokeWidth="0.8"
34 android:strokeColor="#33FFFFFF" />
35 <path
36 android:fillColor="#00000000"
37 android:pathData="M59,0L59,108"
38 android:strokeWidth="0.8"
39 android:strokeColor="#33FFFFFF" />
40 <path
41 android:fillColor="#00000000"
42 android:pathData="M69,0L69,108"
43 android:strokeWidth="0.8"
44 android:strokeColor="#33FFFFFF" />
45 <path
46 android:fillColor="#00000000"
47 android:pathData="M79,0L79,108"
48 android:strokeWidth="0.8"
49 android:strokeColor="#33FFFFFF" />
50 <path
51 android:fillColor="#00000000"
52 android:pathData="M89,0L89,108"
53 android:strokeWidth="0.8"
54 android:strokeColor="#33FFFFFF" />
55 <path
56 android:fillColor="#00000000"
57 android:pathData="M99,0L99,108"
58 android:strokeWidth="0.8"
59 android:strokeColor="#33FFFFFF" />
60 <path
61 android:fillColor="#00000000"
62 android:pathData="M0,9L108,9"
63 android:strokeWidth="0.8"
64 android:strokeColor="#33FFFFFF" />
65 <path
66 android:fillColor="#00000000"
67 android:pathData="M0,19L108,19"
68 android:strokeWidth="0.8"
69 android:strokeColor="#33FFFFFF" />
70 <path
71 android:fillColor="#00000000"
72 android:pathData="M0,29L108,29"
73 android:strokeWidth="0.8"
74 android:strokeColor="#33FFFFFF" />
75 <path
76 android:fillColor="#00000000"
77 android:pathData="M0,39L108,39"
78 android:strokeWidth="0.8"
79 android:strokeColor="#33FFFFFF" />
80 <path
81 android:fillColor="#00000000"
82 android:pathData="M0,49L108,49"
83 android:strokeWidth="0.8"
84 android:strokeColor="#33FFFFFF" />
85 <path
86 android:fillColor="#00000000"
87 android:pathData="M0,59L108,59"
88 android:strokeWidth="0.8"
89 android:strokeColor="#33FFFFFF" />
90 <path
91 android:fillColor="#00000000"
92 android:pathData="M0,69L108,69"
93 android:strokeWidth="0.8"
94 android:strokeColor="#33FFFFFF" />
95 <path
96 android:fillColor="#00000000"
97 android:pathData="M0,79L108,79"
98 android:strokeWidth="0.8"
99 android:strokeColor="#33FFFFFF" />
100 <path
101 android:fillColor="#00000000"
102 android:pathData="M0,89L108,89"
103 android:strokeWidth="0.8"
104 android:strokeColor="#33FFFFFF" />
105 <path
106 android:fillColor="#00000000"
107 android:pathData="M0,99L108,99"
108 android:strokeWidth="0.8"
109 android:strokeColor="#33FFFFFF" />
110 <path
111 android:fillColor="#00000000"
112 android:pathData="M19,29L89,29"
113 android:strokeWidth="0.8"
114 android:strokeColor="#33FFFFFF" />
115 <path
116 android:fillColor="#00000000"
117 android:pathData="M19,39L89,39"
118 android:strokeWidth="0.8"
119 android:strokeColor="#33FFFFFF" />
120 <path
121 android:fillColor="#00000000"
122 android:pathData="M19,49L89,49"
123 android:strokeWidth="0.8"
124 android:strokeColor="#33FFFFFF" />
125 <path
126 android:fillColor="#00000000"
127 android:pathData="M19,59L89,59"
128 android:strokeWidth="0.8"
129 android:strokeColor="#33FFFFFF" />
130 <path
131 android:fillColor="#00000000"
132 android:pathData="M19,69L89,69"
133 android:strokeWidth="0.8"
134 android:strokeColor="#33FFFFFF" />
135 <path
136 android:fillColor="#00000000"
137 android:pathData="M19,79L89,79"
138 android:strokeWidth="0.8"
139 android:strokeColor="#33FFFFFF" />
140 <path
141 android:fillColor="#00000000"
142 android:pathData="M29,19L29,89"
143 android:strokeWidth="0.8"
144 android:strokeColor="#33FFFFFF" />
145 <path
146 android:fillColor="#00000000"
147 android:pathData="M39,19L39,89"
148 android:strokeWidth="0.8"
149 android:strokeColor="#33FFFFFF" />
150 <path
151 android:fillColor="#00000000"
152 android:pathData="M49,19L49,89"
153 android:strokeWidth="0.8"
154 android:strokeColor="#33FFFFFF" />
155 <path
156 android:fillColor="#00000000"
157 android:pathData="M59,19L59,89"
158 android:strokeWidth="0.8"
159 android:strokeColor="#33FFFFFF" />
160 <path
161 android:fillColor="#00000000"
162 android:pathData="M69,19L69,89"
163 android:strokeWidth="0.8"
164 android:strokeColor="#33FFFFFF" />
165 <path
166 android:fillColor="#00000000"
167 android:pathData="M79,19L79,89"
168 android:strokeWidth="0.8"
169 android:strokeColor="#33FFFFFF" />
170 </vector>
171
app/src/main/res/layout/activity_main.xml
File was created 1 <?xml version="1.0" encoding="utf-8"?>
2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3 xmlns:app="http://schemas.android.com/apk/res-auto"
4 xmlns:tools="http://schemas.android.com/tools"
5 android:layout_width="match_parent"
6 android:layout_height="match_parent"
7 android:orientation="vertical"
8 tools:context=".MainActivity">
9
10 <TextView
11 android:id="@+id/info"
12 android:layout_width="wrap_content"
13 android:layout_height="wrap_content"
14 />
15
16 <Button
17 android:id="@+id/login"
18 android:layout_width="match_parent"
19 android:layout_height="wrap_content"
20 android:text="登录"/>
21 <LinearLayout
22 android:id="@+id/sessionLayout"
23 android:layout_width="match_parent"
24 android:layout_height="wrap_content"
25 android:orientation="vertical"
26 android:visibility="gone">
27 <Button
28 android:id="@+id/logout"
29 android:layout_width="match_parent"
30 android:layout_height="wrap_content"
31 android:text="注销"/>
32 <Button
33 android:id="@+id/pay"
34 android:layout_width="match_parent"
35 android:layout_height="wrap_content"
36 android:text="三方支付"/>
37 <Button
38 android:id="@+id/iab"
39 android:layout_width="match_parent"
40 android:layout_height="wrap_content"
41 android:text="官方支付"/>
42 <Button
43 android:id="@+id/auto_judge_pay"
44 android:layout_width="match_parent"
45 android:layout_height="wrap_content"
46 android:text="先获取支付方式再支付"/>
47 </LinearLayout>
48 </LinearLayout>
app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
File was created 1 <?xml version="1.0" encoding="utf-8"?>
2 <adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
3 <background android:drawable="@drawable/ic_launcher_background" />
4 <foreground android:drawable="@drawable/ic_launcher_foreground" />
5 </adaptive-icon>
app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
File was created 1 <?xml version="1.0" encoding="utf-8"?>
2 <adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
3 <background android:drawable="@drawable/ic_launcher_background" />
4 <foreground android:drawable="@drawable/ic_launcher_foreground" />
5 </adaptive-icon>
app/src/main/res/mipmap-hdpi/ic_launcher.png

3.51 KB

app/src/main/res/mipmap-hdpi/ic_launcher_round.png

5.21 KB

app/src/main/res/mipmap-mdpi/ic_launcher.png

2.57 KB

app/src/main/res/mipmap-mdpi/ic_launcher_round.png

3.31 KB

app/src/main/res/mipmap-xhdpi/ic_launcher.png

4.81 KB

app/src/main/res/mipmap-xhdpi/ic_launcher_round.png

7.3 KB

app/src/main/res/mipmap-xxhdpi/ic_launcher.png

7.72 KB

app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png

11.6 KB

app/src/main/res/mipmap-xxxhdpi/ic_launcher.png

10.4 KB

app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png

16.2 KB

app/src/main/res/values/colors.xml
File was created 1 <?xml version="1.0" encoding="utf-8"?>
2 <resources>
3 <color name="colorPrimary">#6200EE</color>
4 <color name="colorPrimaryDark">#3700B3</color>
5 <color name="colorAccent">#03DAC5</color>
6 </resources>
7
app/src/main/res/values/strings.xml
File was created 1 <resources>
2 <string name="app_name">UnionSDKDemo</string>
3 </resources>
4
app/src/main/res/values/styles.xml
File was created 1 <resources>
2
3 <!-- Base application theme. -->
4 <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
5 <!-- Customize your theme here. -->
6 <item name="colorPrimary">@color/colorPrimary</item>
7 <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
8 <item name="colorAccent">@color/colorAccent</item>
9 </style>
10
11 </resources>
12
app/src/test/java/com/gt/union/sdk/demo/ExampleUnitTest.java
File was created 1 package com.gt.union.sdk.demo;
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 <a href="http://d.android.com/tools/testing">Testing documentation</a>
11 */
12 public class ExampleUnitTest {
13 @Test
14 public void addition_isCorrect() {
15 assertEquals(4, 2 + 2);
16 }
17 }
File was created 1 // Top-level build file where you can add configuration options common to all sub-projects/modules.
2
3 buildscript {
4
5 repositories {
6 google()
7 jcenter()
8
9 }
10 dependencies {
11 classpath 'com.android.tools.build:gradle:3.6.0'
12
13
14 // NOTE: Do not place your application dependencies here; they belong
15 // in the individual module build.gradle files
16 }
17 }
18
19 allprojects {
20 repositories {
21 google()
22 jcenter()
23
24 }
25 }
26
27 task clean(type: Delete) {
28 delete rootProject.buildDir
29 }
30
File was created 1 # Project-wide Gradle settings.
2 # IDE (e.g. Android Studio) users:
3 # Gradle settings configured through the IDE *will override*
4 # any settings specified in this file.
5 # For more details on how to configure your build environment visit
6 # http://www.gradle.org/docs/current/userguide/build_environment.html
7 # Specifies the JVM arguments used for the daemon process.
8 # The setting is particularly useful for tweaking memory settings.
9 org.gradle.jvmargs=-Xmx1536m
10 # When configured, Gradle will run in incubating parallel mode.
11 # This option should only be used with decoupled projects. More details, visit
12 # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
13 # org.gradle.parallel=true
14 # AndroidX package structure to make it clearer which packages are bundled with the
15 # Android operating system, and which are packaged with your app's APK
16 # https://developer.android.com/topic/libraries/support-library/androidx-rn
17 android.useAndroidX=true
18 # Automatically convert third-party libraries to use AndroidX
19 android.enableJetifier=true
20
21
gradle/wrapper/gradle-wrapper.jar
No preview for this file type
gradle/wrapper/gradle-wrapper.properties
File was created 1 #Sat Mar 21 09:30:16 CST 2020
2 distributionBase=GRADLE_USER_HOME
3 distributionPath=wrapper/dists
4 zipStoreBase=GRADLE_USER_HOME
5 zipStorePath=wrapper/dists
6 distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.4-all.zip
7
File was created 1 #!/usr/bin/env sh
2
3 ##############################################################################
4 ##
5 ## Gradle start up script for UN*X
6 ##
7 ##############################################################################
8
9 # Attempt to set APP_HOME
10 # Resolve links: $0 may be a link
11 PRG="$0"
12 # Need this for relative symlinks.
13 while [ -h "$PRG" ] ; do
14 ls=`ls -ld "$PRG"`
15 link=`expr "$ls" : '.*-> \(.*\)$'`
16 if expr "$link" : '/.*' > /dev/null; then
17 PRG="$link"
18 else
19 PRG=`dirname "$PRG"`"/$link"
20 fi
21 done
22 SAVED="`pwd`"
23 cd "`dirname \"$PRG\"`/" >/dev/null
24 APP_HOME="`pwd -P`"
25 cd "$SAVED" >/dev/null
26
27 APP_NAME="Gradle"
28 APP_BASE_NAME=`basename "$0"`
29
30 # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
31 DEFAULT_JVM_OPTS=""
32
33 # Use the maximum available, or set MAX_FD != -1 to use that value.
34 MAX_FD="maximum"
35
36 warn () {
37 echo "$*"
38 }
39
40 die () {
41 echo
42 echo "$*"
43 echo
44 exit 1
45 }
46
47 # OS specific support (must be 'true' or 'false').
48 cygwin=false
49 msys=false
50 darwin=false
51 nonstop=false
52 case "`uname`" in
53 CYGWIN* )
54 cygwin=true
55 ;;
56 Darwin* )
57 darwin=true
58 ;;
59 MINGW* )
60 msys=true
61 ;;
62 NONSTOP* )
63 nonstop=true
64 ;;
65 esac
66
67 CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
68
69 # Determine the Java command to use to start the JVM.
70 if [ -n "$JAVA_HOME" ] ; then
71 if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
72 # IBM's JDK on AIX uses strange locations for the executables
73 JAVACMD="$JAVA_HOME/jre/sh/java"
74 else
75 JAVACMD="$JAVA_HOME/bin/java"
76 fi
77 if [ ! -x "$JAVACMD" ] ; then
78 die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
79
80 Please set the JAVA_HOME variable in your environment to match the
81 location of your Java installation."
82 fi
83 else
84 JAVACMD="java"
85 which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
86
87 Please set the JAVA_HOME variable in your environment to match the
88 location of your Java installation."
89 fi
90
91 # Increase the maximum file descriptors if we can.
92 if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
93 MAX_FD_LIMIT=`ulimit -H -n`
94 if [ $? -eq 0 ] ; then
95 if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
96 MAX_FD="$MAX_FD_LIMIT"
97 fi
98 ulimit -n $MAX_FD
99 if [ $? -ne 0 ] ; then
100 warn "Could not set maximum file descriptor limit: $MAX_FD"
101 fi
102 else
103 warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
104 fi
105 fi
106
107 # For Darwin, add options to specify how the application appears in the dock
108 if $darwin; then
109 GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
110 fi
111
112 # For Cygwin, switch paths to Windows format before running java
113 if $cygwin ; then
114 APP_HOME=`cygpath --path --mixed "$APP_HOME"`
115 CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
116 JAVACMD=`cygpath --unix "$JAVACMD"`
117
118 # We build the pattern for arguments to be converted via cygpath
119 ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
120 SEP=""
121 for dir in $ROOTDIRSRAW ; do
122 ROOTDIRS="$ROOTDIRS$SEP$dir"
123 SEP="|"
124 done
125 OURCYGPATTERN="(^($ROOTDIRS))"
126 # Add a user-defined pattern to the cygpath arguments
127 if [ "$GRADLE_CYGPATTERN" != "" ] ; then
128 OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
129 fi
130 # Now convert the arguments - kludge to limit ourselves to /bin/sh
131 i=0
132 for arg in "$@" ; do
133 CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
134 CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
135
136 if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
137 eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
138 else
139 eval `echo args$i`="\"$arg\""
140 fi
141 i=$((i+1))
142 done
143 case $i in
144 (0) set -- ;;
145 (1) set -- "$args0" ;;
146 (2) set -- "$args0" "$args1" ;;
147 (3) set -- "$args0" "$args1" "$args2" ;;
148 (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
149 (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
150 (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
151 (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
152 (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
153 (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
154 esac
155 fi
156
157 # Escape application args
158 save () {
159 for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
160 echo " "
161 }
162 APP_ARGS=$(save "$@")
163
164 # Collect all arguments for the java command, following the shell quoting and substitution rules
165 eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
166
167 # by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
168 if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
169 cd "$(dirname "$0")"
170 fi
171
172 exec "$JAVACMD" "$@"
173
File was created 1 @if "%DEBUG%" == "" @echo off
2 @rem ##########################################################################
3 @rem
4 @rem Gradle startup script for Windows
5 @rem
6 @rem ##########################################################################
7
8 @rem Set local scope for the variables with windows NT shell
9 if "%OS%"=="Windows_NT" setlocal
10
11 set DIRNAME=%~dp0
12 if "%DIRNAME%" == "" set DIRNAME=.
13 set APP_BASE_NAME=%~n0
14 set APP_HOME=%DIRNAME%
15
16 @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
17 set DEFAULT_JVM_OPTS=
18
19 @rem Find java.exe
20 if defined JAVA_HOME goto findJavaFromJavaHome
21
22 set JAVA_EXE=java.exe
23 %JAVA_EXE% -version >NUL 2>&1
24 if "%ERRORLEVEL%" == "0" goto init
25
26 echo.
27 echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
28 echo.
29 echo Please set the JAVA_HOME variable in your environment to match the
30 echo location of your Java installation.
31
32 goto fail
33
34 :findJavaFromJavaHome
35 set JAVA_HOME=%JAVA_HOME:"=%
36 set JAVA_EXE=%JAVA_HOME%/bin/java.exe
37
38 if exist "%JAVA_EXE%" goto init
39
40 echo.
41 echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
42 echo.
43 echo Please set the JAVA_HOME variable in your environment to match the
44 echo location of your Java installation.
45
46 goto fail
47
48 :init
49 @rem Get command-line arguments, handling Windows variants
50
51 if not "%OS%" == "Windows_NT" goto win9xME_args
52
53 :win9xME_args
54 @rem Slurp the command line arguments.
55 set CMD_LINE_ARGS=
56 set _SKIP=2
57
58 :win9xME_args_slurp
59 if "x%~1" == "x" goto execute
60
61 set CMD_LINE_ARGS=%*
62
63 :execute
64 @rem Setup the command line
65
66 set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
67
68 @rem Execute Gradle
69 "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
70
71 :end
72 @rem End local scope for the variables with windows NT shell
73 if "%ERRORLEVEL%"=="0" goto mainEnd
74
75 :fail
76 rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
77 rem the _cmd.exe /c_ return code!
78 if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
79 exit /b 1
80
81 :mainEnd
82 if "%OS%"=="Windows_NT" endlocal
83
84 :omega
85
File was created 1 rootProject.name='UnionSDKDemo'
2 include ':app'
3