update:更新flexion 以及sdk 接入
This commit is contained in:
62
ExtraPluginCfgs/Android/flexion/AndroidManifest.xml
Normal file
62
ExtraPluginCfgs/Android/flexion/AndroidManifest.xml
Normal file
@@ -0,0 +1,62 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="com.arkgame.ft.flexion"
|
||||
xmlns:tools="http://schemas.android.com/tools">
|
||||
<uses-permission android:name="android.permission.VIBRATE" />
|
||||
<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
|
||||
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
|
||||
<application android:extractNativeLibs="true" android:name="com.unity3d.player.TYApp"
|
||||
tools:replace="android:usesCleartextTraffic,android:fullBackupContent"
|
||||
android:usesCleartextTraffic="true">
|
||||
<activity android:name="com.unity3d.player.TYUnityActivity"
|
||||
android:theme="@style/UnityThemeSelector">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
</intent-filter>
|
||||
|
||||
<intent-filter android:autoVerify="true">
|
||||
<action android:name="android.intent.action.VIEW" />
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
<category android:name="android.intent.category.BROWSABLE" />
|
||||
<data android:scheme="https" android:host="fishingtraveliae.onelink.me" android:pathPrefix="/jT1Q"/>
|
||||
</intent-filter>
|
||||
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.VIEW" />
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
<category android:name="android.intent.category.BROWSABLE" />
|
||||
<data android:host="mainactivity" android:scheme="zzft" />
|
||||
</intent-filter>
|
||||
|
||||
<meta-data android:name="unityplayer.UnityActivity" android:value="true" />
|
||||
</activity>
|
||||
|
||||
<!-- 渠道标识,ChannelManager 读取此值以识别 Flexion 渠道 -->
|
||||
<meta-data android:name="CHANNEL" android:value="Flexion" />
|
||||
|
||||
<!-- Flexion SDK 应用标识,从 DropPoint 获取 -->
|
||||
<meta-data android:name="com.flexionmobile.fdk.apptoken" android:value="fishingtravel" />
|
||||
|
||||
<!-- 告知 Flexion SDK 当前为 Unity 项目,必须声明 -->
|
||||
<meta-data android:name="com.flexionmobile.fdk.sdk-type" android:value="unity" />
|
||||
|
||||
<!--
|
||||
覆盖 tuyoosdk AAR 中硬编码的 Facebook ContentProvider authority。
|
||||
AAR 原值:com.facebook.app.FacebookContentProvider162066986963808
|
||||
追加 ${applicationId}(Flexion 包名)作为后缀后,与 GP 版 authority 不同,
|
||||
两个渠道包可同时安装在同一设备上,不会触发 INSTALL_FAILED_CONFLICTING_PROVIDER。
|
||||
参考:Flexion 官方文档《Unique package name - follow-on requirements》
|
||||
-->
|
||||
<provider
|
||||
android:name="com.facebook.FacebookContentProvider"
|
||||
android:authorities="com.facebook.app.FacebookContentProvider162066986963808.${applicationId}"
|
||||
android:exported="true"
|
||||
tools:replace="android:authorities" />
|
||||
</application>
|
||||
<queries>
|
||||
<provider android:authorities="com.facebook.katana.provider.PlatformProvider" />
|
||||
<provider android:authorities="com.facebook.orca.provider.PlatformProvider" />
|
||||
</queries>
|
||||
</manifest>
|
||||
9
ExtraPluginCfgs/Android/flexion/ChannelHelpers.java
Normal file
9
ExtraPluginCfgs/Android/flexion/ChannelHelpers.java
Normal file
@@ -0,0 +1,9 @@
|
||||
package com.unity3d.player;
|
||||
|
||||
public class ChannelHelpers {
|
||||
public static final String CHANNEL = "Flexion";
|
||||
|
||||
static void register() {
|
||||
SDKManager.registerHelper(CHANNEL, new FlexionSDKHelper());
|
||||
}
|
||||
}
|
||||
28
ExtraPluginCfgs/Android/flexion/ConfigManager.java
Normal file
28
ExtraPluginCfgs/Android/flexion/ConfigManager.java
Normal file
@@ -0,0 +1,28 @@
|
||||
package com.unity3d.player;
|
||||
|
||||
public class ConfigManager {
|
||||
// Common SDK parameters
|
||||
public static int SDK_APPID = 20587;
|
||||
public static String SDK_GAMEID = "20587";
|
||||
public static String SDK_PROJECTID = "20587";
|
||||
public static String SDK_CLOUDID = "128";
|
||||
public static String SDK_CLIENTID = "Android_5.00_tyGuest,facebook.googleplay.0-hall20587.googleplay.FishingMaster";
|
||||
|
||||
public static String SDK_LOGIN_SERVER_URL = "https://128-hwsfsdk-sdk-online01.qijihdhk.com";
|
||||
|
||||
// FCM (anti-addiction system)
|
||||
public static String FCM_NAMESPACE = "128";
|
||||
public static String FCM_IAM_HOST = "tcp://fcmtcp.tuyoo.com:3563";
|
||||
public static String FCM_ANTISERVERURL = "https://fcmapi.tuyoo.com";
|
||||
|
||||
// Unity Facade callback names
|
||||
public static final String UNITY_FACADE_NAME = "TYSdkFacade";
|
||||
public static final String LOGIN_CALLBACK_FUNCTION_NAME = "LoginResult";
|
||||
public static final String LINKACCOUT_CALLBACK_FUNCTION_NAME = "LinkAccoutResult";
|
||||
public static final String CHANGELINK_CALLBACK_FUNCTION_NAME = "ChangeLinkAccountResult";
|
||||
public static final String CHECKLINK_CALLBACK_FUNCTION_NAME = "CheckLinkResult";
|
||||
public static final String PAY_CALLBACK_FUNCTION_NAME = "PayResult";
|
||||
public static final String PAY_TYPE_CALLBACK_FUNCTION_NAME = "SKUListResult";
|
||||
public static final String FCM_NOTICE_FUNCTION_NAME = "FCMCallback";
|
||||
public static final String FCM_REALNAME_CALLBACK_FUNCTION_NAME = "RealNameCallback";
|
||||
}
|
||||
231
ExtraPluginCfgs/Android/flexion/FlexionSDKHelper.java
Normal file
231
ExtraPluginCfgs/Android/flexion/FlexionSDKHelper.java
Normal file
@@ -0,0 +1,231 @@
|
||||
package com.unity3d.player;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.util.Log;
|
||||
|
||||
import com.flexionmobile.ddpx.listener.ConnectionStateListener;
|
||||
import com.flexionmobile.ddpx.listener.PurchasesUpdateListener;
|
||||
import com.flexionmobile.ddpx.model.BillingResult;
|
||||
import com.flexionmobile.ddpx.model.BillingResults;
|
||||
import com.flexionmobile.ddpx.model.Purchase;
|
||||
import com.flexionmobile.ddpx.model.ProductDetails;
|
||||
import com.flexionmobile.ddpx.model.params.BillingFlowParams;
|
||||
import com.flexionmobile.ddpx.model.params.ConsumeParams;
|
||||
import com.flexionmobile.ddpx.model.params.QueryPurchasesParams;
|
||||
import com.flexionmobile.ddpx.model.params.ProductDetailsParams;
|
||||
import com.flexionmobile.fdk.FLX;
|
||||
|
||||
import com.tuyoo.gamesdk.api.SDKAPI;
|
||||
import com.tuyoo.gamesdk.api.SDKCallBack;
|
||||
import com.tuyoo.gamesdk.model.InitParam;
|
||||
import com.tuyoo.gamesdk.util.SDKLog;
|
||||
|
||||
import org.json.JSONArray;
|
||||
import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class FlexionSDKHelper implements SDKManager.ISDKHelper {
|
||||
private static final String TAG = "FlexionSDKHelper";
|
||||
private static BillingService billingService;
|
||||
private static boolean billingConnected = false;
|
||||
|
||||
private static final PurchasesUpdateListener purchasesListener = (billingResult, purchase) -> {
|
||||
if (billingResult.getResponseCode() == BillingResults.ResultCode.PURCHASE_SUCCESS_CODE) {
|
||||
if (purchase != null) handlePurchase(purchase);
|
||||
} else if (billingResult.getResponseCode() == BillingResults.ResultCode.PURCHASE_USER_CANCELLED_CODE) {
|
||||
sendPayCallback(1, "user_cancelled", null, null);
|
||||
} else {
|
||||
sendPayCallback(1, "purchase_failed_" + billingResult.getResponseCode(), null, null);
|
||||
}
|
||||
};
|
||||
|
||||
@Override
|
||||
public void init(Activity activity) {
|
||||
activity.runOnUiThread(() -> {
|
||||
SDKAPI.getIns().lightModeEnable();
|
||||
try {
|
||||
SDKAPI.getIns().init(new InitParam.Builder()
|
||||
.withActivity(activity)
|
||||
.withAppId(ConfigManager.SDK_APPID)
|
||||
.withClientId(ConfigManager.SDK_CLIENTID)
|
||||
.withServerUrl(ConfigManager.SDK_LOGIN_SERVER_URL)
|
||||
.build());
|
||||
SDKAPI.getIns().onActivityStart(activity);
|
||||
SDKAPI.getIns().onActivityResume(activity);
|
||||
} catch (Exception e) {
|
||||
Log.e(TAG, "TuYoo SDK init Exception: " + e);
|
||||
}
|
||||
|
||||
FLX.init(activity, (initCode, initMsg) -> {
|
||||
Log.i(TAG, "FLX.init result=" + initCode);
|
||||
if (initCode == 0) {
|
||||
FLX.showFlexionScreens(activity, (screenCode, screenMsg) -> {
|
||||
Log.i(TAG, "FLX.showFlexionScreens result=" + screenCode);
|
||||
initBillingService(activity);
|
||||
TYUnityActivity.setSdkInited();
|
||||
});
|
||||
} else {
|
||||
Log.e(TAG, "FLX.init failed: " + initCode);
|
||||
TYUnityActivity.setSdkInited();
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void pay(Activity activity, String productId, String productName,
|
||||
String productCount, String prodorderId, String appInfo) {
|
||||
Log.i(TAG, "pay: " + productId);
|
||||
if (billingService == null || !billingConnected) {
|
||||
sendPayCallback(1, "billing_not_ready", null, null);
|
||||
return;
|
||||
}
|
||||
activity.runOnUiThread(() ->
|
||||
billingService.launchBillingFlow(activity,
|
||||
new BillingFlowParams(productId, "inapp", "")));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void queryProducts() {
|
||||
if (billingService == null || !billingConnected) {
|
||||
sendExtensionError("billing_not_ready");
|
||||
return;
|
||||
}
|
||||
JSONObject jsonObject = new JSONObject();
|
||||
try {
|
||||
jsonObject.put("action", "ACTION_GET_SKU_DETAILS_LIST");
|
||||
} catch (JSONException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
SDKAPI.getIns().thirdExtend(jsonObject.toString(), new SDKCallBack.Extend() {
|
||||
@Override
|
||||
public void callback(int code, String msg) {
|
||||
if (code == SDKCallBack.Extend.EXTEND_CODE_SUCCESS && msg != null) {
|
||||
try {
|
||||
JSONArray products = new JSONArray(msg);
|
||||
List<String> productIds = new java.util.ArrayList<>();
|
||||
for (int i = 0; i < products.length(); i++) {
|
||||
JSONObject p = products.getJSONObject(i);
|
||||
String pid = p.optString("productId", "");
|
||||
if (!pid.isEmpty()) productIds.add(pid);
|
||||
}
|
||||
queryProductDetails(productIds);
|
||||
} catch (JSONException e) {
|
||||
sendExtensionError("parse_error: " + e.getMessage());
|
||||
}
|
||||
} else {
|
||||
sendExtensionError("tuyoo_query_failed: " + msg);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// ---- Billing Infrastructure ----
|
||||
|
||||
private static void initBillingService(Activity activity) {
|
||||
billingService = FLX.createBillingService(activity, purchasesListener);
|
||||
billingService.startConnection(activity, new ConnectionStateListener() {
|
||||
@Override
|
||||
public void onBillingSetupFinished(BillingResult result) {
|
||||
if (result.getResponseCode() == BillingResults.ResultCode.CONNECTION_SUCCESS_CODE) {
|
||||
billingConnected = true;
|
||||
queryPendingPurchases();
|
||||
}
|
||||
}
|
||||
@Override
|
||||
public void onBillingServiceDisconnected() {
|
||||
billingConnected = false;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private static void handlePurchase(Purchase purchase) {
|
||||
if (purchase.getPurchaseState() == 0) {
|
||||
sendPayCallback(0, "success", purchase.getPurchaseJson(), purchase.getSignature());
|
||||
billingService.consumeAsync(
|
||||
new ConsumeParams(purchase.getToken()),
|
||||
r -> Log.i(TAG, "Consume " +
|
||||
(r.getResponseCode() == BillingResults.ResultCode.CONSUME_SUCCESS_CODE ? "ok" : "fail")));
|
||||
} else if (purchase.getPurchaseState() == 2) {
|
||||
sendPayCallback(2, "pending", null, null);
|
||||
}
|
||||
}
|
||||
|
||||
private static void queryPendingPurchases() {
|
||||
if (billingService == null || !billingConnected) return;
|
||||
billingService.queryPurchasesAsync(
|
||||
new QueryPurchasesParams("inapp"),
|
||||
(result, purchases) -> {
|
||||
if (purchases != null) for (Purchase p : purchases) handlePurchase(p);
|
||||
});
|
||||
}
|
||||
|
||||
private static void queryProductDetails(List<String> productIds) {
|
||||
billingService.queryProductDetailsAsync(
|
||||
new ProductDetailsParams("inapp", productIds),
|
||||
(billingResult, productDetails) -> {
|
||||
try {
|
||||
JSONObject result = new JSONObject();
|
||||
if (billingResult.getResponseCode() == BillingResults.ResultCode.QUERY_PRODUCT_DETAILS_SUCCESS_CODE
|
||||
&& productDetails != null) {
|
||||
JSONArray arr = new JSONArray();
|
||||
for (ProductDetails detail : productDetails) {
|
||||
JSONObject item = new JSONObject();
|
||||
item.put("productId", detail.getId());
|
||||
item.put("ourProductId", detail.getId());
|
||||
item.put("title", detail.getTitle());
|
||||
item.put("description", detail.getDescription());
|
||||
item.put("price", detail.getPrice());
|
||||
item.put("price_amount_micros", detail.getPriceAmountMicros());
|
||||
item.put("price_currency_code", detail.getPriceCurrencyCode());
|
||||
item.put("type", detail.getType());
|
||||
arr.put(item);
|
||||
}
|
||||
result.put("code", 0);
|
||||
result.put("respObj", arr.toString());
|
||||
} else {
|
||||
result.put("code", 1);
|
||||
result.put("thirdExtend_errStr",
|
||||
"flexion_query_failed: " + billingResult.getDebugMessage());
|
||||
}
|
||||
UnityPlayer.UnitySendMessage(ConfigManager.UNITY_FACADE_NAME,
|
||||
ConfigManager.PAY_TYPE_CALLBACK_FUNCTION_NAME, result.toString());
|
||||
} catch (JSONException e) {
|
||||
UnityPlayer.UnitySendMessage(ConfigManager.UNITY_FACADE_NAME,
|
||||
ConfigManager.PAY_TYPE_CALLBACK_FUNCTION_NAME, "{\"code\":1}");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// ---- Callbacks to Unity ----
|
||||
|
||||
private static void sendPayCallback(int code, String errStr, String purchaseJson, String signature) {
|
||||
try {
|
||||
JSONObject result = new JSONObject();
|
||||
result.put("code", code);
|
||||
result.put("errStr", errStr != null ? errStr : "");
|
||||
if (purchaseJson != null) result.put("purchaseJson", purchaseJson);
|
||||
if (signature != null) result.put("signature", signature);
|
||||
UnityPlayer.UnitySendMessage(ConfigManager.UNITY_FACADE_NAME,
|
||||
ConfigManager.PAY_CALLBACK_FUNCTION_NAME, result.toString());
|
||||
} catch (JSONException e) {
|
||||
UnityPlayer.UnitySendMessage(ConfigManager.UNITY_FACADE_NAME,
|
||||
ConfigManager.PAY_CALLBACK_FUNCTION_NAME, "{\"code\":1,\"errStr\":\"json_error\"}");
|
||||
}
|
||||
}
|
||||
|
||||
private static void sendExtensionError(String errStr) {
|
||||
try {
|
||||
JSONObject result = new JSONObject();
|
||||
result.put("code", 1);
|
||||
result.put("thirdExtend_errStr", errStr);
|
||||
UnityPlayer.UnitySendMessage(ConfigManager.UNITY_FACADE_NAME,
|
||||
ConfigManager.PAY_TYPE_CALLBACK_FUNCTION_NAME, result.toString());
|
||||
} catch (JSONException e) {
|
||||
UnityPlayer.UnitySendMessage(ConfigManager.UNITY_FACADE_NAME,
|
||||
ConfigManager.PAY_TYPE_CALLBACK_FUNCTION_NAME, "{\"code\":1}");
|
||||
}
|
||||
}
|
||||
}
|
||||
Binary file not shown.
11
ExtraPluginCfgs/Android/flexion/gradleTemplate.properties
Normal file
11
ExtraPluginCfgs/Android/flexion/gradleTemplate.properties
Normal file
@@ -0,0 +1,11 @@
|
||||
org.gradle.jvmargs=-Xmx**JVM_HEAP_SIZE**M
|
||||
org.gradle.parallel=true
|
||||
unityStreamingAssets=**STREAMING_ASSETS**
|
||||
# Android Resolver Properties Start
|
||||
android.useAndroidX=true
|
||||
android.enableJetifier=true
|
||||
# Android Resolver Properties End
|
||||
|
||||
android.suppressUnsupportedCompileSdk=35
|
||||
|
||||
**ADDITIONAL_PROPERTIES**
|
||||
67
ExtraPluginCfgs/Android/flexion/launcherTemplate.gradle
Normal file
67
ExtraPluginCfgs/Android/flexion/launcherTemplate.gradle
Normal file
@@ -0,0 +1,67 @@
|
||||
apply plugin: 'com.android.application'
|
||||
// 临时注销掉,打完包之后就打开
|
||||
// apply plugin: 'com.google.gms.google-services'
|
||||
|
||||
dependencies {
|
||||
implementation project(':unityLibrary')
|
||||
implementation(platform("com.google.firebase:firebase-bom:33.6.0"))
|
||||
implementation("com.google.firebase:firebase-analytics")
|
||||
}
|
||||
|
||||
android {
|
||||
namespace "**NAMESPACE**"
|
||||
ndkPath "**NDKPATH**"
|
||||
|
||||
compileSdkVersion **APIVERSION**
|
||||
buildToolsVersion '**BUILDTOOLS**'
|
||||
|
||||
compileOptions {
|
||||
sourceCompatibility JavaVersion.VERSION_11
|
||||
targetCompatibility JavaVersion.VERSION_11
|
||||
|
||||
}
|
||||
|
||||
defaultConfig {
|
||||
minSdkVersion **MINSDKVERSION**
|
||||
targetSdkVersion **TARGETSDKVERSION**
|
||||
applicationId '**APPLICATIONID**'
|
||||
ndk {
|
||||
abiFilters **ABIFILTERS**
|
||||
}
|
||||
versionCode **VERSIONCODE**
|
||||
versionName '**VERSIONNAME**'
|
||||
}
|
||||
|
||||
aaptOptions {
|
||||
noCompress = **BUILTIN_NOCOMPRESS** + unityStreamingAssets.tokenize(', ')
|
||||
ignoreAssetsPattern = "!.svn:!.git:!.ds_store:!*.scc:!CVS:!thumbs.db:!picasa.ini:!*~"
|
||||
}**SIGN**
|
||||
|
||||
lintOptions {
|
||||
abortOnError false
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
debug {
|
||||
minifyEnabled **MINIFY_DEBUG**
|
||||
proguardFiles getDefaultProguardFile('proguard-android.txt')**SIGNCONFIG**
|
||||
jniDebuggable true
|
||||
}
|
||||
release {
|
||||
minifyEnabled **MINIFY_RELEASE**
|
||||
proguardFiles getDefaultProguardFile('proguard-android.txt')**SIGNCONFIG**
|
||||
}
|
||||
}**PACKAGING_OPTIONS****PLAY_ASSET_PACKS****SPLITS**
|
||||
**BUILT_APK_LOCATION**
|
||||
bundle {
|
||||
language {
|
||||
enableSplit = false
|
||||
}
|
||||
density {
|
||||
enableSplit = false
|
||||
}
|
||||
abi {
|
||||
enableSplit = true
|
||||
}
|
||||
}
|
||||
}**SPLITS_VERSION_CODE****LAUNCHER_SOURCE_BUILD_SETUP**
|
||||
139
ExtraPluginCfgs/Android/flexion/mainTemplate.gradle
Normal file
139
ExtraPluginCfgs/Android/flexion/mainTemplate.gradle
Normal file
@@ -0,0 +1,139 @@
|
||||
apply plugin: 'com.android.library'
|
||||
**APPLY_PLUGINS**
|
||||
|
||||
// Android Resolver Exclusions Start
|
||||
android {
|
||||
packagingOptions {
|
||||
exclude ('/lib/armeabi/*' + '*')
|
||||
exclude ('/lib/mips/*' + '*')
|
||||
exclude ('/lib/mips64/*' + '*')
|
||||
exclude ('/lib/x86/*' + '*')
|
||||
exclude ('/lib/x86_64/*' + '*')
|
||||
}
|
||||
}
|
||||
// Android Resolver Exclusions End
|
||||
android {
|
||||
namespace "com.unity3d.player"
|
||||
}
|
||||
|
||||
// Flexion 渠道专用:排除不需要的 AppsFlyer 模块
|
||||
// - purchase-connector: 基于 Google Play Billing,Flexion 不走 GP 计费,没用还增大包
|
||||
// 即使 Unity Android Resolver 下次又把 implementation 行写回来,这里的 exclude 也兜底排除
|
||||
configurations.all {
|
||||
exclude group: 'com.appsflyer', module: 'purchase-connector'
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation fileTree(dir: 'libs', include: ['*.jar'])
|
||||
|
||||
api "com.android.support:support-v4:28.0.0"
|
||||
api "com.android.support:appcompat-v7:28.0.0"
|
||||
|
||||
api "com.google.code.gson:gson:2.8.6"
|
||||
api "com.squareup.okio:okio:1.15.0"
|
||||
api "com.squareup.okhttp3:okhttp:3.12.13"
|
||||
api "com.squareup.retrofit2:retrofit:2.3.0"
|
||||
api "com.squareup.retrofit2:converter-gson:2.2.0"
|
||||
api "com.squareup.retrofit2:adapter-rxjava:2.1.0"
|
||||
api "io.reactivex:rxandroid:1.2.1"
|
||||
api "io.reactivex:rxjava:1.1.9"
|
||||
|
||||
// Google Play In-App Review
|
||||
implementation 'com.google.android.play:review:2.0.1'
|
||||
implementation 'net.aihelp:android-aihelp-aar:5.3.+'
|
||||
|
||||
implementation 'com.google.android.gms:play-services-auth:20.2.0'
|
||||
// NOTE: Google Play BillingClient NOT included — Flexion SDK provides its own billing wrapper
|
||||
// implementation('com.android.billingclient:billing:6.0.1')
|
||||
|
||||
// Flexion SDK (includes wrapped billing)
|
||||
implementation("com.flexionmobile:sdk:4.0.1")
|
||||
|
||||
implementation 'com.google.android.gms:play-services-basement:18.2.0'
|
||||
implementation 'androidx.fragment:fragment:1.3.6'
|
||||
implementation "org.jetbrains.kotlin:kotlin-reflect:1.3.41"
|
||||
implementation 'org.jetbrains.kotlin:kotlin-stdlib:1.3.41'
|
||||
implementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.41'
|
||||
implementation 'org.jetbrains.kotlin:kotlin-android-extensions-runtime:1.3.41'
|
||||
implementation 'androidx.core:core:1.8.0'
|
||||
|
||||
implementation 'com.miui.referrer:homereferrer:1.0.0.6'
|
||||
|
||||
implementation platform('com.google.firebase:firebase-bom:32.7.4')
|
||||
implementation 'com.google.firebase:firebase-analytics'
|
||||
|
||||
implementation('com.facebook.android:facebook-android-sdk:16.2.0')
|
||||
|
||||
implementation 'com.google.android.play:asset-delivery:2.2.2'
|
||||
|
||||
implementation "androidx.credentials:credentials:1.3.0"
|
||||
implementation "androidx.credentials:credentials-play-services-auth:1.3.0"
|
||||
implementation "com.google.android.libraries.identity.googleid:googleid:1.1.1"
|
||||
|
||||
coreLibraryDesugaring "com.android.tools:desugar_jdk_libs:2.1.2"
|
||||
|
||||
// Android Resolver Dependencies Start
|
||||
implementation 'com.android.installreferrer:installreferrer:2.1' // Assets/AppsFlyer/Editor/AppsFlyerDependencies.xml:7
|
||||
implementation 'com.applovin.mediation:facebook-adapter:[6.18.0.1]' // Assets/MaxSdk/Mediation/Facebook/Editor/Dependencies.xml:8
|
||||
implementation 'com.applovin.mediation:fyber-adapter:8.4.2.0' // Assets/MaxSdk/Mediation/Fyber/Editor/Dependencies.xml:4
|
||||
implementation 'com.applovin.mediation:google-adapter:[23.6.0.1]' // Assets/MaxSdk/Mediation/Google/Editor/Dependencies.xml:5
|
||||
implementation 'com.applovin.mediation:ironsource-adapter:8.6.1.0.0' // Assets/MaxSdk/Mediation/IronSource/Editor/Dependencies.xml:8
|
||||
implementation 'com.applovin.mediation:unityads-adapter:4.12.3.0' // Assets/MaxSdk/Mediation/UnityAds/Editor/Dependencies.xml:4
|
||||
implementation 'com.applovin.mediation:vungle-adapter:7.4.2.2' // Assets/MaxSdk/Mediation/Vungle/Editor/Dependencies.xml:4
|
||||
implementation 'com.applovin:applovin-sdk:13.5.1' // Assets/MaxSdk/AppLovin/Editor/Dependencies.xml:4
|
||||
implementation 'com.appsflyer:af-android-sdk:6.17.3' // Assets/AppsFlyer/Editor/AppsFlyerDependencies.xml:5
|
||||
// Flexion: purchase-connector removed — Flexion does not use Google Play Billing.
|
||||
// Also covered by top-level `configurations.all { exclude ... }` as a safety net.
|
||||
// implementation 'com.appsflyer:purchase-connector:2.2.0' // Assets/AppsFlyer/Editor/AppsFlyerDependencies.xml:8
|
||||
implementation 'com.appsflyer:unity-wrapper:6.17.7' // Assets/AppsFlyer/Editor/AppsFlyerDependencies.xml:6
|
||||
implementation 'com.google.android.ump:user-messaging-platform:2.1.0' // Assets/MaxSdk/AppLovin/Editor/Dependencies.xml:5
|
||||
// Android Resolver Dependencies End
|
||||
**DEPS**}
|
||||
|
||||
// Android Resolver Exclusions Start
|
||||
android {
|
||||
packagingOptions {
|
||||
exclude ('/lib/armeabi/*' + '*')
|
||||
exclude ('/lib/mips/*' + '*')
|
||||
exclude ('/lib/mips64/*' + '*')
|
||||
exclude ('/lib/x86/*' + '*')
|
||||
exclude ('/lib/x86_64/*' + '*')
|
||||
}
|
||||
}
|
||||
// Android Resolver Exclusions End
|
||||
android {
|
||||
ndkPath "**NDKPATH**"
|
||||
|
||||
compileSdkVersion **APIVERSION**
|
||||
buildToolsVersion '**BUILDTOOLS**'
|
||||
|
||||
compileOptions {
|
||||
sourceCompatibility JavaVersion.VERSION_11
|
||||
targetCompatibility JavaVersion.VERSION_11
|
||||
coreLibraryDesugaringEnabled true
|
||||
}
|
||||
|
||||
defaultConfig {
|
||||
minSdkVersion **MINSDKVERSION**
|
||||
targetSdkVersion **TARGETSDKVERSION**
|
||||
ndk {
|
||||
abiFilters **ABIFILTERS**
|
||||
}
|
||||
|
||||
versionCode **VERSIONCODE**
|
||||
versionName '**VERSIONNAME**'
|
||||
consumerProguardFiles 'proguard-unity.txt'**USER_PROGUARD**
|
||||
}
|
||||
|
||||
lintOptions {
|
||||
abortOnError false
|
||||
}
|
||||
|
||||
aaptOptions {
|
||||
noCompress = **BUILTIN_NOCOMPRESS** + unityStreamingAssets.tokenize(', ')
|
||||
ignoreAssetsPattern = "!.svn:!.git:!.ds_store:!*.scc:!CVS:!thumbs.db:!picasa.ini:!*~"
|
||||
}**PACKAGING_OPTIONS**
|
||||
}
|
||||
**IL_CPP_BUILD_SETUP**
|
||||
**SOURCE_BUILD_SETUP**
|
||||
**EXTERNAL_SOURCES**
|
||||
46
ExtraPluginCfgs/Android/flexion/settingsTemplate.gradle
Normal file
46
ExtraPluginCfgs/Android/flexion/settingsTemplate.gradle
Normal file
@@ -0,0 +1,46 @@
|
||||
pluginManagement {
|
||||
repositories {
|
||||
**ARTIFACTORYREPOSITORY**
|
||||
gradlePluginPortal()
|
||||
google()
|
||||
mavenCentral()
|
||||
}
|
||||
}
|
||||
|
||||
include ':launcher', ':unityLibrary'
|
||||
**INCLUDES**
|
||||
|
||||
dependencyResolutionManagement {
|
||||
repositoriesMode.set(RepositoriesMode.PREFER_SETTINGS)
|
||||
repositories {
|
||||
**ARTIFACTORYREPOSITORY**
|
||||
google()
|
||||
mavenCentral()
|
||||
|
||||
// Flexion SDK Maven Repository
|
||||
maven {
|
||||
url = uri("https://maven.pkg.github.com/FlexionSDK/JavaSDK")
|
||||
credentials {
|
||||
username = "FlexionSDK"
|
||||
// Replace with your actual Flexion PAT from DropPoint
|
||||
password = "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"
|
||||
}
|
||||
}
|
||||
|
||||
// Android Resolver Repos Start
|
||||
def unityProjectPath = $/file:///**DIR_UNITYPROJECT**/$.replace("\\", "/")
|
||||
maven {
|
||||
url "https://android-sdk.is.com/" // Assets/MaxSdk/Mediation/IronSource/Editor/Dependencies.xml:8
|
||||
}
|
||||
mavenLocal()
|
||||
// Android Resolver Repos End
|
||||
flatDir {
|
||||
dirs "${project(':unityLibrary').projectDir}/libs"
|
||||
}
|
||||
|
||||
maven {
|
||||
url "http://sdkck.tuyoo.com/artifactory/tuyoo-component/"
|
||||
allowInsecureProtocol = true
|
||||
}
|
||||
}
|
||||
}
|
||||
48
ExtraPluginCfgs/Android/googleplay/AndroidManifest.xml
Normal file
48
ExtraPluginCfgs/Android/googleplay/AndroidManifest.xml
Normal file
@@ -0,0 +1,48 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="com.arkgame.ft"
|
||||
xmlns:tools="http://schemas.android.com/tools">
|
||||
<uses-permission android:name="android.permission.VIBRATE" />
|
||||
<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
|
||||
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
|
||||
<application android:extractNativeLibs="true" android:name="com.unity3d.player.TYApp" android:usesCleartextTraffic="true">
|
||||
<activity android:name="com.unity3d.player.TYUnityActivity"
|
||||
android:theme="@style/UnityThemeSelector">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
</intent-filter>
|
||||
|
||||
<intent-filter android:autoVerify="true">
|
||||
<action android:name="android.intent.action.VIEW" />
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
<category android:name="android.intent.category.BROWSABLE" />
|
||||
<data android:scheme="https" android:host="fishingtraveliae.onelink.me" android:pathPrefix="/jT1Q"/>
|
||||
</intent-filter>
|
||||
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.VIEW" />
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
<category android:name="android.intent.category.BROWSABLE" />
|
||||
<data android:host="mainactivity" android:scheme="zzft" />
|
||||
</intent-filter>
|
||||
|
||||
<meta-data android:name="unityplayer.UnityActivity" android:value="true" />
|
||||
|
||||
<meta-data android:name="google_analytics_default_allow_analytics_storage" android:value="true" />
|
||||
<meta-data android:name="google_analytics_default_allow_ad_storage" android:value="true" />
|
||||
<meta-data android:name="google_analytics_default_allow_ad_user_data" android:value="true" />
|
||||
<meta-data android:name="google_analytics_default_allow_ad_personalization_signals" android:value="true" />
|
||||
|
||||
</activity>
|
||||
<meta-data android:name="CHANNEL" android:value="GooglePlay" />
|
||||
</application>
|
||||
<queries>
|
||||
<provider android:authorities="com.facebook.katana.provider.PlatformProvider" /> <!-- allows app to access Facebook app features -->
|
||||
<provider android:authorities="com.facebook.orca.provider.PlatformProvider" /> <!-- allows sharing to Messenger app -->
|
||||
<intent>
|
||||
<action android:name="android.intent.action.MAIN"/>
|
||||
</intent>
|
||||
</queries>
|
||||
</manifest>
|
||||
9
ExtraPluginCfgs/Android/googleplay/ChannelHelpers.java
Normal file
9
ExtraPluginCfgs/Android/googleplay/ChannelHelpers.java
Normal file
@@ -0,0 +1,9 @@
|
||||
package com.unity3d.player;
|
||||
|
||||
public class ChannelHelpers {
|
||||
public static final String CHANNEL = "GooglePlay";
|
||||
|
||||
static void register() {
|
||||
// GooglePlay uses default behavior, no additional SDKHelper
|
||||
}
|
||||
}
|
||||
28
ExtraPluginCfgs/Android/googleplay/ConfigManager.java
Normal file
28
ExtraPluginCfgs/Android/googleplay/ConfigManager.java
Normal file
@@ -0,0 +1,28 @@
|
||||
package com.unity3d.player;
|
||||
|
||||
public class ConfigManager {
|
||||
// Common SDK parameters
|
||||
public static int SDK_APPID = 20587;
|
||||
public static String SDK_GAMEID = "20587";
|
||||
public static String SDK_PROJECTID = "20587";
|
||||
public static String SDK_CLOUDID = "128";
|
||||
public static String SDK_CLIENTID = "Android_5.00_tyGuest,facebook.googleplay.0-hall20587.googleplay.FishingMaster";
|
||||
|
||||
public static String SDK_LOGIN_SERVER_URL = "https://128-hwsfsdk-sdk-online01.qijihdhk.com";
|
||||
|
||||
// FCM (anti-addiction system)
|
||||
public static String FCM_NAMESPACE = "128";
|
||||
public static String FCM_IAM_HOST = "tcp://fcmtcp.tuyoo.com:3563";
|
||||
public static String FCM_ANTISERVERURL = "https://fcmapi.tuyoo.com";
|
||||
|
||||
// Unity Facade callback names
|
||||
public static final String UNITY_FACADE_NAME = "TYSdkFacade";
|
||||
public static final String LOGIN_CALLBACK_FUNCTION_NAME = "LoginResult";
|
||||
public static final String LINKACCOUT_CALLBACK_FUNCTION_NAME = "LinkAccoutResult";
|
||||
public static final String CHANGELINK_CALLBACK_FUNCTION_NAME = "ChangeLinkAccountResult";
|
||||
public static final String CHECKLINK_CALLBACK_FUNCTION_NAME = "CheckLinkResult";
|
||||
public static final String PAY_CALLBACK_FUNCTION_NAME = "PayResult";
|
||||
public static final String PAY_TYPE_CALLBACK_FUNCTION_NAME = "SKUListResult";
|
||||
public static final String FCM_NOTICE_FUNCTION_NAME = "FCMCallback";
|
||||
public static final String FCM_REALNAME_CALLBACK_FUNCTION_NAME = "RealNameCallback";
|
||||
}
|
||||
Binary file not shown.
11
ExtraPluginCfgs/Android/googleplay/gradleTemplate.properties
Normal file
11
ExtraPluginCfgs/Android/googleplay/gradleTemplate.properties
Normal file
@@ -0,0 +1,11 @@
|
||||
org.gradle.jvmargs=-Xmx**JVM_HEAP_SIZE**M
|
||||
org.gradle.parallel=true
|
||||
unityStreamingAssets=**STREAMING_ASSETS**
|
||||
# Android Resolver Properties Start
|
||||
android.useAndroidX=true
|
||||
android.enableJetifier=true
|
||||
# Android Resolver Properties End
|
||||
|
||||
android.suppressUnsupportedCompileSdk=35
|
||||
|
||||
**ADDITIONAL_PROPERTIES**
|
||||
66
ExtraPluginCfgs/Android/googleplay/launcherTemplate.gradle
Normal file
66
ExtraPluginCfgs/Android/googleplay/launcherTemplate.gradle
Normal file
@@ -0,0 +1,66 @@
|
||||
apply plugin: 'com.android.application'
|
||||
apply plugin: 'com.google.gms.google-services'
|
||||
|
||||
dependencies {
|
||||
implementation project(':unityLibrary')
|
||||
implementation(platform("com.google.firebase:firebase-bom:33.6.0"))
|
||||
implementation("com.google.firebase:firebase-analytics")
|
||||
}
|
||||
|
||||
android {
|
||||
namespace "**NAMESPACE**"
|
||||
ndkPath "**NDKPATH**"
|
||||
|
||||
compileSdkVersion **APIVERSION**
|
||||
buildToolsVersion '**BUILDTOOLS**'
|
||||
|
||||
compileOptions {
|
||||
sourceCompatibility JavaVersion.VERSION_11
|
||||
targetCompatibility JavaVersion.VERSION_11
|
||||
|
||||
}
|
||||
|
||||
defaultConfig {
|
||||
minSdkVersion **MINSDKVERSION**
|
||||
targetSdkVersion **TARGETSDKVERSION**
|
||||
applicationId '**APPLICATIONID**'
|
||||
ndk {
|
||||
abiFilters **ABIFILTERS**
|
||||
}
|
||||
versionCode **VERSIONCODE**
|
||||
versionName '**VERSIONNAME**'
|
||||
}
|
||||
|
||||
aaptOptions {
|
||||
noCompress = **BUILTIN_NOCOMPRESS** + unityStreamingAssets.tokenize(', ')
|
||||
ignoreAssetsPattern = "!.svn:!.git:!.ds_store:!*.scc:!CVS:!thumbs.db:!picasa.ini:!*~"
|
||||
}**SIGN**
|
||||
|
||||
lintOptions {
|
||||
abortOnError false
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
debug {
|
||||
minifyEnabled **MINIFY_DEBUG**
|
||||
proguardFiles getDefaultProguardFile('proguard-android.txt')**SIGNCONFIG**
|
||||
jniDebuggable true
|
||||
}
|
||||
release {
|
||||
minifyEnabled **MINIFY_RELEASE**
|
||||
proguardFiles getDefaultProguardFile('proguard-android.txt')**SIGNCONFIG**
|
||||
}
|
||||
}**PACKAGING_OPTIONS****PLAY_ASSET_PACKS****SPLITS**
|
||||
**BUILT_APK_LOCATION**
|
||||
bundle {
|
||||
language {
|
||||
enableSplit = false
|
||||
}
|
||||
density {
|
||||
enableSplit = false
|
||||
}
|
||||
abi {
|
||||
enableSplit = true
|
||||
}
|
||||
}
|
||||
}**SPLITS_VERSION_CODE****LAUNCHER_SOURCE_BUILD_SETUP**
|
||||
111
ExtraPluginCfgs/Android/googleplay/mainTemplate.gradle
Normal file
111
ExtraPluginCfgs/Android/googleplay/mainTemplate.gradle
Normal file
@@ -0,0 +1,111 @@
|
||||
apply plugin: 'com.android.library'
|
||||
**APPLY_PLUGINS**
|
||||
|
||||
// Android Resolver Exclusions Start
|
||||
android {
|
||||
packagingOptions {
|
||||
exclude ('/lib/armeabi/*' + '*')
|
||||
exclude ('/lib/mips/*' + '*')
|
||||
exclude ('/lib/mips64/*' + '*')
|
||||
exclude ('/lib/x86/*' + '*')
|
||||
exclude ('/lib/x86_64/*' + '*')
|
||||
}
|
||||
}
|
||||
// Android Resolver Exclusions End
|
||||
android {
|
||||
namespace "com.unity3d.player"
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation fileTree(dir: 'libs', include: ['*.jar'])
|
||||
|
||||
api "com.android.support:support-v4:28.0.0"
|
||||
api "com.android.support:appcompat-v7:28.0.0"
|
||||
|
||||
api "com.google.code.gson:gson:2.8.6"
|
||||
api "com.squareup.okio:okio:1.15.0"
|
||||
api "com.squareup.okhttp3:okhttp:3.12.13"
|
||||
api "com.squareup.retrofit2:retrofit:2.3.0"
|
||||
api "com.squareup.retrofit2:converter-gson:2.2.0"
|
||||
api "com.squareup.retrofit2:adapter-rxjava:2.1.0"
|
||||
api "io.reactivex:rxandroid:1.2.1"
|
||||
api "io.reactivex:rxjava:1.1.9"
|
||||
|
||||
// Google Play In-App Review
|
||||
implementation 'com.google.android.play:review:2.0.1'
|
||||
implementation 'net.aihelp:android-aihelp-aar:5.3.+'
|
||||
|
||||
implementation 'com.google.android.gms:play-services-auth:20.2.0'
|
||||
implementation('com.android.billingclient:billing:7.0.0')
|
||||
|
||||
implementation 'com.google.android.gms:play-services-basement:18.2.0'
|
||||
implementation 'androidx.fragment:fragment:1.3.6'
|
||||
implementation "org.jetbrains.kotlin:kotlin-reflect:1.3.41"
|
||||
implementation 'org.jetbrains.kotlin:kotlin-stdlib:1.3.41'
|
||||
implementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.41'
|
||||
implementation 'org.jetbrains.kotlin:kotlin-android-extensions-runtime:1.3.41'
|
||||
implementation 'androidx.core:core:1.8.0'
|
||||
|
||||
implementation 'com.miui.referrer:homereferrer:1.0.0.6'
|
||||
|
||||
implementation platform('com.google.firebase:firebase-bom:34.6.0')
|
||||
implementation 'com.google.firebase:firebase-analytics'
|
||||
|
||||
implementation('com.facebook.android:facebook-android-sdk:16.2.0')
|
||||
|
||||
implementation 'com.google.android.play:asset-delivery:2.2.2'
|
||||
|
||||
implementation "androidx.credentials:credentials:1.3.0"
|
||||
implementation "androidx.credentials:credentials-play-services-auth:1.3.0"
|
||||
implementation "com.google.android.libraries.identity.googleid:googleid:1.1.1"
|
||||
|
||||
// Android Resolver Dependencies Start
|
||||
implementation 'com.android.installreferrer:installreferrer:2.1' // Assets/AppsFlyer/Editor/AppsFlyerDependencies.xml:7
|
||||
implementation 'com.applovin.mediation:facebook-adapter:[6.18.0.1]' // Assets/MaxSdk/Mediation/Facebook/Editor/Dependencies.xml:8
|
||||
implementation 'com.applovin.mediation:fyber-adapter:8.4.2.0' // Assets/MaxSdk/Mediation/Fyber/Editor/Dependencies.xml:4
|
||||
implementation 'com.applovin.mediation:google-adapter:[23.6.0.1]' // Assets/MaxSdk/Mediation/Google/Editor/Dependencies.xml:5
|
||||
implementation 'com.applovin.mediation:ironsource-adapter:8.6.1.0.0' // Assets/MaxSdk/Mediation/IronSource/Editor/Dependencies.xml:8
|
||||
implementation 'com.applovin.mediation:unityads-adapter:4.12.3.0' // Assets/MaxSdk/Mediation/UnityAds/Editor/Dependencies.xml:4
|
||||
implementation 'com.applovin.mediation:vungle-adapter:7.4.2.2' // Assets/MaxSdk/Mediation/Vungle/Editor/Dependencies.xml:4
|
||||
implementation 'com.applovin:applovin-sdk:13.5.1' // Assets/MaxSdk/AppLovin/Editor/Dependencies.xml:4
|
||||
implementation 'com.appsflyer:af-android-sdk:6.17.3' // Assets/AppsFlyer/Editor/AppsFlyerDependencies.xml:5
|
||||
implementation 'com.appsflyer:purchase-connector:2.2.0' // Assets/AppsFlyer/Editor/AppsFlyerDependencies.xml:8
|
||||
implementation 'com.appsflyer:unity-wrapper:6.17.7' // Assets/AppsFlyer/Editor/AppsFlyerDependencies.xml:6
|
||||
implementation 'com.google.android.ump:user-messaging-platform:2.1.0' // Assets/MaxSdk/AppLovin/Editor/Dependencies.xml:5
|
||||
implementation 'com.tapjoy:tapjoy-android-unitybridge:14.5.0' // Packages/com.unity.package-offerwall/Editor/TJPluginDependencies.xml:10
|
||||
// Android Resolver Dependencies End
|
||||
**DEPS**}
|
||||
|
||||
android {
|
||||
ndkPath "**NDKPATH**"
|
||||
|
||||
compileSdkVersion **APIVERSION**
|
||||
buildToolsVersion '**BUILDTOOLS**'
|
||||
compileOptions {
|
||||
sourceCompatibility JavaVersion.VERSION_11
|
||||
targetCompatibility JavaVersion.VERSION_11
|
||||
}
|
||||
|
||||
defaultConfig {
|
||||
minSdkVersion **MINSDKVERSION**
|
||||
targetSdkVersion **TARGETSDKVERSION**
|
||||
ndk {
|
||||
abiFilters **ABIFILTERS**
|
||||
}
|
||||
versionCode **VERSIONCODE**
|
||||
versionName '**VERSIONNAME**'
|
||||
consumerProguardFiles 'proguard-unity.txt'**USER_PROGUARD**
|
||||
}
|
||||
|
||||
lintOptions {
|
||||
abortOnError false
|
||||
}
|
||||
|
||||
aaptOptions {
|
||||
noCompress = **BUILTIN_NOCOMPRESS** + unityStreamingAssets.tokenize(', ')
|
||||
ignoreAssetsPattern = "!.svn:!.git:!.ds_store:!*.scc:!CVS:!thumbs.db:!picasa.ini:!*~"
|
||||
}**PACKAGING_OPTIONS**
|
||||
}
|
||||
**IL_CPP_BUILD_SETUP**
|
||||
**SOURCE_BUILD_SETUP**
|
||||
**EXTERNAL_SOURCES**
|
||||
38
ExtraPluginCfgs/Android/googleplay/settingsTemplate.gradle
Normal file
38
ExtraPluginCfgs/Android/googleplay/settingsTemplate.gradle
Normal file
@@ -0,0 +1,38 @@
|
||||
pluginManagement {
|
||||
repositories {
|
||||
**ARTIFACTORYREPOSITORY**
|
||||
gradlePluginPortal()
|
||||
google()
|
||||
mavenCentral()
|
||||
}
|
||||
}
|
||||
|
||||
include ':launcher', ':unityLibrary'
|
||||
**INCLUDES**
|
||||
|
||||
dependencyResolutionManagement {
|
||||
repositoriesMode.set(RepositoriesMode.PREFER_SETTINGS)
|
||||
repositories {
|
||||
**ARTIFACTORYREPOSITORY**
|
||||
google()
|
||||
mavenCentral()
|
||||
// Android Resolver Repos Start
|
||||
def unityProjectPath = $/file:///**DIR_UNITYPROJECT**/$.replace("\\", "/")
|
||||
maven {
|
||||
url "https://sdk.tapjoy.com/" // Packages/com.unity.package-offerwall/Editor/TJPluginDependencies.xml:9
|
||||
}
|
||||
maven {
|
||||
url "https://android-sdk.is.com/" // Assets/MaxSdk/Mediation/IronSource/Editor/Dependencies.xml:8
|
||||
}
|
||||
mavenLocal()
|
||||
// Android Resolver Repos End
|
||||
flatDir {
|
||||
dirs "${project(':unityLibrary').projectDir}/libs"
|
||||
}
|
||||
|
||||
maven {
|
||||
url "http://sdkck.tuyoo.com/artifactory/tuyoo-component/"
|
||||
allowInsecureProtocol = true
|
||||
}
|
||||
}
|
||||
}
|
||||
41
ExtraPluginCfgs/Android/rustore/AndroidManifest.xml
Normal file
41
ExtraPluginCfgs/Android/rustore/AndroidManifest.xml
Normal file
@@ -0,0 +1,41 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="com.arkgame.ft"
|
||||
xmlns:tools="http://schemas.android.com/tools">
|
||||
<uses-permission android:name="android.permission.VIBRATE" />
|
||||
<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
|
||||
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
|
||||
<application android:extractNativeLibs="true" android:name="com.unity3d.player.TYApp"
|
||||
tools:replace="android:usesCleartextTraffic"
|
||||
android:usesCleartextTraffic="true">
|
||||
<activity android:name="com.unity3d.player.TYUnityActivity"
|
||||
android:theme="@style/UnityThemeSelector">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
</intent-filter>
|
||||
|
||||
<intent-filter android:autoVerify="true">
|
||||
<action android:name="android.intent.action.VIEW" />
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
<category android:name="android.intent.category.BROWSABLE" />
|
||||
<data android:scheme="https" android:host="fishingtraveliae.onelink.me" android:pathPrefix="/jT1Q"/>
|
||||
</intent-filter>
|
||||
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.VIEW" />
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
<category android:name="android.intent.category.BROWSABLE" />
|
||||
<data android:host="mainactivity" android:scheme="zzft" />
|
||||
</intent-filter>
|
||||
|
||||
<meta-data android:name="unityplayer.UnityActivity" android:value="true" />
|
||||
</activity>
|
||||
<meta-data android:name="CHANNEL" android:value="Rustore" />
|
||||
</application>
|
||||
<queries>
|
||||
<provider android:authorities="com.facebook.katana.provider.PlatformProvider" /> <!-- allows app to access Facebook app features -->
|
||||
<provider android:authorities="com.facebook.orca.provider.PlatformProvider" /> <!-- allows sharing to Messenger app -->
|
||||
</queries>
|
||||
</manifest>
|
||||
9
ExtraPluginCfgs/Android/rustore/ChannelHelpers.java
Normal file
9
ExtraPluginCfgs/Android/rustore/ChannelHelpers.java
Normal file
@@ -0,0 +1,9 @@
|
||||
package com.unity3d.player;
|
||||
|
||||
public class ChannelHelpers {
|
||||
public static final String CHANNEL = "Rustore";
|
||||
|
||||
static void register() {
|
||||
// Rustore uses default behavior, no additional SDKHelper yet
|
||||
}
|
||||
}
|
||||
28
ExtraPluginCfgs/Android/rustore/ConfigManager.java
Normal file
28
ExtraPluginCfgs/Android/rustore/ConfigManager.java
Normal file
@@ -0,0 +1,28 @@
|
||||
package com.unity3d.player;
|
||||
|
||||
public class ConfigManager {
|
||||
// Common SDK parameters
|
||||
public static int SDK_APPID = 20587;
|
||||
public static String SDK_GAMEID = "20587";
|
||||
public static String SDK_PROJECTID = "20587";
|
||||
public static String SDK_CLOUDID = "128";
|
||||
public static String SDK_CLIENTID = "Android_5.00_tyGuest,facebook.googleplay.0-hall20587.rustore.FishingTravel";
|
||||
|
||||
public static String SDK_LOGIN_SERVER_URL = "https://128-hwsfsdk-sdk-online01.qijihdhk.com";
|
||||
|
||||
// FCM (anti-addiction system)
|
||||
public static String FCM_NAMESPACE = "128";
|
||||
public static String FCM_IAM_HOST = "tcp://fcmtcp.tuyoo.com:3563";
|
||||
public static String FCM_ANTISERVERURL = "https://fcmapi.tuyoo.com";
|
||||
|
||||
// Unity Facade callback names
|
||||
public static final String UNITY_FACADE_NAME = "TYSdkFacade";
|
||||
public static final String LOGIN_CALLBACK_FUNCTION_NAME = "LoginResult";
|
||||
public static final String LINKACCOUT_CALLBACK_FUNCTION_NAME = "LinkAccoutResult";
|
||||
public static final String CHANGELINK_CALLBACK_FUNCTION_NAME = "ChangeLinkAccountResult";
|
||||
public static final String CHECKLINK_CALLBACK_FUNCTION_NAME = "CheckLinkResult";
|
||||
public static final String PAY_CALLBACK_FUNCTION_NAME = "PayResult";
|
||||
public static final String PAY_TYPE_CALLBACK_FUNCTION_NAME = "SKUListResult";
|
||||
public static final String FCM_NOTICE_FUNCTION_NAME = "FCMCallback";
|
||||
public static final String FCM_REALNAME_CALLBACK_FUNCTION_NAME = "RealNameCallback";
|
||||
}
|
||||
Binary file not shown.
11
ExtraPluginCfgs/Android/rustore/gradleTemplate.properties
Normal file
11
ExtraPluginCfgs/Android/rustore/gradleTemplate.properties
Normal file
@@ -0,0 +1,11 @@
|
||||
org.gradle.jvmargs=-Xmx**JVM_HEAP_SIZE**M
|
||||
org.gradle.parallel=true
|
||||
unityStreamingAssets=**STREAMING_ASSETS**
|
||||
# Android Resolver Properties Start
|
||||
android.useAndroidX=true
|
||||
android.enableJetifier=true
|
||||
# Android Resolver Properties End
|
||||
|
||||
android.suppressUnsupportedCompileSdk=35
|
||||
|
||||
**ADDITIONAL_PROPERTIES**
|
||||
74
ExtraPluginCfgs/Android/rustore/launcherTemplate.gradle
Normal file
74
ExtraPluginCfgs/Android/rustore/launcherTemplate.gradle
Normal file
@@ -0,0 +1,74 @@
|
||||
apply plugin: 'com.android.application'
|
||||
apply plugin: 'com.google.gms.google-services'
|
||||
|
||||
dependencies {
|
||||
implementation project(':unityLibrary')
|
||||
implementation(platform("com.google.firebase:firebase-bom:33.6.0"))
|
||||
implementation("com.google.firebase:firebase-analytics")
|
||||
}
|
||||
|
||||
android {
|
||||
namespace "**NAMESPACE**"
|
||||
ndkPath "**NDKPATH**"
|
||||
|
||||
compileSdkVersion **APIVERSION**
|
||||
buildToolsVersion '**BUILDTOOLS**'
|
||||
|
||||
compileOptions {
|
||||
sourceCompatibility JavaVersion.VERSION_11
|
||||
targetCompatibility JavaVersion.VERSION_11
|
||||
|
||||
}
|
||||
|
||||
defaultConfig {
|
||||
minSdkVersion **MINSDKVERSION**
|
||||
targetSdkVersion **TARGETSDKVERSION**
|
||||
applicationId '**APPLICATIONID**'
|
||||
ndk {
|
||||
abiFilters **ABIFILTERS**
|
||||
}
|
||||
versionCode **VERSIONCODE**
|
||||
versionName '**VERSIONNAME**'
|
||||
|
||||
// ↓↓↓ 这里放你的 VK ID 占位符 ↓↓↓
|
||||
manifestPlaceholders = [
|
||||
VKIDRedirectHost : "vk.ru",
|
||||
VKIDRedirectScheme: "vk54432404",
|
||||
VKIDClientID : "54432404",
|
||||
VKIDClientSecret : "WD6BO0CwPXsKMaaFX8Qq"
|
||||
]
|
||||
}
|
||||
|
||||
aaptOptions {
|
||||
noCompress = **BUILTIN_NOCOMPRESS** + unityStreamingAssets.tokenize(', ')
|
||||
ignoreAssetsPattern = "!.svn:!.git:!.ds_store:!*.scc:!CVS:!thumbs.db:!picasa.ini:!*~"
|
||||
}**SIGN**
|
||||
|
||||
lintOptions {
|
||||
abortOnError false
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
debug {
|
||||
minifyEnabled **MINIFY_DEBUG**
|
||||
proguardFiles getDefaultProguardFile('proguard-android.txt')**SIGNCONFIG**
|
||||
jniDebuggable true
|
||||
}
|
||||
release {
|
||||
minifyEnabled **MINIFY_RELEASE**
|
||||
proguardFiles getDefaultProguardFile('proguard-android.txt')**SIGNCONFIG**
|
||||
}
|
||||
}**PACKAGING_OPTIONS****PLAY_ASSET_PACKS****SPLITS**
|
||||
**BUILT_APK_LOCATION**
|
||||
bundle {
|
||||
language {
|
||||
enableSplit = false
|
||||
}
|
||||
density {
|
||||
enableSplit = false
|
||||
}
|
||||
abi {
|
||||
enableSplit = true
|
||||
}
|
||||
}
|
||||
}**SPLITS_VERSION_CODE****LAUNCHER_SOURCE_BUILD_SETUP**
|
||||
131
ExtraPluginCfgs/Android/rustore/mainTemplate.gradle
Normal file
131
ExtraPluginCfgs/Android/rustore/mainTemplate.gradle
Normal file
@@ -0,0 +1,131 @@
|
||||
apply plugin: 'com.android.library'
|
||||
**APPLY_PLUGINS**
|
||||
|
||||
// Android Resolver Exclusions Start
|
||||
android {
|
||||
packagingOptions {
|
||||
exclude ('/lib/armeabi/*' + '*')
|
||||
exclude ('/lib/mips/*' + '*')
|
||||
exclude ('/lib/mips64/*' + '*')
|
||||
exclude ('/lib/x86/*' + '*')
|
||||
exclude ('/lib/x86_64/*' + '*')
|
||||
}
|
||||
}
|
||||
// Android Resolver Exclusions End
|
||||
android {
|
||||
namespace "com.unity3d.player"
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation fileTree(dir: 'libs', include: ['*.jar'])
|
||||
|
||||
api "com.android.support:support-v4:28.0.0"
|
||||
api "com.android.support:appcompat-v7:28.0.0"
|
||||
|
||||
api "com.google.code.gson:gson:2.8.6"
|
||||
api "com.squareup.okio:okio:1.15.0"
|
||||
api "com.squareup.okhttp3:okhttp:3.12.13"
|
||||
api "com.squareup.retrofit2:retrofit:2.3.0"
|
||||
api "com.squareup.retrofit2:converter-gson:2.2.0"
|
||||
api "com.squareup.retrofit2:adapter-rxjava:2.1.0"
|
||||
api "io.reactivex:rxandroid:1.2.1"
|
||||
api "io.reactivex:rxjava:1.1.9"
|
||||
|
||||
// Google Play In-App Review
|
||||
implementation 'com.google.android.play:review:2.0.1'
|
||||
implementation 'net.aihelp:android-aihelp-aar:5.3.+'
|
||||
|
||||
implementation 'com.google.android.gms:play-services-auth:20.2.0'
|
||||
implementation('com.android.billingclient:billing:6.0.1')
|
||||
|
||||
implementation 'com.google.android.gms:play-services-basement:18.2.0'
|
||||
implementation 'androidx.fragment:fragment:1.3.6'
|
||||
implementation "org.jetbrains.kotlin:kotlin-reflect:1.3.41"
|
||||
implementation 'org.jetbrains.kotlin:kotlin-stdlib:1.3.41'
|
||||
implementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.41'
|
||||
implementation 'org.jetbrains.kotlin:kotlin-android-extensions-runtime:1.3.41'
|
||||
implementation 'androidx.core:core:1.8.0'
|
||||
|
||||
implementation 'com.miui.referrer:homereferrer:1.0.0.6'
|
||||
|
||||
implementation platform('com.google.firebase:firebase-bom:32.7.4')
|
||||
implementation 'com.google.firebase:firebase-analytics'
|
||||
|
||||
implementation('com.facebook.android:facebook-android-sdk:16.2.0')
|
||||
|
||||
implementation 'com.google.android.play:asset-delivery:2.2.2'
|
||||
|
||||
implementation "androidx.credentials:credentials:1.3.0"
|
||||
implementation "androidx.credentials:credentials-play-services-auth:1.3.0"
|
||||
implementation "com.google.android.libraries.identity.googleid:googleid:1.1.1"
|
||||
|
||||
|
||||
implementation(platform("ru.rustore.sdk:bom:2025.11.01"))
|
||||
implementation("ru.rustore.sdk:pay")
|
||||
implementation "ru.rustore.sdk:review:10.0.0"
|
||||
implementation "com.vk.id:vkid:2.5.1"
|
||||
coreLibraryDesugaring "com.android.tools:desugar_jdk_libs:2.1.2"
|
||||
|
||||
// Android Resolver Dependencies Start
|
||||
implementation 'com.android.installreferrer:installreferrer:2.1' // Assets/AppsFlyer/Editor/AppsFlyerDependencies.xml:7
|
||||
implementation 'com.applovin.mediation:facebook-adapter:[6.18.0.1]' // Assets/MaxSdk/Mediation/Facebook/Editor/Dependencies.xml:8
|
||||
implementation 'com.applovin.mediation:fyber-adapter:8.4.2.0' // Assets/MaxSdk/Mediation/Fyber/Editor/Dependencies.xml:4
|
||||
implementation 'com.applovin.mediation:google-adapter:[23.6.0.1]' // Assets/MaxSdk/Mediation/Google/Editor/Dependencies.xml:5
|
||||
implementation 'com.applovin.mediation:ironsource-adapter:8.6.1.0.0' // Assets/MaxSdk/Mediation/IronSource/Editor/Dependencies.xml:8
|
||||
implementation 'com.applovin.mediation:unityads-adapter:4.12.3.0' // Assets/MaxSdk/Mediation/UnityAds/Editor/Dependencies.xml:4
|
||||
implementation 'com.applovin.mediation:vungle-adapter:7.4.2.2' // Assets/MaxSdk/Mediation/Vungle/Editor/Dependencies.xml:4
|
||||
implementation 'com.applovin:applovin-sdk:13.5.1' // Assets/MaxSdk/AppLovin/Editor/Dependencies.xml:4
|
||||
implementation 'com.appsflyer:af-android-sdk:6.17.3' // Assets/AppsFlyer/Editor/AppsFlyerDependencies.xml:5
|
||||
implementation 'com.appsflyer:purchase-connector:2.2.0' // Assets/AppsFlyer/Editor/AppsFlyerDependencies.xml:8
|
||||
implementation 'com.appsflyer:unity-wrapper:6.17.7' // Assets/AppsFlyer/Editor/AppsFlyerDependencies.xml:6
|
||||
implementation 'com.google.android.ump:user-messaging-platform:2.1.0' // Assets/MaxSdk/AppLovin/Editor/Dependencies.xml:5
|
||||
// Android Resolver Dependencies End
|
||||
**DEPS**}
|
||||
|
||||
// Android Resolver Exclusions Start
|
||||
android {
|
||||
packagingOptions {
|
||||
exclude ('/lib/armeabi/*' + '*')
|
||||
exclude ('/lib/mips/*' + '*')
|
||||
exclude ('/lib/mips64/*' + '*')
|
||||
exclude ('/lib/x86/*' + '*')
|
||||
exclude ('/lib/x86_64/*' + '*')
|
||||
}
|
||||
}
|
||||
// Android Resolver Exclusions End
|
||||
android {
|
||||
ndkPath "**NDKPATH**"
|
||||
|
||||
compileSdkVersion **APIVERSION**
|
||||
buildToolsVersion '**BUILDTOOLS**'
|
||||
|
||||
compileOptions {
|
||||
sourceCompatibility JavaVersion.VERSION_11
|
||||
targetCompatibility JavaVersion.VERSION_11
|
||||
coreLibraryDesugaringEnabled true
|
||||
}
|
||||
|
||||
defaultConfig {
|
||||
minSdkVersion **MINSDKVERSION**
|
||||
targetSdkVersion **TARGETSDKVERSION**
|
||||
ndk {
|
||||
abiFilters **ABIFILTERS**
|
||||
}
|
||||
|
||||
versionCode **VERSIONCODE**
|
||||
versionName '**VERSIONNAME**'
|
||||
consumerProguardFiles 'proguard-unity.txt'**USER_PROGUARD**
|
||||
}
|
||||
|
||||
lintOptions {
|
||||
abortOnError false
|
||||
}
|
||||
|
||||
aaptOptions {
|
||||
noCompress = **BUILTIN_NOCOMPRESS** + unityStreamingAssets.tokenize(', ')
|
||||
ignoreAssetsPattern = "!.svn:!.git:!.ds_store:!*.scc:!CVS:!thumbs.db:!picasa.ini:!*~"
|
||||
}**PACKAGING_OPTIONS**
|
||||
}
|
||||
**IL_CPP_BUILD_SETUP**
|
||||
**SOURCE_BUILD_SETUP**
|
||||
**EXTERNAL_SOURCES**
|
||||
46
ExtraPluginCfgs/Android/rustore/settingsTemplate.gradle
Normal file
46
ExtraPluginCfgs/Android/rustore/settingsTemplate.gradle
Normal file
@@ -0,0 +1,46 @@
|
||||
pluginManagement {
|
||||
repositories {
|
||||
**ARTIFACTORYREPOSITORY**
|
||||
gradlePluginPortal()
|
||||
google()
|
||||
mavenCentral()
|
||||
}
|
||||
}
|
||||
|
||||
include ':launcher', ':unityLibrary'
|
||||
**INCLUDES**
|
||||
|
||||
dependencyResolutionManagement {
|
||||
repositoriesMode.set(RepositoriesMode.PREFER_SETTINGS)
|
||||
repositories {
|
||||
**ARTIFACTORYREPOSITORY**
|
||||
google()
|
||||
mavenCentral()
|
||||
|
||||
maven{
|
||||
url "https://artifactory-external.vkpartner.ru/artifactory/vkid-sdk-android/"
|
||||
}
|
||||
maven{
|
||||
url "https://artifactory-external.vkpartner.ru/artifactory/maven/"
|
||||
}
|
||||
maven{
|
||||
url "https://artifactory-external.vkpartner.ru/artifactory/vk-id-captcha/android/"
|
||||
}
|
||||
|
||||
// Android Resolver Repos Start
|
||||
def unityProjectPath = $/file:///**DIR_UNITYPROJECT**/$.replace("\\", "/")
|
||||
maven {
|
||||
url "https://android-sdk.is.com/" // Assets/MaxSdk/Mediation/IronSource/Editor/Dependencies.xml:8
|
||||
}
|
||||
mavenLocal()
|
||||
// Android Resolver Repos End
|
||||
flatDir {
|
||||
dirs "${project(':unityLibrary').projectDir}/libs"
|
||||
}
|
||||
|
||||
maven {
|
||||
url "http://sdkck.tuyoo.com/artifactory/tuyoo-component/"
|
||||
allowInsecureProtocol = true
|
||||
}
|
||||
}
|
||||
}
|
||||
43
ExtraPluginCfgs/Android/switch-channel.sh
Normal file
43
ExtraPluginCfgs/Android/switch-channel.sh
Normal file
@@ -0,0 +1,43 @@
|
||||
#!/bin/bash
|
||||
# Usage: ./switch-channel.sh <channel>
|
||||
# channel: googleplay | flexion | rustore
|
||||
#
|
||||
# 切换渠道后重新用 Unity 打 Android 包即可打出对应渠道的 APK。
|
||||
# 脚本会同步:AAR、Gradle 配置、AndroidManifest、Java 文件(ConfigManager、ChannelHelpers 等)
|
||||
|
||||
CHANNEL=${1:-googleplay}
|
||||
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||
CHANNEL_DIR="$SCRIPT_DIR/$CHANNEL"
|
||||
PROJ_DIR="$SCRIPT_DIR/../../sdk-intergration"
|
||||
|
||||
TYSDK_PLUGINS="$PROJ_DIR/Packages/tysdk/Plugins/Android"
|
||||
ASSETS_PLUGINS="$PROJ_DIR/Assets/Plugins/Android"
|
||||
|
||||
# 校验渠道目录
|
||||
if [ ! -d "$CHANNEL_DIR" ]; then
|
||||
echo "ERROR: Unknown channel '$CHANNEL'. Available: googleplay, flexion, rustore"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "=== Switching to channel: $CHANNEL ==="
|
||||
|
||||
# 1. Sync channel AAR to tysdk package (only tuyoosdk, gasdk stays permanently)
|
||||
echo "[AAR] Syncing tuyoosdk to $TYSDK_PLUGINS"
|
||||
find "$TYSDK_PLUGINS" -maxdepth 1 -name "tuyoosdk_*.aar" -delete
|
||||
cp "$CHANNEL_DIR/Plugins/Android/"*.aar "$TYSDK_PLUGINS/" 2>/dev/null
|
||||
|
||||
# 2. Sync Gradle + Manifest to Assets/Plugins/Android
|
||||
echo "[Config] Syncing gradle/manifest to $ASSETS_PLUGINS"
|
||||
for f in "$CHANNEL_DIR"/*.gradle "$CHANNEL_DIR"/*.properties "$CHANNEL_DIR"/AndroidManifest.xml; do
|
||||
[ -f "$f" ] && cp "$f" "$ASSETS_PLUGINS/"
|
||||
done
|
||||
|
||||
# 3. Sync Java files to tysdk package
|
||||
echo "[Java] Syncing ConfigManager + ChannelHelpers to $TYSDK_PLUGINS"
|
||||
for f in "$CHANNEL_DIR"/*.java; do
|
||||
[ -f "$f" ] && cp "$f" "$TYSDK_PLUGINS/"
|
||||
done
|
||||
|
||||
echo "=== Done. Channel: $CHANNEL ==="
|
||||
echo ""
|
||||
echo "Next: Open Unity and build Android APK."
|
||||
Reference in New Issue
Block a user