Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
Z
zw_game_sdk
概览
概览
详情
活动
周期分析
版本库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
CI / CD
CI / CD
流水线
日程表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
提交
问题看板
Open sidebar
zwwl
zw_game_sdk
Commits
8d8acf2f
提交
8d8acf2f
authored
5月 15, 2026
作者:
钱宇
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
add:聚合SDK的Demo添加java版。
上级
3e8b7c28
隐藏空白字符变更
内嵌
并排
正在显示
41 个修改的文件
包含
1216 行增加
和
90 行删除
+1216
-90
.gitignore
聚合SDK/aggregation-android-sdk-java-demo/.gitignore
+16
-0
.gitignore
聚合SDK/aggregation-android-sdk-java-demo/app/.gitignore
+3
-0
build.gradle
聚合SDK/aggregation-android-sdk-java-demo/app/build.gradle
+45
-0
proguard-rules.pro
.../aggregation-android-sdk-java-demo/app/proguard-rules.pro
+23
-0
ExampleInstrumentedTest.java
...m/example/gamecenterjavademo/ExampleInstrumentedTest.java
+28
-0
AndroidManifest.xml
...on-android-sdk-java-demo/app/src/main/AndroidManifest.xml
+39
-0
MainActivity.java
...ain/java/com/example/gamecenterjavademo/MainActivity.java
+114
-90
MyApplication.java
...in/java/com/example/gamecenterjavademo/MyApplication.java
+13
-0
bg_status_frame.xml
...-demo/app/src/main/res/drawable-night/bg_status_frame.xml
+10
-0
bg_status_frame.xml
...k-java-demo/app/src/main/res/drawable/bg_status_frame.xml
+10
-0
ic_launcher_background.xml
...demo/app/src/main/res/drawable/ic_launcher_background.xml
+171
-0
ic_launcher_foreground.xml
...demo/app/src/main/res/drawable/ic_launcher_foreground.xml
+32
-0
activity_main.xml
...d-sdk-java-demo/app/src/main/res/layout/activity_main.xml
+92
-0
ic_launcher.xml
...-java-demo/app/src/main/res/mipmap-anydpi/ic_launcher.xml
+8
-0
ic_launcher_round.xml
...demo/app/src/main/res/mipmap-anydpi/ic_launcher_round.xml
+8
-0
ic_launcher.webp
...k-java-demo/app/src/main/res/mipmap-hdpi/ic_launcher.webp
+0
-0
ic_launcher_round.webp
...-demo/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp
+0
-0
ic_launcher.webp
...k-java-demo/app/src/main/res/mipmap-mdpi/ic_launcher.webp
+0
-0
ic_launcher_round.webp
...-demo/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp
+0
-0
ic_launcher.webp
...-java-demo/app/src/main/res/mipmap-xhdpi/ic_launcher.webp
+0
-0
ic_launcher_round.webp
...demo/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp
+0
-0
ic_launcher.webp
...java-demo/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp
+0
-0
ic_launcher_round.webp
...emo/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp
+0
-0
ic_launcher.webp
...ava-demo/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp
+0
-0
ic_launcher_round.webp
...mo/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp
+0
-0
themes.xml
...id-sdk-java-demo/app/src/main/res/values-night/themes.xml
+18
-0
colors.xml
...-android-sdk-java-demo/app/src/main/res/values/colors.xml
+12
-0
strings.xml
...android-sdk-java-demo/app/src/main/res/values/strings.xml
+30
-0
themes.xml
...-android-sdk-java-demo/app/src/main/res/values/themes.xml
+18
-0
backup_rules.xml
...droid-sdk-java-demo/app/src/main/res/xml/backup_rules.xml
+15
-0
data_extraction_rules.xml
...-java-demo/app/src/main/res/xml/data_extraction_rules.xml
+21
-0
ExampleUnitTest.java
.../java/com/example/gamecenterjavademo/ExampleUnitTest.java
+19
-0
build.gradle
聚合SDK/aggregation-android-sdk-java-demo/build.gradle
+21
-0
gradle.properties
聚合SDK/aggregation-android-sdk-java-demo/gradle.properties
+15
-0
gradle-daemon-jvm.properties
...android-sdk-java-demo/gradle/gradle-daemon-jvm.properties
+13
-0
libs.versions.toml
...gregation-android-sdk-java-demo/gradle/libs.versions.toml
+19
-0
gradle-wrapper.jar
...n-android-sdk-java-demo/gradle/wrapper/gradle-wrapper.jar
+0
-0
gradle-wrapper.properties
...id-sdk-java-demo/gradle/wrapper/gradle-wrapper.properties
+10
-0
gradlew
聚合SDK/aggregation-android-sdk-java-demo/gradlew
+252
-0
gradlew.bat
聚合SDK/aggregation-android-sdk-java-demo/gradlew.bat
+95
-0
settings.gradle
聚合SDK/aggregation-android-sdk-java-demo/settings.gradle
+46
-0
没有找到文件。
聚合SDK/aggregation-android-sdk-java-demo/.gitignore
0 → 100644
浏览文件 @
8d8acf2f
*.iml
*.iml
.gradle
/local.properties
/.idea/caches
/.idea/libraries
/.idea/modules.xml
/.idea/workspace.xml
/.idea/navEditor.xml
/.idea/assetWizardSettings.xml
.DS_Store
/build
/captures
.externalNativeBuild
.cxx
local.properties
聚合SDK/aggregation-android-sdk-java-demo/app/.gitignore
0 → 100644
浏览文件 @
8d8acf2f
/build
/build
\ No newline at end of file
聚合SDK/aggregation-android-sdk-java-demo/app/build.gradle
0 → 100644
浏览文件 @
8d8acf2f
plugins
{
plugins
{
alias
(
libs
.
plugins
.
android
.
application
)
}
android
{
namespace
'com.example.gamecenterjavademo'
compileSdk
{
version
=
release
(
36
)
{
minorApiLevel
=
1
}
}
defaultConfig
{
applicationId
"com.example.gamecenterjavademo"
minSdk
24
targetSdk
36
versionCode
1
versionName
"1.0"
testInstrumentationRunner
"androidx.test.runner.AndroidJUnitRunner"
}
buildTypes
{
release
{
minifyEnabled
false
proguardFiles
getDefaultProguardFile
(
'proguard-android-optimize.txt'
),
'proguard-rules.pro'
}
}
compileOptions
{
sourceCompatibility
JavaVersion
.
VERSION_11
targetCompatibility
JavaVersion
.
VERSION_11
}
}
dependencies
{
implementation
libs
.
appcompat
implementation
libs
.
material
testImplementation
libs
.
junit
androidTestImplementation
libs
.
espresso
.
core
androidTestImplementation
libs
.
ext
.
junit
implementation
(
"com.zw.game.center:gameCenter:1.0.0.4"
)
}
\ No newline at end of file
聚合SDK/aggregation-android-sdk-java-demo/app/proguard-rules.pro
0 → 100644
浏览文件 @
8d8acf2f
# Add project specific ProGuard rules here.
# Add project specific ProGuard rules here.
# You can control the set of applied configuration files using the
# proguardFiles setting in build.gradle.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html
# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
# public *;
#}
# Uncomment this to preserve the line number information for
# debugging stack traces.
#-keepattributes SourceFile,LineNumberTable
# If you keep the line number information, uncomment this to
# hide the original source file name.
#-renamesourcefileattribute SourceFile
\ No newline at end of file
聚合SDK/aggregation-android-sdk-java-demo/app/src/androidTest/java/com/example/gamecenterjavademo/ExampleInstrumentedTest.java
0 → 100644
浏览文件 @
8d8acf2f
package
com
.
example
.
gamecenterjavademo
;
package
com
.
example
.
gamecenterjavademo
;
import
android.content.Context
;
import
androidx.test.platform.app.InstrumentationRegistry
;
import
androidx.test.ext.junit.runners.AndroidJUnit4
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
import
static
org
.
junit
.
Assert
.*;
/**
* Instrumented test, which will execute on an Android device.
*
* @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
*/
@RunWith
(
AndroidJUnit4
.
class
)
public
class
ExampleInstrumentedTest
{
@Test
public
void
useAppContext
()
{
// Context of the app under test.
Context
appContext
=
InstrumentationRegistry
.
getInstrumentation
().
getTargetContext
();
assertEquals
(
"com.example.gamecenterjavademo"
,
appContext
.
getPackageName
());
}
}
\ No newline at end of file
聚合SDK/aggregation-android-sdk-java-demo/app/src/main/AndroidManifest.xml
0 → 100644
浏览文件 @
8d8acf2f
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:tools=
"http://schemas.android.com/tools"
>
<application
android:name=
".MyApplication"
android:allowBackup=
"true"
android:dataExtractionRules=
"@xml/data_extraction_rules"
android:fullBackupContent=
"@xml/backup_rules"
android:icon=
"@mipmap/ic_launcher"
android:label=
"@string/app_name"
android:roundIcon=
"@mipmap/ic_launcher_round"
android:supportsRtl=
"true"
android:theme=
"@style/Theme.GameCenterJavaDemo"
>
<activity
android:name=
".MainActivity"
android:exported=
"true"
>
<intent-filter>
<action
android:name=
"android.intent.action.MAIN"
/>
<category
android:name=
"android.intent.category.LAUNCHER"
/>
</intent-filter>
</activity>
<meta-data
android:name=
"zyou_app_secret"
android:value=
"HRNszxlFy6P2nguO6jhOjAQ7vErXcqXb1_y5E4jEKMiasi7eFBCBkjo1m-r7o1b8H-UxHgrLU8JvYBwyUfXuGw=="
/>
<!-- 微信回调Activity别名(必须严格匹配包名.wxapi.WXEntryActivity) -->
<activity-alias
android:name=
"${applicationId}.wxapi.WXEntryActivity"
android:exported=
"true"
android:launchMode=
"singleTop"
android:taskAffinity=
"${applicationId}"
android:targetActivity=
"com.zwwl.sdk.core.wxapi.WXEntryActivity"
/>
</application>
</manifest>
\ No newline at end of file
聚合SDK/aggregation-android-sdk-
demo/app/src/main/java/com/zwgame/test/gamecenterdemo/MainJava
Activity.java
→
聚合SDK/aggregation-android-sdk-
java-demo/app/src/main/java/com/example/gamecenterjavademo/Main
Activity.java
浏览文件 @
8d8acf2f
package
com
.
zwgame
.
test
.
gamecenterdemo
;
package
com
.
example
.
gamecenterjavademo
;
package
com
.
zwgame
.
test
.
gamecenterdemo
;
package
com
.
example
.
gamecenterjavademo
;
import
android.content.res.AssetManager
;
import
android.content.res.Resources
;
import
android.os.Bundle
;
import
android.util.Log
;
import
android.widget.TextView
;
...
...
@@ -13,14 +11,12 @@ import androidx.core.view.WindowCompat;
import
com.zwwl.sdk.core.ZySdk
;
import
com.zwwl.sdk.core.constant.Constant
;
import
org.jetbrains.annotations.NotNull
;
import
org.json.JSONObject
;
import
kotlin.Unit
;
import
kotlin.jvm.functions.Function1
;
public
class
MainActivity
extends
AppCompatActivity
{
public
class
MainJavaActivity
extends
AppCompatActivity
{
private
static
final
String
TAG
=
"MainJavaActivity"
;
private
static
final
String
TAG
=
"gamecenter_demo"
;
private
TextView
statusText
;
private
boolean
busy
=
false
;
...
...
@@ -58,25 +54,29 @@ public class MainJavaActivity extends AppCompatActivity {
private
void
onInitClick
()
{
guardBusy
(()
->
{
statusText
.
setText
(
R
.
string
.
status_init_clicked
);
ZySdk
.
INSTANCE
.
sdkInit
(
this
,
false
,
(
Function1
<
String
,
Unit
>)
result
->
{
releaseBusy
();
if
(
isFinishing
())
return
Unit
.
INSTANCE
;
Log
.
i
(
TAG
,
"sdkInit result="
+
result
);
statusText
.
setText
(
result
);
ZySdk
.
INSTANCE
.
sdkInit
(
this
,
false
,
new
ZySdkCallback
()
{
@Override
public
void
onResult
(
@NotNull
String
result
)
{
releaseBusy
();
if
(
isFinishing
())
return
;
Log
.
i
(
TAG
,
"sdkInit result="
+
result
);
statusText
.
setText
(
result
);
try
{
JSONObject
obj
=
new
JSONObject
(
result
);
boolean
success
=
obj
.
optBoolean
(
"success"
);
if
(
success
)
{
String
channelCode
=
obj
.
optString
(
"channelCode"
);
Log
.
i
(
TAG
,
"init 成功,当前渠道:"
+
channelCode
);
}
else
{
Log
.
w
(
TAG
,
"init 失败 errorMsg="
+
obj
.
optString
(
"errorMsg"
)
+
" errorCode="
+
obj
.
optInt
(
"errorCode"
));
try
{
JSONObject
obj
=
new
JSONObject
(
result
);
boolean
success
=
obj
.
optBoolean
(
"success"
);
if
(
success
)
{
String
channelCode
=
obj
.
optString
(
"channelCode"
);
Log
.
i
(
TAG
,
"init 成功,当前渠道:"
+
channelCode
);
}
else
{
Log
.
w
(
TAG
,
"init 失败 errorMsg="
+
obj
.
optString
(
"errorMsg"
)
+
" errorCode="
+
obj
.
optInt
(
"errorCode"
));
}
}
catch
(
Exception
e
)
{
Log
.
e
(
TAG
,
"parse init result error"
,
e
);
}
}
catch
(
Exception
e
)
{
Log
.
e
(
TAG
,
"parse init result error"
,
e
);
}
return
Unit
.
INSTANCE
;
});
});
}
...
...
@@ -84,22 +84,25 @@ public class MainJavaActivity extends AppCompatActivity {
private
void
onLoginClick
()
{
guardBusy
(()
->
{
statusText
.
setText
(
R
.
string
.
status_login_clicked
);
ZySdk
.
INSTANCE
.
sdkLogin
(
this
,
(
Function1
<
String
,
Unit
>)
result
->
{
releaseBusy
();
if
(
isFinishing
())
return
Unit
.
INSTANCE
;
Log
.
i
(
TAG
,
"sdkLogin result="
+
result
);
statusText
.
setText
(
result
);
ZySdk
.
INSTANCE
.
sdkLogin
(
this
,
new
ZySdkCallback
()
{
@Override
public
void
onResult
(
@NotNull
String
result
)
{
releaseBusy
();
if
(
isFinishing
())
return
;
Log
.
i
(
TAG
,
"sdkLogin result="
+
result
);
statusText
.
setText
(
result
);
try
{
JSONObject
obj
=
new
JSONObject
(
result
);
boolean
success
=
obj
.
optBoolean
(
"success"
);
if
(!
success
)
{
Log
.
w
(
TAG
,
"login 失败 errorMsg="
+
obj
.
optString
(
"errorMsg"
)
+
" errorCode="
+
obj
.
optInt
(
"errorCode"
));
try
{
JSONObject
obj
=
new
JSONObject
(
result
);
boolean
success
=
obj
.
optBoolean
(
"success"
);
if
(!
success
)
{
Log
.
w
(
TAG
,
"login 失败 errorMsg="
+
obj
.
optString
(
"errorMsg"
)
+
" errorCode="
+
obj
.
optInt
(
"errorCode"
));
}
}
catch
(
Exception
e
)
{
Log
.
e
(
TAG
,
"parse login result error"
,
e
);
}
}
catch
(
Exception
e
)
{
Log
.
e
(
TAG
,
"parse login result error"
,
e
);
}
return
Unit
.
INSTANCE
;
});
});
}
...
...
@@ -130,24 +133,27 @@ public class MainJavaActivity extends AppCompatActivity {
}
catch
(
Exception
e
)
{
Log
.
e
(
TAG
,
"build roleJson error"
,
e
);
}
ZySdk
.
INSTANCE
.
sdkReportRole
(
this
,
roleJson
.
toString
(),
(
Function1
<
String
,
Unit
>)
result
->
{
releaseBusy
();
if
(
isFinishing
())
return
Unit
.
INSTANCE
;
Log
.
i
(
TAG
,
"sdkReportRole result="
+
result
);
statusText
.
setText
(
result
);
ZySdk
.
INSTANCE
.
sdkReportRole
(
this
,
roleJson
.
toString
(),
new
ZySdkCallback
()
{
@Override
public
void
onResult
(
@NotNull
String
result
)
{
releaseBusy
();
if
(
isFinishing
())
return
;
Log
.
i
(
TAG
,
"sdkReportRole result="
+
result
);
statusText
.
setText
(
result
);
try
{
JSONObject
obj
=
new
JSONObject
(
result
);
boolean
success
=
obj
.
optBoolean
(
"success"
);
if
(
success
)
{
Log
.
i
(
TAG
,
"reportRole 成功"
);
}
else
{
Log
.
w
(
TAG
,
"reportRole 失败 errorMsg="
+
obj
.
optString
(
"errorMsg"
)
+
" errorCode="
+
obj
.
optInt
(
"errorCode"
));
try
{
JSONObject
obj
=
new
JSONObject
(
result
);
boolean
success
=
obj
.
optBoolean
(
"success"
);
if
(
success
)
{
Log
.
i
(
TAG
,
"reportRole 成功"
);
}
else
{
Log
.
w
(
TAG
,
"reportRole 失败 errorMsg="
+
obj
.
optString
(
"errorMsg"
)
+
" errorCode="
+
obj
.
optInt
(
"errorCode"
));
}
}
catch
(
Exception
e
)
{
Log
.
e
(
TAG
,
"parse reportRole result error"
,
e
);
}
}
catch
(
Exception
e
)
{
Log
.
e
(
TAG
,
"parse reportRole result error"
,
e
);
}
return
Unit
.
INSTANCE
;
});
});
}
...
...
@@ -155,10 +161,13 @@ public class MainJavaActivity extends AppCompatActivity {
private
void
onUpgradeClick
()
{
guardBusy
(()
->
{
statusText
.
setText
(
R
.
string
.
status_upgrade_clicked
);
ZySdk
.
INSTANCE
.
sdkUpdate
(
this
,
(
Function1
<
String
,
Unit
>)
result
->
{
releaseBusy
();
if
(
isFinishing
())
return
Unit
.
INSTANCE
;
return
Unit
.
INSTANCE
;
ZySdk
.
INSTANCE
.
sdkUpdate
(
this
,
new
ZySdkCallback
()
{
@Override
public
void
onResult
(
@NotNull
String
result
)
{
releaseBusy
();
if
(
isFinishing
())
return
;
}
});
});
}
...
...
@@ -196,58 +205,74 @@ public class MainJavaActivity extends AppCompatActivity {
}
catch
(
Exception
e
)
{
Log
.
e
(
TAG
,
"build payJson error"
,
e
);
}
ZySdk
.
INSTANCE
.
sdkPay
(
this
,
payJson
.
toString
(),
false
,
result
->
{
releaseBusy
();
if
(
isFinishing
())
return
Unit
.
INSTANCE
;
Log
.
i
(
TAG
,
"sdkPay result="
+
result
);
statusText
.
setText
(
result
);
ZySdk
.
INSTANCE
.
sdkPay
(
this
,
payJson
.
toString
(),
false
,
new
ZySdkCallback
()
{
@Override
public
void
onResult
(
@NotNull
String
result
)
{
releaseBusy
();
if
(
isFinishing
())
return
;
Log
.
i
(
TAG
,
"sdkPay result="
+
result
);
statusText
.
setText
(
result
);
try
{
JSONObject
obj
=
new
JSONObject
(
result
);
boolean
success
=
obj
.
optBoolean
(
"success"
);
if
(!
success
)
{
Log
.
w
(
TAG
,
"pay 失败 errorMsg="
+
obj
.
optString
(
"errorMsg"
)
+
" errorCode="
+
obj
.
optInt
(
"errorCode"
));
try
{
JSONObject
obj
=
new
JSONObject
(
result
);
boolean
success
=
obj
.
optBoolean
(
"success"
);
if
(!
success
)
{
Log
.
w
(
TAG
,
"pay 失败 errorMsg="
+
obj
.
optString
(
"errorMsg"
)
+
" errorCode="
+
obj
.
optInt
(
"errorCode"
));
}
}
catch
(
Exception
e
)
{
Log
.
e
(
TAG
,
"parse pay result error"
,
e
);
}
}
catch
(
Exception
e
)
{
Log
.
e
(
TAG
,
"parse pay result error"
,
e
);
}
return
Unit
.
INSTANCE
;
});
});
}
private
void
onShowFloatClick
()
{
statusText
.
setText
(
R
.
string
.
status_show_float_clicked
);
ZySdk
.
INSTANCE
.
sdkShowFloat
(
this
,
(
Function1
<
String
,
Unit
>)
result
->
Unit
.
INSTANCE
);
ZySdk
.
INSTANCE
.
sdkShowFloat
(
this
,
new
ZySdkCallback
()
{
@Override
public
void
onResult
(
@NotNull
String
result
)
{
}
});
}
private
void
onHideFloatClick
()
{
statusText
.
setText
(
R
.
string
.
status_hide_float_clicked
);
ZySdk
.
INSTANCE
.
sdkHideFloat
(
this
,
(
Function1
<
String
,
Unit
>)
result
->
Unit
.
INSTANCE
);
ZySdk
.
INSTANCE
.
sdkHideFloat
(
this
,
new
ZySdkCallback
()
{
@Override
public
void
onResult
(
@NotNull
String
result
)
{
}
});
}
private
void
onExitClick
()
{
guardBusy
(()
->
{
statusText
.
setText
(
R
.
string
.
status_exit_clicked
);
ZySdk
.
INSTANCE
.
sdkExit
(
this
,
(
Function1
<
String
,
Unit
>)
result
->
{
releaseBusy
();
if
(
isFinishing
())
return
Unit
.
INSTANCE
;
Log
.
i
(
TAG
,
"sdkExit result="
+
result
);
statusText
.
setText
(
result
);
ZySdk
.
INSTANCE
.
sdkExit
(
this
,
new
ZySdkCallback
()
{
@Override
public
void
onResult
(
@NotNull
String
result
)
{
releaseBusy
();
if
(
isFinishing
())
return
;
Log
.
i
(
TAG
,
"sdkExit result="
+
result
);
statusText
.
setText
(
result
);
try
{
JSONObject
obj
=
new
JSONObject
(
result
);
boolean
success
=
obj
.
optBoolean
(
"success"
);
if
(
success
)
{
Log
.
i
(
TAG
,
"用户在联运退出引导中确认退出"
);
save
();
}
else
{
Log
.
i
(
TAG
,
"退出取消或失败 errorMsg="
+
obj
.
optString
(
"errorMsg"
)
+
" errorCode="
+
obj
.
optInt
(
"errorCode"
));
try
{
JSONObject
obj
=
new
JSONObject
(
result
);
boolean
success
=
obj
.
optBoolean
(
"success"
);
if
(
success
)
{
Log
.
i
(
TAG
,
"用户在联运退出引导中确认退出"
);
save
();
}
else
{
Log
.
i
(
TAG
,
"退出取消或失败 errorMsg="
+
obj
.
optString
(
"errorMsg"
)
+
" errorCode="
+
obj
.
optInt
(
"errorCode"
));
}
}
catch
(
Exception
e
)
{
Log
.
e
(
TAG
,
"parse exit result error"
,
e
);
}
}
catch
(
Exception
e
)
{
Log
.
e
(
TAG
,
"parse exit result error"
,
e
);
}
return
Unit
.
INSTANCE
;
});
});
}
...
...
@@ -256,4 +281,4 @@ public class MainJavaActivity extends AppCompatActivity {
// 保存进度
}
}
\ No newline at end of file
}
聚合SDK/aggregation-android-sdk-java-demo/app/src/main/java/com/example/gamecenterjavademo/MyApplication.java
0 → 100644
浏览文件 @
8d8acf2f
package
com
.
example
.
gamecenterjavademo
;
package
com
.
example
.
gamecenterjavademo
;
import
android.app.Application
;
public
class
MyApplication
extends
Application
{
@Override
public
void
onCreate
()
{
super
.
onCreate
();
}
}
聚合SDK/aggregation-android-sdk-java-demo/app/src/main/res/drawable-night/bg_status_frame.xml
0 → 100644
浏览文件 @
8d8acf2f
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:shape=
"rectangle"
>
<solid
android:color=
"#14FFFFFF"
/>
<stroke
android:width=
"1dp"
android:color=
"#40FFFFFF"
/>
<corners
android:radius=
"8dp"
/>
</shape>
聚合SDK/aggregation-android-sdk-java-demo/app/src/main/res/drawable/bg_status_frame.xml
0 → 100644
浏览文件 @
8d8acf2f
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:shape=
"rectangle"
>
<solid
android:color=
"#0D000000"
/>
<stroke
android:width=
"1dp"
android:color=
"#40000000"
/>
<corners
android:radius=
"8dp"
/>
</shape>
聚合SDK/aggregation-android-sdk-java-demo/app/src/main/res/drawable/ic_launcher_background.xml
0 → 100644
浏览文件 @
8d8acf2f
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<vector
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:width=
"108dp"
android:height=
"108dp"
android:viewportWidth=
"108"
android:viewportHeight=
"108"
>
<path
android:fillColor=
"#3DDC84"
android:pathData=
"M0,0h108v108h-108z"
/>
<path
android:fillColor=
"#00000000"
android:pathData=
"M9,0L9,108"
android:strokeWidth=
"0.8"
android:strokeColor=
"#33FFFFFF"
/>
<path
android:fillColor=
"#00000000"
android:pathData=
"M19,0L19,108"
android:strokeWidth=
"0.8"
android:strokeColor=
"#33FFFFFF"
/>
<path
android:fillColor=
"#00000000"
android:pathData=
"M29,0L29,108"
android:strokeWidth=
"0.8"
android:strokeColor=
"#33FFFFFF"
/>
<path
android:fillColor=
"#00000000"
android:pathData=
"M39,0L39,108"
android:strokeWidth=
"0.8"
android:strokeColor=
"#33FFFFFF"
/>
<path
android:fillColor=
"#00000000"
android:pathData=
"M49,0L49,108"
android:strokeWidth=
"0.8"
android:strokeColor=
"#33FFFFFF"
/>
<path
android:fillColor=
"#00000000"
android:pathData=
"M59,0L59,108"
android:strokeWidth=
"0.8"
android:strokeColor=
"#33FFFFFF"
/>
<path
android:fillColor=
"#00000000"
android:pathData=
"M69,0L69,108"
android:strokeWidth=
"0.8"
android:strokeColor=
"#33FFFFFF"
/>
<path
android:fillColor=
"#00000000"
android:pathData=
"M79,0L79,108"
android:strokeWidth=
"0.8"
android:strokeColor=
"#33FFFFFF"
/>
<path
android:fillColor=
"#00000000"
android:pathData=
"M89,0L89,108"
android:strokeWidth=
"0.8"
android:strokeColor=
"#33FFFFFF"
/>
<path
android:fillColor=
"#00000000"
android:pathData=
"M99,0L99,108"
android:strokeWidth=
"0.8"
android:strokeColor=
"#33FFFFFF"
/>
<path
android:fillColor=
"#00000000"
android:pathData=
"M0,9L108,9"
android:strokeWidth=
"0.8"
android:strokeColor=
"#33FFFFFF"
/>
<path
android:fillColor=
"#00000000"
android:pathData=
"M0,19L108,19"
android:strokeWidth=
"0.8"
android:strokeColor=
"#33FFFFFF"
/>
<path
android:fillColor=
"#00000000"
android:pathData=
"M0,29L108,29"
android:strokeWidth=
"0.8"
android:strokeColor=
"#33FFFFFF"
/>
<path
android:fillColor=
"#00000000"
android:pathData=
"M0,39L108,39"
android:strokeWidth=
"0.8"
android:strokeColor=
"#33FFFFFF"
/>
<path
android:fillColor=
"#00000000"
android:pathData=
"M0,49L108,49"
android:strokeWidth=
"0.8"
android:strokeColor=
"#33FFFFFF"
/>
<path
android:fillColor=
"#00000000"
android:pathData=
"M0,59L108,59"
android:strokeWidth=
"0.8"
android:strokeColor=
"#33FFFFFF"
/>
<path
android:fillColor=
"#00000000"
android:pathData=
"M0,69L108,69"
android:strokeWidth=
"0.8"
android:strokeColor=
"#33FFFFFF"
/>
<path
android:fillColor=
"#00000000"
android:pathData=
"M0,79L108,79"
android:strokeWidth=
"0.8"
android:strokeColor=
"#33FFFFFF"
/>
<path
android:fillColor=
"#00000000"
android:pathData=
"M0,89L108,89"
android:strokeWidth=
"0.8"
android:strokeColor=
"#33FFFFFF"
/>
<path
android:fillColor=
"#00000000"
android:pathData=
"M0,99L108,99"
android:strokeWidth=
"0.8"
android:strokeColor=
"#33FFFFFF"
/>
<path
android:fillColor=
"#00000000"
android:pathData=
"M19,29L89,29"
android:strokeWidth=
"0.8"
android:strokeColor=
"#33FFFFFF"
/>
<path
android:fillColor=
"#00000000"
android:pathData=
"M19,39L89,39"
android:strokeWidth=
"0.8"
android:strokeColor=
"#33FFFFFF"
/>
<path
android:fillColor=
"#00000000"
android:pathData=
"M19,49L89,49"
android:strokeWidth=
"0.8"
android:strokeColor=
"#33FFFFFF"
/>
<path
android:fillColor=
"#00000000"
android:pathData=
"M19,59L89,59"
android:strokeWidth=
"0.8"
android:strokeColor=
"#33FFFFFF"
/>
<path
android:fillColor=
"#00000000"
android:pathData=
"M19,69L89,69"
android:strokeWidth=
"0.8"
android:strokeColor=
"#33FFFFFF"
/>
<path
android:fillColor=
"#00000000"
android:pathData=
"M19,79L89,79"
android:strokeWidth=
"0.8"
android:strokeColor=
"#33FFFFFF"
/>
<path
android:fillColor=
"#00000000"
android:pathData=
"M29,19L29,89"
android:strokeWidth=
"0.8"
android:strokeColor=
"#33FFFFFF"
/>
<path
android:fillColor=
"#00000000"
android:pathData=
"M39,19L39,89"
android:strokeWidth=
"0.8"
android:strokeColor=
"#33FFFFFF"
/>
<path
android:fillColor=
"#00000000"
android:pathData=
"M49,19L49,89"
android:strokeWidth=
"0.8"
android:strokeColor=
"#33FFFFFF"
/>
<path
android:fillColor=
"#00000000"
android:pathData=
"M59,19L59,89"
android:strokeWidth=
"0.8"
android:strokeColor=
"#33FFFFFF"
/>
<path
android:fillColor=
"#00000000"
android:pathData=
"M69,19L69,89"
android:strokeWidth=
"0.8"
android:strokeColor=
"#33FFFFFF"
/>
<path
android:fillColor=
"#00000000"
android:pathData=
"M79,19L79,89"
android:strokeWidth=
"0.8"
android:strokeColor=
"#33FFFFFF"
/>
</vector>
聚合SDK/aggregation-android-sdk-java-demo/app/src/main/res/drawable/ic_launcher_foreground.xml
0 → 100644
浏览文件 @
8d8acf2f
<vector
xmlns:android=
"http://schemas.android.com/apk/res/android"
<vector
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:aapt=
"http://schemas.android.com/aapt"
android:width=
"108dp"
android:height=
"108dp"
android:viewportWidth=
"108"
android:viewportHeight=
"108"
>
<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"
>
<aapt:attr
name=
"android:fillColor"
>
<gradient
android:endX=
"85.84757"
android:endY=
"92.4963"
android:startX=
"42.9492"
android:startY=
"49.59793"
android:type=
"linear"
>
<item
android:color=
"#44000000"
android:offset=
"0.0"
/>
<item
android:color=
"#00000000"
android:offset=
"1.0"
/>
</gradient>
</aapt:attr>
</path>
<path
android:fillColor=
"#FFFFFF"
android:fillType=
"nonZero"
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"
android:strokeWidth=
"1"
android:strokeColor=
"#00000000"
/>
</vector>
\ No newline at end of file
聚合SDK/aggregation-android-sdk-java-demo/app/src/main/res/layout/activity_main.xml
0 → 100644
浏览文件 @
8d8acf2f
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<ScrollView
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:fillViewport=
"true"
>
<LinearLayout
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:orientation=
"vertical"
android:padding=
"16dp"
android:fitsSystemWindows=
"true"
>
<TextView
android:id=
"@+id/text_status"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginBottom=
"16dp"
android:background=
"@drawable/bg_status_frame"
android:gravity=
"top|start"
android:minHeight=
"100dp"
android:padding=
"12dp"
android:text=
"@string/status_idle"
android:textAppearance=
"?attr/textAppearanceBody1"
/>
<com.google.android.material.button.MaterialButton
android:id=
"@+id/btn_init"
style=
"@style/Widget.MaterialComponents.Button.OutlinedButton"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginBottom=
"8dp"
android:text=
"@string/btn_init"
/>
<com.google.android.material.button.MaterialButton
android:id=
"@+id/btn_login"
style=
"@style/Widget.MaterialComponents.Button.OutlinedButton"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginBottom=
"8dp"
android:text=
"@string/btn_login"
/>
<com.google.android.material.button.MaterialButton
android:id=
"@+id/btn_report_user"
style=
"@style/Widget.MaterialComponents.Button.OutlinedButton"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginBottom=
"8dp"
android:text=
"@string/btn_report_user"
/>
<com.google.android.material.button.MaterialButton
android:id=
"@+id/btn_upgrade"
style=
"@style/Widget.MaterialComponents.Button.OutlinedButton"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginBottom=
"8dp"
android:text=
"@string/btn_upgrade"
/>
<com.google.android.material.button.MaterialButton
android:id=
"@+id/btn_pay"
style=
"@style/Widget.MaterialComponents.Button.OutlinedButton"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginBottom=
"8dp"
android:text=
"@string/btn_pay"
/>
<com.google.android.material.button.MaterialButton
android:id=
"@+id/btn_show_float"
style=
"@style/Widget.MaterialComponents.Button.OutlinedButton"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginBottom=
"8dp"
android:text=
"@string/btn_show_float"
/>
<com.google.android.material.button.MaterialButton
android:id=
"@+id/btn_hide_float"
style=
"@style/Widget.MaterialComponents.Button.OutlinedButton"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginBottom=
"8dp"
android:text=
"@string/btn_hide_float"
/>
<com.google.android.material.button.MaterialButton
android:id=
"@+id/btn_exit"
style=
"@style/Widget.MaterialComponents.Button.OutlinedButton"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginBottom=
"8dp"
android:text=
"@string/btn_exit"
/>
</LinearLayout>
</ScrollView>
聚合SDK/aggregation-android-sdk-java-demo/app/src/main/res/mipmap-anydpi/ic_launcher.xml
0 → 100644
浏览文件 @
8d8acf2f
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon
xmlns:android=
"http://schemas.android.com/apk/res/android"
>
<background
android:drawable=
"@drawable/ic_launcher_background"
/>
<foreground
android:drawable=
"@drawable/ic_launcher_foreground"
/>
<monochrome
android:drawable=
"@drawable/ic_launcher_foreground"
/>
</adaptive-icon>
\ No newline at end of file
聚合SDK/aggregation-android-sdk-java-demo/app/src/main/res/mipmap-anydpi/ic_launcher_round.xml
0 → 100644
浏览文件 @
8d8acf2f
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon
xmlns:android=
"http://schemas.android.com/apk/res/android"
>
<background
android:drawable=
"@drawable/ic_launcher_background"
/>
<foreground
android:drawable=
"@drawable/ic_launcher_foreground"
/>
<monochrome
android:drawable=
"@drawable/ic_launcher_foreground"
/>
</adaptive-icon>
\ No newline at end of file
聚合SDK/aggregation-android-sdk-java-demo/app/src/main/res/mipmap-hdpi/ic_launcher.webp
0 → 100644
浏览文件 @
8d8acf2f
File added
聚合SDK/aggregation-android-sdk-java-demo/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp
0 → 100644
浏览文件 @
8d8acf2f
File added
聚合SDK/aggregation-android-sdk-java-demo/app/src/main/res/mipmap-mdpi/ic_launcher.webp
0 → 100644
浏览文件 @
8d8acf2f
File added
聚合SDK/aggregation-android-sdk-java-demo/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp
0 → 100644
浏览文件 @
8d8acf2f
File added
聚合SDK/aggregation-android-sdk-java-demo/app/src/main/res/mipmap-xhdpi/ic_launcher.webp
0 → 100644
浏览文件 @
8d8acf2f
File added
聚合SDK/aggregation-android-sdk-java-demo/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp
0 → 100644
浏览文件 @
8d8acf2f
File added
聚合SDK/aggregation-android-sdk-java-demo/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp
0 → 100644
浏览文件 @
8d8acf2f
File added
聚合SDK/aggregation-android-sdk-java-demo/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp
0 → 100644
浏览文件 @
8d8acf2f
File added
聚合SDK/aggregation-android-sdk-java-demo/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp
0 → 100644
浏览文件 @
8d8acf2f
File added
聚合SDK/aggregation-android-sdk-java-demo/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp
0 → 100644
浏览文件 @
8d8acf2f
File added
聚合SDK/aggregation-android-sdk-java-demo/app/src/main/res/values-night/themes.xml
0 → 100644
浏览文件 @
8d8acf2f
<resources
xmlns:tools=
"http://schemas.android.com/tools"
>
<resources
xmlns:tools=
"http://schemas.android.com/tools"
>
<!-- Base application theme. -->
<style
name=
"Theme.GameCenterJavaDemo"
parent=
"Theme.MaterialComponents.DayNight.DarkActionBar"
>
<!-- Primary brand color. -->
<item
name=
"colorPrimary"
>
@color/purple_200
</item>
<item
name=
"colorPrimaryVariant"
>
@color/purple_700
</item>
<item
name=
"colorOnPrimary"
>
@color/black
</item>
<!-- Secondary brand color. -->
<item
name=
"colorSecondary"
>
@color/teal_200
</item>
<item
name=
"colorSecondaryVariant"
>
@color/teal_200
</item>
<item
name=
"colorOnSecondary"
>
@color/black
</item>
<!-- Status bar color. -->
<item
name=
"android:statusBarColor"
>
?attr/colorPrimaryVariant
</item>
<!-- Customize your theme here. -->
</style>
</resources>
\ No newline at end of file
聚合SDK/aggregation-android-sdk-java-demo/app/src/main/res/values/colors.xml
0 → 100644
浏览文件 @
8d8acf2f
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color
name=
"purple_200"
>
#FFBB86FC
</color>
<color
name=
"purple_500"
>
#FF6200EE
</color>
<color
name=
"purple_700"
>
#FF3700B3
</color>
<color
name=
"teal_200"
>
#FF03DAC5
</color>
<color
name=
"teal_700"
>
#FF018786
</color>
<color
name=
"black"
>
#FF000000
</color>
<color
name=
"white"
>
#FFFFFFFF
</color>
</resources>
\ No newline at end of file
聚合SDK/aggregation-android-sdk-java-demo/app/src/main/res/values/strings.xml
0 → 100644
浏览文件 @
8d8acf2f
<resources>
<resources>
<string
name=
"app_name"
>
GameCenterJavaDemo
</string>
<string
name=
"status_idle"
>
点击下方功能按钮,状态将显示在这里。
</string>
<string
name=
"btn_init"
>
初始化
</string>
<string
name=
"btn_login"
>
登录
</string>
<string
name=
"btn_report_user"
>
上报用户信息
</string>
<string
name=
"btn_upgrade"
>
升级
</string>
<string
name=
"btn_pay"
>
支付
</string>
<string
name=
"btn_single_pay"
>
单机支付
</string>
<string
name=
"btn_order_report"
>
订单上报
</string>
<string
name=
"btn_show_float"
>
显示浮窗
</string>
<string
name=
"btn_hide_float"
>
隐藏浮窗
</string>
<string
name=
"btn_exit"
>
退出
</string>
<string
name=
"status_init_clicked"
>
初始化已点击,等待回调
</string>
<string
name=
"status_login_clicked"
>
登录已点击,等待回调
</string>
<string
name=
"status_report_user_clicked"
>
上报用户信息已点击,等待回调
</string>
<string
name=
"status_upgrade_clicked"
>
升级已点击,等待回调
</string>
<string
name=
"status_pay_clicked"
>
支付已点击,等待回调
</string>
<string
name=
"status_single_pay_clicked"
>
单机支付已点击,等待回调
</string>
<string
name=
"status_order_report_clicked"
>
订单上报已点击,等待回调
</string>
<string
name=
"status_show_float_clicked"
>
显示浮窗
</string>
<string
name=
"status_hide_float_clicked"
>
隐藏浮窗
</string>
<string
name=
"status_exit_clicked"
>
退出已点击,等待渠道退出引导回调
</string>
<string
name=
"toast_wait_previous_task"
>
等待上一个任务完成后再执行
</string>
</resources>
\ No newline at end of file
聚合SDK/aggregation-android-sdk-java-demo/app/src/main/res/values/themes.xml
0 → 100644
浏览文件 @
8d8acf2f
<resources
xmlns:tools=
"http://schemas.android.com/tools"
>
<resources
xmlns:tools=
"http://schemas.android.com/tools"
>
<!-- Base application theme. -->
<style
name=
"Theme.GameCenterJavaDemo"
parent=
"Theme.MaterialComponents.DayNight.DarkActionBar"
>
<!-- Primary brand color. -->
<item
name=
"colorPrimary"
>
@color/purple_500
</item>
<item
name=
"colorPrimaryVariant"
>
@color/purple_700
</item>
<item
name=
"colorOnPrimary"
>
@color/white
</item>
<!-- Secondary brand color. -->
<item
name=
"colorSecondary"
>
@color/teal_200
</item>
<item
name=
"colorSecondaryVariant"
>
@color/teal_700
</item>
<item
name=
"colorOnSecondary"
>
@color/black
</item>
<!-- Status bar color. -->
<item
name=
"android:statusBarColor"
>
?attr/colorPrimaryVariant
</item>
<!-- Customize your theme here. -->
</style>
</resources>
\ No newline at end of file
聚合SDK/aggregation-android-sdk-java-demo/app/src/main/res/xml/backup_rules.xml
0 → 100644
浏览文件 @
8d8acf2f
<?xml version="1.0" encoding="utf-8"?>
<!--
<?xml version="1.0" encoding="utf-8"?>
<!--
Sample backup rules file; uncomment and customize as necessary.
See https://developer.android.com/guide/topics/data/autobackup
for details.
Note: This file is ignored for devices older than API 31
See https://developer.android.com/about/versions/12/backup-restore
-->
<full-backup-content>
<!--
<include domain="sharedpref" path="."/>
<exclude domain="sharedpref" path="device.xml"/>
-->
</full-backup-content>
\ No newline at end of file
聚合SDK/aggregation-android-sdk-java-demo/app/src/main/res/xml/data_extraction_rules.xml
0 → 100644
浏览文件 @
8d8acf2f
<?xml version="1.0" encoding="utf-8"?>
<!--
<?xml version="1.0" encoding="utf-8"?>
<!--
Sample data extraction rules file; uncomment and customize as necessary.
See https://developer.android.com/about/versions/12/backup-restore#xml-changes
for details.
-->
<data-extraction-rules>
<cloud-backup>
<!-- TODO: Use <include> and <exclude> to control what is backed up.
<include .../>
<exclude .../>
-->
</cloud-backup>
<!--
<device-transfer>
<include .../>
<exclude .../>
</device-transfer>
-->
</data-extraction-rules>
\ No newline at end of file
聚合SDK/aggregation-android-sdk-java-demo/app/src/test/java/com/example/gamecenterjavademo/ExampleUnitTest.java
0 → 100644
浏览文件 @
8d8acf2f
package
com
.
example
.
gamecenterjavademo
;
package
com
.
example
.
gamecenterjavademo
;
import
org.junit.Test
;
import
static
org
.
junit
.
Assert
.*;
/**
* Example local unit test, which will execute on the development machine (host).
*
* @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
*/
public
class
ExampleUnitTest
{
@Test
public
void
addition_isCorrect
()
{
assertEquals
(
4
,
2
+
2
);
}
}
\ No newline at end of file
聚合SDK/aggregation-android-sdk-java-demo/build.gradle
0 → 100644
浏览文件 @
8d8acf2f
// Top-level build file where you can add configuration options common to all sub-projects/modules.
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript
{
repositories
{
google
()
mavenCentral
()
maven
{
url
'https://developer.huawei.com/repo/'
// 华为仓库地址
}
}
dependencies
{
classpath
(
"com.android.tools.build:gradle:8.13.1"
)
classpath
(
"com.huawei.agconnect:agcp:1.9.5.302"
)
}
}
plugins
{
alias
(
libs
.
plugins
.
android
.
application
)
apply
false
}
\ No newline at end of file
聚合SDK/aggregation-android-sdk-java-demo/gradle.properties
0 → 100644
浏览文件 @
8d8acf2f
# Project-wide Gradle settings.
# Project-wide Gradle settings.
# IDE (e.g. Android Studio) users:
# Gradle settings configured through the IDE *will override*
# any settings specified in this file.
# For more details on how to configure your build environment visit
# http://www.gradle.org/docs/current/userguide/build_environment.html
# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
org.gradle.jvmargs
=
-Xmx2048m -Dfile.encoding=UTF-8
# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. For more details, visit
# https://developer.android.com/r/tools/gradle-multi-project-decoupled-projects
#
org.gradle.parallel
=
true
\ No newline at end of file
聚合SDK/aggregation-android-sdk-java-demo/gradle/gradle-daemon-jvm.properties
0 → 100644
浏览文件 @
8d8acf2f
#This file is generated by updateDaemonJvm
#This file is generated by updateDaemonJvm
toolchainUrl.FREE_BSD.AARCH64
=
https
\:
//api.foojay.io/disco/v3.0/ids/ec7520a1e057cd116f9544c42142a16b/redirect
toolchainUrl.FREE_BSD.X86_64
=
https
\:
//api.foojay.io/disco/v3.0/ids/4c4f879899012ff0a8b2e2117df03b0e/redirect
toolchainUrl.LINUX.AARCH64
=
https
\:
//api.foojay.io/disco/v3.0/ids/ec7520a1e057cd116f9544c42142a16b/redirect
toolchainUrl.LINUX.X86_64
=
https
\:
//api.foojay.io/disco/v3.0/ids/4c4f879899012ff0a8b2e2117df03b0e/redirect
toolchainUrl.MAC_OS.AARCH64
=
https
\:
//api.foojay.io/disco/v3.0/ids/73bcfb608d1fde9fb62e462f834a3299/redirect
toolchainUrl.MAC_OS.X86_64
=
https
\:
//api.foojay.io/disco/v3.0/ids/846ee0d876d26a26f37aa1ce8de73224/redirect
toolchainUrl.UNIX.AARCH64
=
https
\:
//api.foojay.io/disco/v3.0/ids/ec7520a1e057cd116f9544c42142a16b/redirect
toolchainUrl.UNIX.X86_64
=
https
\:
//api.foojay.io/disco/v3.0/ids/4c4f879899012ff0a8b2e2117df03b0e/redirect
toolchainUrl.WINDOWS.AARCH64
=
https
\:
//api.foojay.io/disco/v3.0/ids/9482ddec596298c84656d31d16652665/redirect
toolchainUrl.WINDOWS.X86_64
=
https
\:
//api.foojay.io/disco/v3.0/ids/39701d92e1756bb2f141eb67cd4c660e/redirect
toolchainVersion
=
21
聚合SDK/aggregation-android-sdk-java-demo/gradle/libs.versions.toml
0 → 100644
浏览文件 @
8d8acf2f
[versions]
[versions]
agp
=
"9.2.1"
junit
=
"4.13.2"
junitVersion
=
"1.1.5"
espressoCore
=
"3.5.1"
appcompat
=
"1.6.1"
material
=
"1.10.0"
[libraries]
junit
=
{
group
=
"junit"
,
name
=
"junit"
,
version.ref
=
"junit"
}
ext-junit
=
{
group
=
"androidx.test.ext"
,
name
=
"junit"
,
version.ref
=
"junitVersion"
}
espresso-core
=
{
group
=
"androidx.test.espresso"
,
name
=
"espresso-core"
,
version.ref
=
"espressoCore"
}
appcompat
=
{
group
=
"androidx.appcompat"
,
name
=
"appcompat"
,
version.ref
=
"appcompat"
}
material
=
{
group
=
"com.google.android.material"
,
name
=
"material"
,
version.ref
=
"material"
}
[plugins]
android-application
=
{
id
=
"com.android.application"
,
version.ref
=
"agp"
}
聚合SDK/aggregation-android-sdk-java-demo/gradle/wrapper/gradle-wrapper.jar
0 → 100644
浏览文件 @
8d8acf2f
File added
聚合SDK/aggregation-android-sdk-java-demo/gradle/wrapper/gradle-wrapper.properties
0 → 100644
浏览文件 @
8d8acf2f
#Fri May 15 11:42:20 CST 2026
#Fri May 15 11:42:20 CST 2026
distributionBase
=
GRADLE_USER_HOME
distributionPath
=
wrapper/dists
distributionSha256Sum
=
2ab2958f2a1e51120c326cad6f385153bb11ee93b3c216c5fccebfdfbb7ec6cb
distributionUrl
=
https
\:
//services.gradle.org/distributions/gradle-9.4.1-bin.zip
networkTimeout
=
10000
validateDistributionUrl
=
true
zipStoreBase
=
GRADLE_USER_HOME
zipStorePath
=
wrapper/dists
聚合SDK/aggregation-android-sdk-java-demo/gradlew
0 → 100644
浏览文件 @
8d8acf2f
#!/bin/sh
#!/bin/sh
#
# Copyright © 2015 the original authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# SPDX-License-Identifier: Apache-2.0
#
##############################################################################
#
# Gradle start up script for POSIX generated by Gradle.
#
# Important for running:
#
# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is
# noncompliant, but you have some other compliant shell such as ksh or
# bash, then to run this script, type that shell name before the whole
# command line, like:
#
# ksh Gradle
#
# Busybox and similar reduced shells will NOT work, because this script
# requires all of these POSIX shell features:
# * functions;
# * expansions «$var», «${var}», «${var:-default}», «${var+SET}»,
# «${var#prefix}», «${var%suffix}», and «$( cmd )»;
# * compound commands having a testable exit status, especially «case»;
# * various built-in commands including «command», «set», and «ulimit».
#
# Important for patching:
#
# (2) This script targets any POSIX shell, so it avoids extensions provided
# by Bash, Ksh, etc; in particular arrays are avoided.
#
# The "traditional" practice of packing multiple parameters into a
# space-separated string is a well documented source of bugs and security
# problems, so this is (mostly) avoided, by progressively accumulating
# options in "$@", and eventually passing that to Java.
#
# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS,
# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly;
# see the in-line comments for details.
#
# There are tweaks for specific operating systems such as AIX, CygWin,
# Darwin, MinGW, and NonStop.
#
# (3) This script is generated from the Groovy template
# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
# within the Gradle project.
#
# You can find Gradle at https://github.com/gradle/gradle/.
#
##############################################################################
# Attempt to set APP_HOME
# Resolve links: $0 may be a link
app_path
=
$0
# Need this for daisy-chained symlinks.
while
APP_HOME
=
${
app_path
%
"
${
app_path
##*/
}
"
}
# leaves a trailing /; empty if no leading path
[
-h
"
$app_path
"
]
do
ls
=
$(
ls
-ld
"
$app_path
"
)
link
=
${
ls
#*
' -> '
}
case
$link
in
#(
/
*
)
app_path
=
$link
;;
#(
*
)
app_path
=
$APP_HOME$link
;;
esac
done
# This is normally unused
# shellcheck disable=SC2034
APP_BASE_NAME
=
${
0
##*/
}
# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)
APP_HOME
=
$(
cd
-P
"
${
APP_HOME
:-
./
}
"
>
/dev/null
&&
printf
'%s\n'
"
$PWD
"
)
||
exit
# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD
=
maximum
warn
()
{
echo
"
$*
"
}
>
&2
die
()
{
echo
echo
"
$*
"
echo
exit
1
}
>
&2
# OS specific support (must be 'true' or 'false').
cygwin
=
false
msys
=
false
darwin
=
false
nonstop
=
false
case
"
$(
uname
)
"
in
#(
CYGWIN
*
)
cygwin
=
true
;;
#(
Darwin
*
)
darwin
=
true
;;
#(
MSYS
*
|
MINGW
*
)
msys
=
true
;;
#(
NONSTOP
*
)
nonstop
=
true
;;
esac
CLASSPATH
=
"
\\\"\\\"
"
# Determine the Java command to use to start the JVM.
if
[
-n
"
$JAVA_HOME
"
]
;
then
if
[
-x
"
$JAVA_HOME
/jre/sh/java"
]
;
then
# IBM's JDK on AIX uses strange locations for the executables
JAVACMD
=
$JAVA_HOME
/jre/sh/java
else
JAVACMD
=
$JAVA_HOME
/bin/java
fi
if
[
!
-x
"
$JAVACMD
"
]
;
then
die
"ERROR: JAVA_HOME is set to an invalid directory:
$JAVA_HOME
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
else
JAVACMD
=
java
if
!
command
-v
java
>
/dev/null 2>&1
then
die
"ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
fi
# Increase the maximum file descriptors if we can.
if
!
"
$cygwin
"
&&
!
"
$darwin
"
&&
!
"
$nonstop
"
;
then
case
$MAX_FD
in
#(
max
*
)
# In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
# shellcheck disable=SC2039,SC3045
MAX_FD
=
$(
ulimit
-H
-n
)
||
warn
"Could not query maximum file descriptor limit"
esac
case
$MAX_FD
in
#(
''
|
soft
)
:
;;
#(
*
)
# In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
# shellcheck disable=SC2039,SC3045
ulimit
-n
"
$MAX_FD
"
||
warn
"Could not set maximum file descriptor limit to
$MAX_FD
"
esac
fi
# Collect all arguments for the java command, stacking in reverse order:
# * args from the command line
# * the main class name
# * -classpath
# * -D...appname settings
# * --module-path (only if needed)
# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables.
# For Cygwin or MSYS, switch paths to Windows format before running java
if
"
$cygwin
"
||
"
$msys
"
;
then
APP_HOME
=
$(
cygpath
--path
--mixed
"
$APP_HOME
"
)
CLASSPATH
=
$(
cygpath
--path
--mixed
"
$CLASSPATH
"
)
JAVACMD
=
$(
cygpath
--unix
"
$JAVACMD
"
)
# Now convert the arguments - kludge to limit ourselves to /bin/sh
for
arg
do
if
case
$arg
in
#(
-
*
)
false
;;
# don't mess with options #(
/?
*
)
t
=
${
arg
#/
}
t
=
/
${
t
%%/*
}
# looks like a POSIX filepath
[
-e
"
$t
"
]
;;
#(
*
)
false
;;
esac
then
arg
=
$(
cygpath
--path
--ignore
--mixed
"
$arg
"
)
fi
# Roll the args list around exactly as many times as the number of
# args, so each arg winds up back in the position where it started, but
# possibly modified.
#
# NB: a `for` loop captures its iteration list before it begins, so
# changing the positional parameters here affects neither the number of
# iterations, nor the values presented in `arg`.
shift
# remove old arg
set
--
"
$@
"
"
$arg
"
# push replacement arg
done
fi
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS
=
'"-Xmx64m" "-Xms64m"'
# Collect all arguments for the java command:
# * DEFAULT_JVM_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments,
# and any embedded shellness will be escaped.
# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be
# treated as '${Hostname}' itself on the command line.
set
--
\
"-Dorg.gradle.appname=
$APP_BASE_NAME
"
\
-classpath
"
$CLASSPATH
"
\
-jar
"
$APP_HOME
/gradle/wrapper/gradle-wrapper.jar"
\
"
$@
"
# Stop when "xargs" is not available.
if
!
command
-v
xargs
>
/dev/null 2>&1
then
die
"xargs is not available"
fi
# Use "xargs" to parse quoted args.
#
# With -n1 it outputs one arg per line, with the quotes and backslashes removed.
#
# In Bash we could simply go:
#
# readarray ARGS < <( xargs -n1 <<<"$var" ) &&
# set -- "${ARGS[@]}" "$@"
#
# but POSIX shell has neither arrays nor command substitution, so instead we
# post-process each arg (as a line of input to sed) to backslash-escape any
# character that might be a shell metacharacter, then use eval to reverse
# that process (while maintaining the separation between arguments), and wrap
# the whole thing up as a single "set" statement.
#
# This will of course break if any of these variables contains a newline or
# an unmatched quote.
#
eval
"set --
$(
printf
'%s\n'
"
$DEFAULT_JVM_OPTS
$JAVA_OPTS
$GRADLE_OPTS
"
|
xargs
-n1
|
sed
' s~[^-[:alnum:]+,./:=@_]~\\&~g; '
|
tr
'\n'
' '
)
"
'"$@"'
exec
"
$JAVACMD
"
"
$@
"
聚合SDK/aggregation-android-sdk-java-demo/gradlew.bat
0 → 100644
浏览文件 @
8d8acf2f
@rem
@rem
@rem Copyright 2015 the original author or authors.
@rem
@rem Licensed under the Apache License, Version 2.0 (the "License");
@rem you may not use this file except in compliance with the License.
@rem You may obtain a copy of the License at
@rem
@rem https://www.apache.org/licenses/LICENSE-2.0
@rem
@rem Unless required by applicable law or agreed to in writing, software
@rem distributed under the License is distributed on an "AS IS" BASIS,
@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@rem See the License for the specific language governing permissions and
@rem limitations under the License.
@rem
@rem SPDX-License-Identifier: Apache-2.0
@rem
@if "%DEBUG%"=="" @echo off
@rem ##########################################################################
@rem
@rem Gradle startup script for Windows
@rem
@rem ##########################################################################
@rem Set local scope for the variables with windows NT shell
if "%OS%"=="Windows_NT" setlocal
set DIRNAME=%~dp0
if "%DIRNAME%"=="" set DIRNAME=.
@rem This is normally unused
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%
@rem Resolve any "." and ".." in APP_HOME to make it shorter.
for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
@rem Find java.exe
if defined JAVA_HOME goto findJavaFromJavaHome
set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1
if %ERRORLEVEL% equ 0 goto execute
echo. 1>&2
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2
echo. 1>&2
echo Please set the JAVA_HOME variable in your environment to match the 1>&2
echo location of your Java installation. 1>&2
goto fail
:findJavaFromJavaHome
set JAVA_HOME=%JAVA_HOME:"=%
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
if exist "%JAVA_EXE%" goto execute
echo. 1>&2
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2
echo. 1>&2
echo Please set the JAVA_HOME variable in your environment to match the 1>&2
echo location of your Java installation. 1>&2
goto fail
:execute
@rem Setup the command line
set CLASSPATH=
@rem Execute Gradle
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %*
:end
@rem End local scope for the variables with windows NT shell
if %ERRORLEVEL% equ 0 goto mainEnd
:fail
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
rem the _cmd.exe /c_ return code!
set EXIT_CODE=%ERRORLEVEL%
if %EXIT_CODE% equ 0 set EXIT_CODE=1
if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE%
exit /b %EXIT_CODE%
:mainEnd
if "%OS%"=="Windows_NT" endlocal
:omega
聚合SDK/aggregation-android-sdk-java-demo/settings.gradle
0 → 100644
浏览文件 @
8d8acf2f
pluginManagement
{
pluginManagement
{
repositories
{
google
{
content
{
includeGroupByRegex
(
"com\\.android.*"
)
includeGroupByRegex
(
"com\\.google.*"
)
includeGroupByRegex
(
"androidx.*"
)
}
}
mavenCentral
()
gradlePluginPortal
()
}
}
plugins
{
id
'org.gradle.toolchains.foojay-resolver-convention'
version
'1.0.0'
}
dependencyResolutionManagement
{
repositoriesMode
.
set
(
RepositoriesMode
.
FAIL_ON_PROJECT_REPOS
)
repositories
{
// 不指定远程 Maven 仓库,Gradle 默认只查 google() 和 mavenCentral()
maven
{
url
'http://nexus.zwwlkj01.top/repository/android-advertisement'
allowInsecureProtocol
=
true
credentials
{
username
'admin'
password
'zwwl2021'
}
}
google
()
mavenCentral
()
// 巨量媒体
maven
{
url
=
uri
(
"https://artifact.bytedance.com/repository/Volcengine/"
)
}
maven
{
url
=
uri
(
"https://developer.huawei.com/repo/"
)
}
}
}
rootProject
.
name
=
"GameCenterJavaDemo"
include
':app'
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论