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

@@ -11,6 +11,8 @@ using UnityEngine;
using UnityEngine.Networking;
using UnityEditor.PackageManager.Requests;
using UnityEditor.PackageManager;
using System.Threading.Tasks;
using System.Threading;
namespace AnyThink.Scripts.IntegrationManager.Editor
{
@@ -18,15 +20,13 @@ namespace AnyThink.Scripts.IntegrationManager.Editor
{
public static ATIntegrationManager Instance = new ATIntegrationManager();
private UnityWebRequest downloadPluginRequest;
// private UnityWebRequest downloadPluginRequest;
private const string AnyThinkAds = "AnyThinkAds";
//AnyThink的unity插件
public static string AnyThinkNetworkName = "Core";
private const string ATSdkAssetExportPath = "AnyThinkAds/Script/";
public static readonly string GradleTemplatePath = Path.Combine("Assets/Plugins/Android", "mainTemplate.gradle");
public static readonly string DefaultPluginExportPath = Path.Combine("Assets", AnyThinkAds);
private PluginData mPluginData;
private ATIntegrationManager()
{
@@ -35,57 +35,14 @@ namespace AnyThink.Scripts.IntegrationManager.Editor
public void CancelDownload()
{
if (downloadPluginRequest == null) return;
// if (downloadPluginRequest == null) return;
downloadPluginRequest.Abort();
}
public IEnumerator loadNetworksData(PluginData pluginData, Action<PluginData> callback)
{
if (pluginData == null)
{
callback(null);
}
else
{
var networksRequest = UnityWebRequest.Get(ATNetInfo.getNetworkListUrl(pluginData.networkUrlVersion));
var webRequest = networksRequest.SendWebRequest();
while (!webRequest.isDone)
{
yield return new WaitForSeconds(0.1f);
}
#if UNITY_2020_1_OR_NEWER
if (networksRequest.result != UnityWebRequest.Result.Success)
#elif UNITY_2017_2_OR_NEWER
if (networksRequest.isNetworkError || networksRequest.isHttpError)
#else
if (networksRequest.isError)
#endif
{
Debug.Log("loadNetworksData failed.");
callback(pluginData);
}
else
{
//解析network列表的版本数据
string netowrksJson = networksRequest.downloadHandler.text;
pluginData.mediatedNetworks = ATDataUtil.parseNetworksJson(pluginData, netowrksJson);
//初始化AnyThink的core network
Network coreNetwork = ATPluginSetting.Instance.CoreNetwork;
if (coreNetwork != null)
{
pluginData.anyThink = coreNetwork;
}
ATLog.log("loadNetworksData() >>> mediatedNetworks: " + pluginData.mediatedNetworks);
callback(pluginData);
}
}
// downloadPluginRequest.Abort();
}
public IEnumerator loadPluginData(Action<PluginData> callback)
{
var anythinkVersionRequest = UnityWebRequest.Get(ATNetInfo.getPluginConfigUrl());
var anythinkVersionRequest = UnityWebRequest.Get(ATNetInfo.getPluginConfigUrl(ATConfig.PLUGIN_VERSION));
var webRequest = anythinkVersionRequest.SendWebRequest();
while (!webRequest.isDone)
{
@@ -108,60 +65,55 @@ namespace AnyThink.Scripts.IntegrationManager.Editor
//解析Anythink的版本数据
string anythinkVersionJson = anythinkVersionRequest.downloadHandler.text;
PluginData pluginData = ATDataUtil.parsePluginDataJson(anythinkVersionJson);
Debug.Log("loadPluginData succeed. country: " + pluginData.country);
Debug.Log("loadPluginData succeed. country: " + pluginData.country + " androidVersions: "
+ pluginData.androidVersions + " iosVersions: " + pluginData.iosVersions);
mPluginData = pluginData;
callback(pluginData);
}
}
//默认下载core包在下载完network的数据时。
public void downloadCorePlugin(PluginData pluginData)
public IEnumerator loadNetworksData(PluginData pluginData, Action<PluginData> callback)
{
Network network = pluginData.anyThink;
int country = pluginData.country;
if (network == null)
{
return;
}
ATLog.log("downloadCorePlugin() >>> networkName: " + network.Name + " country: " + country);
bool isInstalled = ATConfig.isNetworkInstalled(network.Name, country);
ATLog.log("downloadCorePlugin() >>> isInstalled: " + isInstalled);
if (!isInstalled)
{
downloadPlugin(network);
// ATEditorCoroutine.startCoroutine(downloadPluginWithEnumerator(network, false));
} else {
handlerVersionAdapter(pluginData);
}
}
public void networkInstallOrUpdate(PluginData pluginData, Network network)
{
bool uninstall = true;
if (pluginData != null)
Network network = pluginData.anyThink;
if (pluginData == null)
{
Network coreNetwork = pluginData.anyThink;
if (coreNetwork != null)
{
if (coreNetwork.isReqiureUpdate()) //network有更新并且core包也有更新则更新core包然后core包更新完会自动去更新全部network
{
uninstall = false;
network = coreNetwork;
}
}
callback(null);
}
int country = ATConfig.getLocalCountry();
if (ATConfig.isNetworkInstalled(network.Name, country))
{
if (uninstall)
{
uninstallNetwork(network, country);
}
downloadPlugin(network);
else if (pluginData.requestParams == null) {
ATLog.log("loadNetworksData() >>> pluginData.requestParams is null");
callback(pluginData);
}
else
{
downloadPlugin(network);
var networksRequest = UnityWebRequest.Get(ATNetInfo.getNetworkListUrl(ATConfig.PLUGIN_VERSION));
var webRequest = networksRequest.SendWebRequest();
while (!webRequest.isDone)
{
yield return new WaitForSeconds(0.1f);
}
#if UNITY_2020_1_OR_NEWER
if (networksRequest.result != UnityWebRequest.Result.Success)
#elif UNITY_2017_2_OR_NEWER
if (networksRequest.isNetworkError || networksRequest.isHttpError)
#else
if (networksRequest.isError)
#endif
{
Debug.Log("loadNetworksData failed.");
callback(pluginData);
}
else
{
//解析network列表的版本数据
string netowrksJson = networksRequest.downloadHandler.text;
ATLog.log("loadNetworksData() >>> netowrksJson: " + netowrksJson);
pluginData.mediatedNetworks = ATDataUtil.parseNetworksJson(pluginData, netowrksJson);
ATLog.log("loadNetworksData() >>> mediatedNetworks: " + pluginData.mediatedNetworks);
mPluginData = pluginData;
callback(pluginData);
}
}
}
@@ -171,28 +123,32 @@ namespace AnyThink.Scripts.IntegrationManager.Editor
/// <param name="network">Network for which to download the current version.</param>
/// <param name="showImport">Whether or not to show the import window when downloading. Defaults to <c>true</c>.</param>
/// <returns></returns>
public void downloadPlugin(Network network, bool showImport = true)
public void downloadPlugin(Network network, int os =1, bool showImport = false)
{
ATEditorCoroutine.startCoroutine(downloadPluginWithEnumerator(network, showImport));
ATEditorCoroutine.startCoroutine(downloadPluginWithEnumerator(network, os, showImport));
}
public IEnumerator downloadPluginWithEnumerator(Network network, bool showImport = true)
public IEnumerator downloadPluginWithEnumerator(Network network, int os, bool showImport)
{
ATLog.log("downloadPluginWithEnumerator() >>> network: " + network);
if (downloadPluginRequest != null)
{
downloadPluginRequest.Dispose();
}
var path = Path.Combine(Application.temporaryCachePath, ATAssetDatabaseManager.Instance.GetPluginFileName(network));
ATLog.log("downloadPluginWithEnumerator() >>> networkName: " + network.Name + " os: " + os);
// if (downloadPluginRequest != null)
// {
// downloadPluginRequest.Dispose();
// }
var path = Path.Combine(Application.temporaryCachePath, network.PluginFileName);
ATLog.log("downloadPluginWithEnumerator() >>> path: " + path);
#if UNITY_2017_2_OR_NEWER
var downloadHandler = new DownloadHandlerFile(path);
#else
var downloadHandler = new ATDownloadHandler(path);
#endif
downloadPluginRequest = new UnityWebRequest(network.DownloadUrl)
var downloadUrl = network.AndroidDownloadUrl;
if (os == ATConfig.OS_IOS)
{
method = UnityWebRequest.kHttpVerbGET,
downloadUrl = network.iOSDownloadloadUrl;
}
UnityWebRequest downloadPluginRequest = new UnityWebRequest(downloadUrl)
{ method = UnityWebRequest.kHttpVerbGET,
downloadHandler = downloadHandler
};
@@ -206,7 +162,8 @@ namespace AnyThink.Scripts.IntegrationManager.Editor
yield return new WaitForSeconds(0.1f); // Just wait till downloadPluginRequest is completed. Our coroutine is pretty rudimentary.
if (operation.progress != 1 && operation.isDone)
{
CallDownloadPluginProgressCallback(network.DisplayName, operation.progress, operation.isDone);
// CallDownloadPluginProgressCallback(network.DisplayName, operation.progress, operation.isDone, os);
UpdateCurrentVersions(network, os);
}
}
@@ -222,273 +179,270 @@ namespace AnyThink.Scripts.IntegrationManager.Editor
}
else
{
CallDownloadPluginProgressCallback(network.DisplayName, 1, true);
// importingNetwork = network;
ATAssetDatabaseManager.Instance.importingNetwork = network;
AssetDatabase.Refresh();
AssetDatabase.ImportPackage(path, showImport);
UpdateCurrentVersions(network, os);
AssetDatabase.Refresh();
}
downloadPluginRequest.Dispose();
downloadPluginRequest = null;
}
private static void CallDownloadPluginProgressCallback(string pluginName, float progress, bool isDone)
{
var callback = ATAssetDatabaseManager.Instance.downloadPluginProgressCallback;
if (callback == null) return;
//默认下载core包在下载完network的数据时。
public void downloadCorePlugin(PluginData pluginData)
{
mPluginData = pluginData;
var requestParams = pluginData.requestParams;
var pluginSettingData = pluginData.pluginSettingData;
callback(pluginName, progress, isDone);
bool isIosInstalled = ATConfig.isCoreNetworkInstalled(pluginSettingData, ATConfig.OS_IOS);
bool isAndroidInstalled = ATConfig.isCoreNetworkInstalled(pluginSettingData, ATConfig.OS_ANDROID);
ATLog.log("downloadCorePlugin() >>> isIosInstalled: " + isIosInstalled + " isAndroidInstalled: " + isAndroidInstalled);
Network network = pluginData.anyThink;
int os = requestParams.os;
if (os == ATConfig.OS_ANDROID) {
if (!isAndroidInstalled) {
downloadPlugin(network, os);
} else {
//判断是否需要切换SDK
var latestVersions = network.LatestVersions;
var curVersion = network.CurrentVersions;
if (latestVersions.Android != curVersion.Android) {
//先删除掉core包
ATConfig.removeSdk(pluginData.country, os);
removeNetworkVersions(pluginData, os);
//赋值当前版本为空
curVersion.Android = "";
//重新下载core包
downloadPlugin(network, os);
//重新下载已安装的network
redownloadNetworksPlugin(pluginData, os);
}
}
} else if (os == ATConfig.OS_IOS){
if (!isIosInstalled) {
downloadPlugin(network, os);
} else {
//判断是否需要切换SDK
var latestVersions = network.LatestVersions;
var curVersion = network.CurrentVersions;
if (latestVersions.Ios != curVersion.Ios) {
//先删除掉core包
ATConfig.removeSdk(pluginData.country, os);
removeNetworkVersions(pluginData, os);
//赋值当前版本为空
curVersion.Ios = "";
//重新下载core包
downloadPlugin(network, os);
//重新下载已安装的network
redownloadNetworksPlugin(pluginData, os);
}
}
}
}
// private static void CallImportPackageCompletedCallback(Network network)
// {
// ATLog.log("CallImportPackageCompletedCallback() >>> network: " + network);
// if (network != null)
// {
// ATConfig.saveInstalledNetworkVersion(network.Name, network.LatestVersions);
// }
// var callback = ATAssetDatabaseManager.Instance.importPackageCompletedCallback;
// if (callback == null) return;
// callback(network);
// }
//更新network已安装的版本
public void UpdateCurrentVersions(Network network)
{
if (network == null)
{
//当切换SDK版本时需要重新下载已安装的network
private void redownloadNetworksPlugin(PluginData pluginData, int os) {
var mediatedNetworks = pluginData.mediatedNetworks;
var needInstallNetworkList = new List<Network>();
foreach(Network network in mediatedNetworks) {
var currentVersion = network.CurrentVersions;
if (currentVersion != null) {
if (os == ATConfig.OS_ANDROID) {
if (!string.IsNullOrEmpty(currentVersion.Android)) {
needInstallNetworkList.Add(network);
}
} else {
if (!string.IsNullOrEmpty(currentVersion.Ios)) {
needInstallNetworkList.Add(network);
}
}
}
}
if (needInstallNetworkList.Count() == 0) {
return;
}
bool isCoreNetwork = network.Name.Equals(AnyThinkNetworkName);
Versions curVerions = ATConfig.getInstalledNetworkVersion(network.Name, ATConfig.getLocalCountry());
network.CurrentVersions = curVerions;
network.CurrentToLatestVersionComparisonResult = ATDataUtil.getVersionComparisonResult(curVerions, network.LatestVersions, !isCoreNetwork);
// if (isCoreNetwork)
// {
// network.CurrentVersions.Unity = ATConfig.PLUGIN_VERSION;
// }
ATLog.log("UpdateCurrentVersions() >>> Name: " + network.Name + " latest Unity Version: " + network.LatestVersions.Unity);
Thread.Sleep(500);
ATEditorCoroutine.startCoroutine(UpgradeAllNetworks(needInstallNetworkList, os));
}
public void uninstallNetwork(Network network, int country)
{
foreach (var filePath in ATConfig.getNetworkFilesPath(network.Name, country))
private IEnumerator UpgradeAllNetworks(List<Network> networks, int os) {
EditorApplication.LockReloadAssemblies();
foreach (var network in networks)
{
if (Directory.Exists(filePath))
{
FileUtil.DeleteFileOrDirectory(filePath);
yield return downloadPluginWithEnumerator(network, os, false);
}
EditorApplication.UnlockReloadAssemblies();
}
public void networkInstallOrUpdate(PluginData pluginData, Network network, int os)
{
downloadPlugin(network, os);
}
//更新network已安装的版本
private void UpdateCurrentVersions(Network network, int os)
{
var latestVersions = network.LatestVersions;
var versions = network.CurrentVersions;
if (versions == null) {
versions = new Versions();
}
if (os == ATConfig.OS_ANDROID) {
versions.Android = latestVersions.Android;
} else {
versions.Ios = latestVersions.Ios;
}
network.CurrentVersions = versions;
// await Task.Delay(1000);
Thread.Sleep(1000);
//下面的逻辑会延迟一秒后执行确保unitypackage先解压到本地
ATConfig.saveInstalledNetworkVersion(network, os);
ATLog.log("UpdateCurrentVersions() >>> AndroidVersion: " + versions.Android);
//保存Core Networkde
if (ATConfig.isCoreNetwork(network.Name)) {
var countrySettingData = mPluginData.pluginSettingData.getCountrySettingData();
if (os == ATConfig.OS_ANDROID) {
countrySettingData.android_version = latestVersions.Android;
} else {
countrySettingData.ios_version = latestVersions.Ios;
}
if (File.Exists(filePath + ".meta"))
{
FileUtil.DeleteFileOrDirectory(filePath + ".meta");
ATConfig.savePluginSettingData(mPluginData.pluginSettingData);
}
// ATLog.log("UpdateCurrentVersions() >>> Name: " + network.Name + " latest Unity Version: " + network.LatestVersions.Unity);
}
//点击了界面的network删除按钮
public void uninstallNetwork(Network network, int os)
{
var result = ATConfig.removeInstalledNetwork(network, os);
if (result) {
if (os == ATConfig.OS_ANDROID){
network.CurrentVersions.Android = "";
} else {
network.CurrentVersions.Ios = "";
}
}
ATConfig.removeInstalledNetworkVersion(network.Name, country);
UpdateCurrentVersions(network);
}
public void updateAnyThinkPlugin(PluginData pluginData)
{
Network coreNetwork = pluginData.anyThink;
bool unityUpdate = ATDataUtil.CompareVersions(coreNetwork.CurrentVersions.Unity, pluginData.pluginVersion) == VersionComparisonResult.Lesser;
if (unityUpdate)
{
Application.OpenURL(ATNetInfo.getPluginDownloadUrl(pluginData.pluginVersion));
// ATEditorCoroutine.startCoroutine(downloadAnyThinkPlugin(pluginData.pluginVersion));
}
else
{
downloadPlugin(coreNetwork);
}
//切换国家
public void switchCountry(PluginData pluginData, int country) {
pluginData.country = country;
var pluginSettingData = pluginData.pluginSettingData;
pluginSettingData.curCountry = country;
ATConfig.savePluginSettingData(pluginSettingData);
}
public IEnumerator downloadAnyThinkPlugin(string pluginVersion)
{
Network network = new Network();
network.Name = "AnyThinkPlugin";
network.PluginFileName = ATNetInfo.getPluginFileName(pluginVersion);
network.DownloadUrl = ATNetInfo.getPluginDownloadUrl(pluginVersion);
//https://topon-sdk-release.oss-cn-hangzhou.aliyuncs.com/Unity/Plugin/2.0.0/AnyThinkPlugin_2.0.0.unitypackage
var path = Path.Combine(Application.temporaryCachePath, network.PluginFileName);
ATLog.log("downloadAnyThinkPlugin() >>> path: " + path);
#if UNITY_2017_2_OR_NEWER
var downloadHandler = new DownloadHandlerFile(path);
#else
var downloadHandler = new ATDownloadHandler(path);
#endif
var downloadPluginRequest = new UnityWebRequest(network.DownloadUrl)
{
method = UnityWebRequest.kHttpVerbGET,
downloadHandler = downloadHandler
};
//获取AndroidX开关状态
public bool enableAndroidX(PluginData pluginData) {
if (pluginData == null) {
return false;
}
var pluginSettingData = pluginData.pluginSettingData;
if (pluginSettingData == null) {
return false;
}
CountrySettingData countrySettingData = pluginSettingData.getCountrySettingData();
#if UNITY_2017_2_OR_NEWER
var operation = downloadPluginRequest.SendWebRequest();
#else
var operation = downloadPluginRequest.Send();
#endif
while (!operation.isDone)
{
yield return new WaitForSeconds(0.1f); // Just wait till downloadPluginRequest is completed. Our coroutine is pretty rudimentary.
if (operation.progress != 1 && operation.isDone)
{
CallDownloadPluginProgressCallback(network.Name, operation.progress, operation.isDone);
return countrySettingData.enableAndroidX;
}
//设置并保存AndroidX开关状态
public void saveAndroidXSetting(PluginData pluginData, bool enable) {
ATLog.log("saveAndroidXSetting() >>> enable: " + enable);
var pluginSettingData = pluginData.pluginSettingData;
CountrySettingData countrySettingData = pluginSettingData.getCountrySettingData();
countrySettingData.enableAndroidX = enable;
ATConfig.savePluginSettingData(pluginSettingData);
}
//根据系统判断Admob是否有安装
public bool isAdmobInstalled(int os) {
return ATConfig.isNetworkInstalledByName("Admob", os);
}
public string getAdmobAppIdByOs(PluginData pluginData, int os) {
if (pluginData == null) {
return "";
}
//android_admob_app_id
var countrySettingData = pluginData.pluginSettingData.getCountrySettingData();
return countrySettingData.getAdmobAppId(os);
}
//设置保存Admob app id
public void setAdmobAppidByOs(PluginData pluginData, int os, string appId) {
if (pluginData == null || pluginData.pluginSettingData == null) {
return;
}
var countrySettingData = pluginData.pluginSettingData.getCountrySettingData();
countrySettingData.setAdmobAppId(appId, os);
ATConfig.savePluginSettingData(pluginData.pluginSettingData);
}
//删除某个版本的SDK
public void deleteSdk(PluginData pluginData, string sdkVersion, int os) {
ATLog.log("deleteSdk() >>> sdkVersion: " + sdkVersion + " os: " + os);
//删除本地文件
ATConfig.removeSdk(pluginData.country, os);
//修改UI显示
removeNetworkVersions(pluginData, os, true);
var curVersions = pluginData.anyThink.CurrentVersions;
//修改sdk本地配置文件
var pluginSettingData = pluginData.pluginSettingData;
CountrySettingData countrySettingData = pluginSettingData.getCountrySettingData();
if (os == ATConfig.OS_ANDROID) {
curVersions.Android = "";
countrySettingData.android_version = "";
} else {
curVersions.Ios = "";
countrySettingData.ios_version = "";
}
ATConfig.savePluginSettingData(pluginSettingData);
}
private void removeNetworkVersions(PluginData pluginData, int os, bool isDeleteSdk = false) {
if (isDeleteSdk) {
var mediatedNetworks = pluginData.mediatedNetworks;
if (mediatedNetworks != null && mediatedNetworks.Length > 0) {
foreach(Network network in mediatedNetworks) {
var currentVersion = network.CurrentVersions;
if (currentVersion != null) {
if (os == ATConfig.OS_ANDROID) {
currentVersion.Android = "";
} else {
currentVersion.Ios = "";
}
}
var latestVersions = network.LatestVersions;
if (latestVersions != null) {
if (os == ATConfig.OS_ANDROID) {
latestVersions.Android = "";
} else {
latestVersions.Ios = "";
}
}
}
}
}
#if UNITY_2020_1_OR_NEWER
if (downloadPluginRequest.result != UnityWebRequest.Result.Success)
#elif UNITY_2017_2_OR_NEWER
if (downloadPluginRequest.isNetworkError || downloadPluginRequest.isHttpError)
#else
if (downloadPluginRequest.isError)
#endif
{
ATLog.logError(downloadPluginRequest.error);
}
else
{
CallDownloadPluginProgressCallback(network.Name, 1, true);
// importingNetwork = network;
ATAssetDatabaseManager.Instance.importingNetwork = network;
AssetDatabase.Refresh();
AssetDatabase.ImportPackage(path, false);
}
}
//处理插件版本,pangle、csj兼容问题
public void handlerVersionAdapter(PluginData pluginData) {
string comparePluginVersion = "2.0.1";
//插件版本>=2.0.1
VersionComparisonResult comparisonResult = ATDataUtil.CompareVersions(pluginData.pluginVersion, comparePluginVersion);
if (comparisonResult == VersionComparisonResult.Equal || comparisonResult == VersionComparisonResult.Greater) {
Network coreNetwork = pluginData.anyThink;
bool isChina = ATConfig.isSelectedChina();
if (isChina) {
//国内Android需要把原来已安装的pangle目录删除掉2.0.1插件后用csj作为目录
string androidPanglePath = ATConfig.CHINA_ANDROID_NETWORK_FILES_PARENT_PATH + "pangle";
deleteFilePath(androidPanglePath);
NetworkRequestParams requestParams = pluginData.requestParams;
if (requestParams == null) {
return;
}
//海外iOS需要把原来已安装的pangle_nonChina目录删除掉2.0.1插件后用pangle作为目录
string iOSNonChinaPanglePath = ATConfig.IOS_NETWORK_FILES_PARENT_PATH + "pangle_nonChina";
//国内iOS需要把原来已安装的pangle_China目录删除掉2.0.1插件后用csj作为目录
string iOSPanglePath = ATConfig.IOS_NETWORK_FILES_PARENT_PATH + "pangle_China";
deleteFilePath(iOSNonChinaPanglePath);
deleteFilePath(iOSPanglePath);
}
if (os == ATConfig.OS_ANDROID) { //Android
requestParams.androidVersion = "";
} else {
requestParams.iosVersion = "";
}
}
}
private void deleteFilePath(string filePath) {
if (Directory.Exists(filePath))
{
FileUtil.DeleteFileOrDirectory(filePath);
}
if (File.Exists(filePath + ".meta"))
{
FileUtil.DeleteFileOrDirectory(filePath + ".meta");
}
}
}
[Serializable]
public class PluginData
{
public string networkUrlVersion;
public string pluginVersion; //插件版本
public int country = ATConfig.CHINA_COUNTRY; //默认是1=china
public Network anyThink;
public Network[] mediatedNetworks;
}
[Serializable]
public class Network : IComparable<Network>
{
//
// Sample network data:
//
// {
// "Name": "adcolony",
// "DisplayName": "AdColony",
// "DownloadUrl": "https://bintray.com/applovin/Unity-Mediation-Packages/download_file?file_path=AppLovin-AdColony-Adapters-Android-3.3.10.1-iOS-3.3.7.2.unitypackage",
// "PluginFileName": "AppLovin-AdColony-Adapters-Android-3.3.10.1-iOS-3.3.7.2.unitypackage",
// "DependenciesFilePath": "MaxSdk/Mediation/AdColony/Editor/Dependencies.xml",
// "LatestVersions" : {
// "Unity": "android_3.3.10.1_ios_3.3.7.2",
// "Android": "3.3.10.1",
// "Ios": "3.3.7.2"
// }
// }
//
public string Name;
public string DisplayName;
public string DownloadUrl;
public string DependenciesFilePath;
public string PluginFileName;
public string[] PluginFilePaths;
public Versions LatestVersions; //最新版本
public Versions CurrentVersions; //当前版本
[NonSerialized] public VersionComparisonResult CurrentToLatestVersionComparisonResult = VersionComparisonResult.Equal;
// [NonSerialized] public bool RequiresUpdate = CurrentToLatestVersionComparisonResult == VersionComparisonResult.Lesser;
public bool isReqiureUpdate()
{
return CurrentToLatestVersionComparisonResult == VersionComparisonResult.Lesser;
}
public int CompareTo(Network other)
{
return this.DisplayName.CompareTo(other.DisplayName);
}
}
/// <summary>
/// A helper data class used to get current versions from Dependency.xml files.
/// </summary>
[Serializable]
public class Versions
{
public string Unity;
public string Android;
public string Ios;
public override bool Equals(object value)
{
var versions = value as Versions;
return versions != null
&& (Unity == null || Unity.Equals(versions.Unity))
&& (Android == null || Android.Equals(versions.Android))
&& (Ios == null || Ios.Equals(versions.Ios));
}
public bool HasEqualSdkVersions(Versions versions)
{
return versions != null && versions.Android == Android && versions.Ios == Ios;
}
public override int GetHashCode()
{
return new { Unity, Android, Ios }.GetHashCode();
}
public Versions clone()
{
Versions cloneObj = new Versions();
cloneObj.Android = Android;
cloneObj.Ios = Ios;
cloneObj.Unity = Unity;
return cloneObj;
}
}
public enum VersionComparisonResult
{
Lesser = -1,
Equal = 0,
Greater = 1
}
}