update 1.1.25

This commit is contained in:
2024-03-12 02:17:14 +08:00
parent 5a00a4438a
commit 1a9e55a8a3
346 changed files with 1902 additions and 4759 deletions

View File

@@ -3,11 +3,12 @@ using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Xml.Linq;
using UnityEditor;
using UnityEngine;
using UnityEngine.Networking;
using AnyThink.Scripts.Assets;
// using AnyThink.Scripts.Assets;
using System.Text.RegularExpressions;
namespace AnyThink.Scripts.IntegrationManager.Editor
@@ -15,179 +16,212 @@ namespace AnyThink.Scripts.IntegrationManager.Editor
public class ATConfig
{
public static string PLUGIN_VERSION = "2.0.3";
public static string PLUGIN_VERSION = "2.1.0";
public static bool isDebug = false;
private static string LAST_SELECT_COUNTRY_KEY = "country_key"; //国家
public static int OS_ANDROID = 1;
public static int OS_IOS = 2;
public static int CHINA_COUNTRY = 1;
public static int NONCHINA_COUNTRY = 2;
public static string ANYTHINK_SDK_FILES_PATH = "Assets/AnyThinkAds";
//国内core aar包的父目录
public static string CHINA_ANDROID_CORE_FILES_PATH = "Assets/AnyThinkAds/Plugins/Android/China/anythink_base/";
public static string NONCHINA_ANDROID_CORE_FILES_PATH = "Assets/AnyThinkAds/Plugins/Android/NonChina/anythink_base/";
//国内Android network aar包的父目录
public static string CHINA_ANDROID_NETWORK_FILES_PARENT_PATH = "Assets/AnyThinkAds/Plugins/Android/China/mediation/";
//海外Android network 依赖文件的目录
public static string NONCHINA_ANDROID_NETWORK_FILES_PARENT_PATH = "Assets/AnyThinkAds/Plugins/Android/NonChina/mediation/";
//iOS network依赖文件的目录不区分国家
public static string IOS_NETWORK_FILES_PARENT_PATH = "Assets/AnyThinkAds/Plugins/iOS/";
public static string ANYTHINK_SDK_FILES_PATH = "Assets/AnyThinkPlugin/AnyThinkAds";
//国内Android core包的相关目录
public static string[] CHINA_ANDROID_CORE_FILES_ARRAY = {Path.Combine(ANYTHINK_SDK_FILES_PATH, "Plugins/Android/China/Editor"),
Path.Combine(ANYTHINK_SDK_FILES_PATH, "Plugins/Android/China/anythink_base"),
Path.Combine(ANYTHINK_SDK_FILES_PATH, "Plugins/Android/China/mediation_plugin")};
//海外Android core包的相关目录
public static string[] NON_CHINA_ANDROID_CORE_FILES_ARRAY = {Path.Combine(ANYTHINK_SDK_FILES_PATH, "Plugins/Android/NonChina/anythink_base"),
Path.Combine(ANYTHINK_SDK_FILES_PATH, "Plugins/Android/NonChina/Editor")};
//国内core aar包的父目录
public static string CHINA_ANDROID_CORE_FILES_PATH = Path.Combine(ANYTHINK_SDK_FILES_PATH, "Plugins/Android/China/anythink_base/");
public static string NONCHINA_ANDROID_CORE_FILES_PATH = Path.Combine(ANYTHINK_SDK_FILES_PATH, "Plugins/Android/NonChina/anythink_base/");
//国内Android network aar包的父目录
public static string CHINA_ANDROID_NETWORK_FILES_PARENT_PATH = Path.Combine(ANYTHINK_SDK_FILES_PATH, "Plugins/Android/China/mediation/");
//海外Android network 依赖文件的目录
public static string NONCHINA_ANDROID_NETWORK_FILES_PARENT_PATH = Path.Combine(ANYTHINK_SDK_FILES_PATH, "Plugins/Android/NonChina/mediation/");
//iOS network依赖文件的目录不区分国家
public static string IOS_NETWORK_FILES_PARENT_PATH = Path.Combine(ANYTHINK_SDK_FILES_PATH, "Plugins/iOS/China/");
public static string NONCHINA_IOS_NETWORK_FILES_PARENT_PATH = Path.Combine(ANYTHINK_SDK_FILES_PATH, "Plugins/iOS/NonChina/");
//network json文件名
public static string network_data_file_name = "network_data.json";
//插件设置的数据
private static string plugin_setting_data_path = "Assets/AnyThinkPlugin/Resources/json/" + PLUGIN_VERSION;
private static string plugin_setting_data_file_name = "plugin_setting_data.json";
//保存插件设置的数据保存时机安装core包、选择国家、切换SDK、androidX设置发生变化时
public static void savePluginSettingData(PluginSettingData settingData)
{
var directoryPath = plugin_setting_data_path;
// 确保目标文件夹存在
if (!Directory.Exists(directoryPath))
{
// 如果目录不存在,则创建它
Directory.CreateDirectory(directoryPath);
}
string fullPath = Path.Combine(directoryPath, plugin_setting_data_file_name);
string settingDataStr = JsonUtility.ToJson(settingData);
ATLog.log("savePluginSettingData() >>> fullPath: " + fullPath + " settingDataStr: " + settingDataStr);
File.WriteAllText(fullPath, settingDataStr);
}
//获取插件设置的数据
public static PluginSettingData getPluginSettingData()
{
string fullPath = Path.Combine(plugin_setting_data_path, plugin_setting_data_file_name);
if (!File.Exists(fullPath)) {
return null;
}
string json = File.ReadAllText(fullPath);
if(json == "") {
return null;
}
return JsonUtility.FromJson<PluginSettingData>(json);
}
public static bool removeSdk(int country, int os) {
string path = ANYTHINK_SDK_FILES_PATH + "/Plugins";
if (os == OS_ANDROID) {
path = path + "/Android";
} else {
path = path + "/iOS";
}
if (country == CHINA_COUNTRY) {
path = path + "/China";
} else {
path = path + "/NonChina";
}
if (Directory.Exists(path)) {
FileUtil.DeleteFileOrDirectory(path);
}
if (File.Exists(path + ".meta")) {
FileUtil.DeleteFileOrDirectory(path + ".meta");
}
return true;
}
//移除本地的network
public static bool removeInstalledNetwork(Network network, int os)
{
//修改sdk的配置
if (isCoreNetwork(network.Name) && os == OS_ANDROID) {
var paths = CHINA_ANDROID_CORE_FILES_ARRAY;
if (network.Country == NONCHINA_COUNTRY) {
paths = NON_CHINA_ANDROID_CORE_FILES_ARRAY;
}
foreach(string p in paths) {
if (Directory.Exists(p)) {
FileUtil.DeleteFileOrDirectory(p);
}
if (File.Exists(p + ".meta")) {
FileUtil.DeleteFileOrDirectory(p + ".meta");
}
}
return true;
}
var path = getAndroidNetworkPath(network);
if (os == OS_IOS) {
path = getIosNetworkPath(network);
}
if (Directory.Exists(path)) {
FileUtil.DeleteFileOrDirectory(path);
if (File.Exists(path + ".meta")) {
FileUtil.DeleteFileOrDirectory(path + ".meta");
}
}
return true;
}
// 保存已安装的network到本地
public static void saveInstalledNetworkVersion(string networkName, Versions v)
public static void saveInstalledNetworkVersion(Network network, int os)
{
Versions versions = v.clone();
int country = getLocalCountry();
ATLog.log("saveInstalledNetworkVersion() >>> networkName: " + networkName + " unity: " + versions.Unity);
versions = initUnityForVerions(versions, networkName, country);
string jsonStr = JsonUtility.ToJson(versions);
string key = networkName + "_" + country;
// ATConfigAsset2.Instance.saveInstalledNetworkVersion(key, jsonStr);
PlayerPrefs.SetString(key, jsonStr);
}
//获取已安装的network版本包括core network
public static Versions getInstalledNetworkVersion(string networkName, int country)
{
Versions versions = null;
string sdkJson = string.Empty;
string key = networkName + "_" + country;
// sdkJson = ATConfigAsset2.Instance.getInstalledNetworkVersion(key);
sdkJson = PlayerPrefs.GetString(key);
ATLog.log("getInstalledNetworkVersion() >>> key: " + key + " sdkJson: " + sdkJson + " country: " + country);
if (sdkJson == null || sdkJson.Length == 0)
{
//适配旧版本插件避免直接升级SDK
// if (PlayerPrefs.HasKey(key)) {
// sdkJson = PlayerPrefs.GetString(key);
// PlayerPrefs.DeleteKey(key);
// } else {
// return null;
// }
return null;
if (isCoreNetwork(network.Name)) {
return;
}
versions = JsonUtility.FromJson<Versions>(sdkJson);
versions = initUnityForVerions(versions, networkName, country);
return versions;
}
var networkDataFileName = network_data_file_name;
var networkName = network.Name.ToLower();
int country = network.Country;
var installedVersions = network.CurrentVersions;
if (installedVersions != null) {
if (os == OS_ANDROID) {
var android_version = installedVersions.Android;
//Android
if (!string.IsNullOrEmpty(android_version)) {
var networkPath = getAndroidNetworkPath(network);
ATLog.log("saveInstalledNetworkVersion() >>> android networkPath: " + networkPath + " exist: " + Directory.Exists(networkPath));
if (Directory.Exists(networkPath)) {
string fullPath = Path.Combine(networkPath, networkDataFileName);
var networkData = new NetworkLocalData();
networkData.name = networkName;
networkData.country = country;
networkData.version = android_version;
networkData.path = networkPath;
public static int getLocalCountry()
{
string key = LAST_SELECT_COUNTRY_KEY;
//适配旧版本插件避免直接升级SDK
// if (PlayerPrefs.HasKey(key)) {
// int country = PlayerPrefs.GetInt(key);
// saveLocalCountry(country);
// PlayerPrefs.DeleteKey(key);
// }
// return ATConfigAsset2.Instance.LocalCountry;
return PlayerPrefs.GetInt(key, CHINA_COUNTRY);
}
File.WriteAllText(fullPath, JsonUtility.ToJson(networkData));
}
}
} else {
//iOS
var ios_version = installedVersions.Ios;
if (!string.IsNullOrEmpty(ios_version)) {
var networkPath = getIosNetworkPath(network);
ATLog.log("saveInstalledNetworkVersion() >>> ios networkPath: " + networkPath);
if (Directory.Exists(networkPath)) {
string fullPath = Path.Combine(networkPath, networkDataFileName);
var networkData = new NetworkLocalData();
networkData.name = networkName;
networkData.country = country;
networkData.version = ios_version;
networkData.path = networkPath;
public static void saveLocalCountry(int country)
{
// ATConfigAsset2.Instance.LocalCountry = country;
PlayerPrefs.SetInt(LAST_SELECT_COUNTRY_KEY, country);
}
public static void removeInstalledNetworkVersion(string networkName, int country)
{
string key = networkName + "_" + country;
if (PlayerPrefs.HasKey(key)) {
PlayerPrefs.DeleteKey(key);
}
ATLog.log("removeInstalledNetworkVersion() >>> networkName: " + networkName + " country: " + country);
// ATConfigAsset2.Instance.removeInstalledNetworkVersion(key);
}
private static Versions initUnityForVerions(Versions versions, string networkName, int country)
{
if (versions == null)
{
return null;
}
//查找本地的android、iOS是否都已安装
string androidPath = getAndroidNetworkPath(networkName, country);
bool androidInstalled = isInstalledByPath(androidPath);
string iosPath = getIosNetworkPath(networkName);
bool iosInstalled = isInstalledByPath(iosPath);
if (!androidInstalled && iosInstalled)
{
// versions.Android = "";
versions.Unity = string.Format("ios_{0}", versions.Ios);
}
else if (androidInstalled && !iosInstalled)
{
// versions.Ios = "";
versions.Unity = string.Format("android_{0}", versions.Android);
}
else if (!androidInstalled && !iosInstalled)
{
versions.Unity = "";
}
//core network的unity版本是插件版本
if (networkName.Equals(ATIntegrationManager.AnyThinkNetworkName))
{
versions.Unity = ATConfig.PLUGIN_VERSION;
}
ATLog.log("initUnityForVerions() >>> networkName: " + networkName + " androidInstalled: " + androidInstalled + " iosInstalled: " + iosInstalled + " unity: " + versions.Unity);
return versions;
}
public static bool isNetworkInstalled(string networkName, int country)
{
Versions versions = getInstalledNetworkVersion(networkName, country);
if (versions == null)
{
return false;
}
if (networkName.Equals(ATIntegrationManager.AnyThinkNetworkName)) //core network判断是否已安装
{
string androidPath = getAndroidNetworkPath(networkName, country);
bool androidInstalled = isInstalledByPath(androidPath);
string iosPath = getIosNetworkPath(networkName);
bool iosInstalled = isInstalledByPath(iosPath);
return androidInstalled && iosInstalled;
} else { //network判断是否已安装
return !string.IsNullOrEmpty(versions.Unity);
File.WriteAllText(fullPath, JsonUtility.ToJson(networkData));
}
}
}
}
}
public static bool isAndroidNetworkInstalled(string networkName, int country)
{
Versions versions = getInstalledNetworkVersion(networkName, country);
if (versions == null)
{
return false;
//Core 是否已安装
public static bool isCoreNetworkInstalled(PluginSettingData pluginSettingData, int os) {
var countrySettingData = pluginSettingData.getCountrySettingData();
if (os == OS_ANDROID) {
return !string.IsNullOrEmpty(countrySettingData.android_version);
} else {
return !string.IsNullOrEmpty(countrySettingData.ios_version);
}
string androidPath = getAndroidNetworkPath(networkName, country);
bool androidInstalled = isInstalledByPath(androidPath);
return androidInstalled;
}
public static bool isIOSNetworkInstalled(string networkName, int country)
//Network是否已安装
public static bool isNetworkInstalled(Network network, int os)
{
Versions versions = getInstalledNetworkVersion(networkName, country);
if (versions == null)
{
return false;
if (isCoreNetwork(network.Name)) {
var pluginSettingData = getPluginSettingData();
return isCoreNetworkInstalled(pluginSettingData, os);
}
string iosPath = getIosNetworkPath(networkName);
bool iosInstalled = isInstalledByPath(iosPath);
return iosInstalled;
var path = getIosNetworkPath(network);
if (os == OS_ANDROID) {
path = getAndroidNetworkPath(network);
}
return File.Exists(Path.Combine(path, network_data_file_name));
}
private static string getAndroidNetworkPath(string networkName, int country)
//Network是否已安装根据name
public static bool isNetworkInstalledByName(string name, int os)
{
if (networkName.Equals(ATIntegrationManager.AnyThinkNetworkName))
var pluginSettingData = getPluginSettingData();
if (pluginSettingData != null) {
var country = pluginSettingData.curCountry;
var network = new Network();
network.Name = name;
network.Country = country;
return isNetworkInstalled(network, os);
}
return false;
}
private static string getAndroidNetworkPath(Network network)
{
var networkName = network.Name.ToLower();
var country = network.Country;
if (isCoreNetwork(networkName))
{
return country == CHINA_COUNTRY ? CHINA_ANDROID_CORE_FILES_PATH : NONCHINA_ANDROID_CORE_FILES_PATH;
}
@@ -197,82 +231,144 @@ public static bool isDebug = false;
}
}
private static string getIosNetworkPath(string networkName)
private static string getIosNetworkPath(Network network)
{
string defaultResult = IOS_NETWORK_FILES_PARENT_PATH + networkName.ToLower();
if (networkName.Equals(ATIntegrationManager.AnyThinkNetworkName))
{
return IOS_NETWORK_FILES_PARENT_PATH + networkName; //Core network在本地的目录名称首字母是大写
}
// else if (networkName.Equals("Pangle"))
var networkName = network.Name.ToLower();
var country = network.Country;
// if (isCoreNetwork(networkName))
// {
// //获取SDK版本
// // Network coreNework = ATPluginSetting.Instance.CoreNetwork;
// // if (coreNework != null && coreNework.CurrentVersions != null)
// // {
// // string iosSdkVersion = coreNework.CurrentVersions.Ios;
// // string compareVersion = "6.1.78";
// // ATLog.log("getIosNetworkPath() >>> iosSdkVersion: " + iosSdkVersion);
// // VersionComparisonResult comparisonResult = ATDataUtil.CompareVersions(iosSdkVersion, compareVersion);
// // if (comparisonResult == VersionComparisonResult.Lesser) //小于6.1.78
// // {
// // string pangleName = isSelectedChina() ? "pangle_China" : "pangle_nonChina";
// // ATLog.log("getIosNetworkPath() >>> pangleName: " + pangleName);
// // return IOS_NETWORK_FILES_PARENT_PATH + pangleName;
// // }
// // }
// string pangleName = isSelectedChina() ? "pangle_China" : "pangle_nonChina";
// // ATLog.log("getIosNetworkPath() >>> pangleName: " + pangleName);
// return IOS_NETWORK_FILES_PARENT_PATH + pangleName;
// return IOS_NETWORK_FILES_PARENT_PATH;
// } else {
// }
else if (networkName.Equals("MyTarget"))
{
return IOS_NETWORK_FILES_PARENT_PATH + networkName;
return country == CHINA_COUNTRY ? IOS_NETWORK_FILES_PARENT_PATH + networkName : NONCHINA_IOS_NETWORK_FILES_PARENT_PATH + networkName;
}
public static int getSelectedCountry() {
var pluginSettingData = getPluginSettingData();
if (pluginSettingData != null) {
return pluginSettingData.curCountry;
}
return defaultResult;
return CHINA_COUNTRY;
}
public static bool isSelectedChina()
{
return getLocalCountry() == CHINA_COUNTRY;
public static bool isCoreNetwork(string networkName) {
return Equals(networkName.ToLower(), ATIntegrationManager.AnyThinkNetworkName.ToLower());
}
public static string[] getNetworkFilesPath(string networkName, int country)
{
// if (networkName.Equals(ATIntegrationManager.AnyThinkNetworkName)) {
// return new string[]{ANYTHINK_SDK_FILES_PATH};
// }
string[] filesPath = new string[2];
filesPath[0] = getAndroidNetworkPath(networkName, country);
filesPath[1] = getIosNetworkPath(networkName);
return filesPath;
}
//查找本地是否有已安装network并进行版本赋值
public static void initNetworkLocalData(Network network) {
var networkDataFileName = network_data_file_name;
var androidPath = getAndroidNetworkPath(network);
var iosPath = getIosNetworkPath(network);
private static bool isInstalledByPath(string path)
{
if (Directory.Exists(path))
{
string[] files = Directory.GetFiles(path);
return files != null && files.Length > 0;
var androidDataFile = Path.Combine(androidPath, networkDataFileName);
var iosDataFile = Path.Combine(iosPath, networkDataFileName);
var curVersions = network.CurrentVersions;
if (curVersions == null) {
curVersions = new Versions();
}
return false;
if (File.Exists(androidDataFile)) {
string a_json = File.ReadAllText(androidDataFile);
var a_data = JsonUtility.FromJson<NetworkLocalData>(a_json);
curVersions.Android = a_data.version;
}
if (File.Exists(iosDataFile)) {
string i_json = File.ReadAllText(iosDataFile);
var i_data = JsonUtility.FromJson<NetworkLocalData>(i_json);
curVersions.Ios = i_data.version;
}
network.CurrentVersions = curVersions;
}
// private void OnEnable()
// {
// EditorApplication.quitting += Save;
// }
//当前是否选择国内地区
public static bool isSelectedChina() {
var pluginSettingData = getPluginSettingData();
if (pluginSettingData != null) {
return pluginSettingData.curCountry == CHINA_COUNTRY;
}
return true;
}
// private void OnDisable()
// {
// EditorApplication.quitting -= Save;
// }
//获取admob app id
public static string getAdmobAppIdByOs(int os) {
var pluginSettingData = getPluginSettingData();
var settingData = pluginSettingData.getCountrySettingData();
return settingData.getAdmobAppId(os);
}
// private void Save()
// {
// // EditorPrefs.SetInt("MySetting", 1); // 保存您的EditorPrefs数据
// PlayerPrefs.Save(); // 确保数据已被保存到磁盘上
// }
public static bool enableAndroidX() {
var pluginSettingData = getPluginSettingData();
return pluginSettingData.getCountrySettingData().enableAndroidX;
}
//获取默认选中的地区
public static int getDefCountry() {
string version = PLUGIN_VERSION;
int lastIndex = version.LastIndexOf('.');
if (lastIndex != -1)
{
//2.1.0是区分国内海外的插件2.1.01:后缀多了1是只有海外的插件
string lastPart = version.Substring(lastIndex + 1);
if (lastPart.Length == 2) {
return NONCHINA_COUNTRY;
}
}
return CHINA_COUNTRY;
}
public static string[] getCountryArray() {
// new string[] { "ChinaMainland", "Overseas" }
string version = PLUGIN_VERSION;
int lastIndex = version.LastIndexOf('.');
if (lastIndex != -1)
{
//2.1.0是区分国内海外的插件2.1.01:后缀多了1是只有海外的插件
string lastPart = version.Substring(lastIndex + 1);
if (lastPart.Length == 2) {
return new string[] { "Overseas" };
}
}
return new string[] { "ChinaMainland", "Overseas" };
}
public static string getRegionIntegrateTip()
{
//Tips: If ChinaMainland and Oversea are integrated at the same time, there will be compilation conflicts, whether it is Android or iOS platform.
//Currently, the Android platform integrates ChinaMainland and Oversea at the same time, which may cause compilation errors or other errors.
var pluginSettingData = getPluginSettingData();
if (pluginSettingData == null) {
return "";
}
var sb = new StringBuilder();
sb.Append("Tips: Currently, ");
var android_tip = false;
if (pluginSettingData.isBothInstallAndroid()) {
sb.Append("the Android platform ");
android_tip = true;
}
var ios_tip = false;
if (pluginSettingData.isBothInstallIOS()) {
if (android_tip) {
sb.Append("and ");
}
sb.Append("iOS platform ");
ios_tip = true;
}
if (android_tip || ios_tip) {
sb.Append("integrates ChinaMainland and Oversea at the same time, which may cause compilation error or other errors.");
return sb.ToString();
} else {
return "";
}
}
}
}