You've already forked Commercialization.topon
Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 784bc7c0ee | |||
| 0958e1569a |
8
AnyThinkPlugin/AnyThinkAds/Plugins/iOS.meta
Normal file
8
AnyThinkPlugin/AnyThinkAds/Plugins/iOS.meta
Normal file
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: e9115931d711f214aa6aa79f3faae8d7
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
8
AnyThinkPlugin/AnyThinkAds/Plugins/iOS/China.meta
Normal file
8
AnyThinkPlugin/AnyThinkAds/Plugins/iOS/China.meta
Normal file
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 884850fa610017146a55d9579149e619
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
8
AnyThinkPlugin/AnyThinkAds/Plugins/iOS/China/baidu.meta
Normal file
8
AnyThinkPlugin/AnyThinkAds/Plugins/iOS/China/baidu.meta
Normal file
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: db06d62c9d0894385a59b5fb103ab275
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: f6bea76eddb364121b83ad86a0338601
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<dependencies>
|
||||
<iosPods>
|
||||
<iosPod name="AnyThinkMediationBaiduAdapter" version="10.050.0" />
|
||||
</iosPods>
|
||||
</dependencies>
|
||||
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 0d8df9936bce14501b0ce7acb8f0e486
|
||||
TextScriptImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1 @@
|
||||
{"name":"baidu","version":"10.050","country":1,"path":"Assets/AnyThinkPlugin/Script/IntegrationManager/Editor/../../..//AnyThinkAds\\Plugins/iOS/China/baidu"}
|
||||
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: c479be6d2cfff5f49b743fd4e7d014f2
|
||||
TextScriptImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
8
AnyThinkPlugin/AnyThinkAds/Plugins/iOS/China/core.meta
Normal file
8
AnyThinkPlugin/AnyThinkAds/Plugins/iOS/China/core.meta
Normal file
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 4a5a23d591de040028521674fa54d20c
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 8eebe69ca7fb743d2b5665bb700c28db
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<dependencies>
|
||||
<iosPods>
|
||||
<iosPod name="AnyThinkiOS" version="6.5.45" />
|
||||
<iosPod name="AnyThinkMediationAdxSmartdigimktCNAdapter" version="6.5.65.0" />
|
||||
</iosPods>
|
||||
</dependencies>
|
||||
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 50c9dea184d284d84bc7e0822bb870d9
|
||||
TextScriptImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
8
AnyThinkPlugin/AnyThinkAds/Plugins/iOS/China/csj.meta
Normal file
8
AnyThinkPlugin/AnyThinkAds/Plugins/iOS/China/csj.meta
Normal file
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: ad0abde879bdd410199166a9164ebc16
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 965cd469bf04d4cc9a8d2cc8c7daf270
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<dependencies>
|
||||
<iosPods>
|
||||
<iosPod name="AnyThinkMediationTTAdapter" version="7.5.0.1.1" />
|
||||
</iosPods>
|
||||
</dependencies>
|
||||
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 6437e098bd08a44b7885c53c03330621
|
||||
TextScriptImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1 @@
|
||||
{"name":"csj","version":"7.5.0.1","country":1,"path":"Assets/AnyThinkPlugin/Script/IntegrationManager/Editor/../../..//AnyThinkAds\\Plugins/iOS/China/csj"}
|
||||
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 32015d391988d1247929856b6469e6f3
|
||||
TextScriptImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
8
AnyThinkPlugin/AnyThinkAds/Plugins/iOS/China/gdt.meta
Normal file
8
AnyThinkPlugin/AnyThinkAds/Plugins/iOS/China/gdt.meta
Normal file
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b29b0c13c4c4844d4b1be5760b6811f6
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: ebeba71cc398047fe879c71be3a53d0d
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<dependencies>
|
||||
<iosPods>
|
||||
<iosPod name="AnyThinkMediationGDTAdapter" version="4.15.80.2" />
|
||||
</iosPods>
|
||||
</dependencies>
|
||||
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 215f3a5690c3b4ea3bc7abeec1cd916b
|
||||
TextScriptImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1 @@
|
||||
{"name":"gdt","version":"4.15.80","country":1,"path":"Assets/AnyThinkPlugin/Script/IntegrationManager/Editor/../../..//AnyThinkAds\\Plugins/iOS/China/gdt"}
|
||||
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: aa206b00090001e4a8ddb3b2a8820f60
|
||||
TextScriptImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: a5b213b3361cc47a19e52a0bc28b5927
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 871f2af504cd74b97a9fd8253a21aedd
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<dependencies>
|
||||
<iosPods>
|
||||
<iosPod name="AnyThinkMediationKuaiShouAdapter" version="4.12.20.3.3" />
|
||||
</iosPods>
|
||||
</dependencies>
|
||||
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 801f4c656a41d4485b9d77ecff1ea8b5
|
||||
TextScriptImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1 @@
|
||||
{"name":"kuaishou","version":"4.12.20.3","country":1,"path":"Assets/AnyThinkPlugin/Script/IntegrationManager/Editor/../../..//AnyThinkAds\\Plugins/iOS/China/kuaishou"}
|
||||
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 8de46792959b74b43b6178a1daae3d82
|
||||
TextScriptImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1 +1 @@
|
||||
{"curCountry":1,"china":{"android_version":"6.5.73","ios_version":"","androidXSetting":1,"country":1,"android_admob_app_id":"","ios_admob_app_id":""},"nonchina":{"android_version":"","ios_version":"","androidXSetting":0,"country":2,"android_admob_app_id":"","ios_admob_app_id":""}}
|
||||
{"curCountry":1,"china":{"android_version":"6.5.73","ios_version":"6.5.45","androidXSetting":1,"country":1,"android_admob_app_id":"","ios_admob_app_id":""},"nonchina":{"android_version":"","ios_version":"","androidXSetting":0,"country":2,"android_admob_app_id":"","ios_admob_app_id":""}}
|
||||
@@ -44,6 +44,8 @@ namespace AnyThink.Scripts.Editor
|
||||
get
|
||||
{
|
||||
var dynamicLibraryPathsToEmbed = new List<string>();
|
||||
dynamicLibraryPathsToEmbed.Add(Path.Combine("Pods/", "AnyThinkiOS/core/AnyThinkSDK.xcframework"));
|
||||
dynamicLibraryPathsToEmbed.Add(Path.Combine("Pods/", "SmartdigimktCNSDK/KuYingSDK/SmartdigimktSDK.xcframework"));
|
||||
dynamicLibraryPathsToEmbed.Add(Path.Combine("Pods/", "KSAdSDK/KSAdSDK.xcframework"));
|
||||
dynamicLibraryPathsToEmbed.Add(Path.Combine("Pods/", "StartAppSDK/StartApp.xcframework"));
|
||||
dynamicLibraryPathsToEmbed.Add(Path.Combine("Pods/", "BigoADS/BigoADS/BigoADS.xcframework"));
|
||||
|
||||
22
CHANGELOG.md
22
CHANGELOG.md
@@ -1,3 +1,25 @@
|
||||
# [1.4.17]
|
||||
|
||||
### 修复
|
||||
|
||||
* iOS 导出后处理会把 `AnyThinkSDK.xcframework` 和 `SmartdigimktSDK.xcframework` 加入主 App target 的 Embed Frameworks,避免真机启动时 `UnityFramework.framework` 因缺少动态依赖而加载失败并直接退出。
|
||||
|
||||
### 新增
|
||||
|
||||
* `TopOn 配置` 页签新增 iOS DebugUI Pod 开关,测试包可按需写入 `AnyThinkDebugUISDK 1.0.7`,正式包默认不带调试工具。
|
||||
|
||||
# [1.4.16]
|
||||
|
||||
### 新增
|
||||
|
||||
* 增加 Taku/AnyThink 中国区 iOS Pod 依赖声明,覆盖 core、CSJ、GDT、百度、快手网络。
|
||||
* 同步记录 iOS SDK core 版本 `6.5.45`,让 Integration Manager 能识别当前 iOS 安装状态。
|
||||
|
||||
### 维护
|
||||
|
||||
* 发布包依赖的 `com.foldcc.cc-framework.commercialization` 对齐到 `1.0.16`,并切换为当前可解析的 `18650` Git UPM 地址。
|
||||
* `TopOn 配置` 构建页签在宿主未安装新版构建窗口 API 时自动跳过编译,避免基础框架版本差异导致编辑器编译失败。
|
||||
|
||||
# [1.4.15]
|
||||
|
||||
### 修复
|
||||
|
||||
@@ -16,7 +16,18 @@
|
||||
- `BaseAwardAdKeyValue.value` = 激励视频广告位ID
|
||||
- `BaseInteractionAdKeyValue.value` = 插屏广告位ID
|
||||
3. 打开示例场景 `IAAAdDebugSample.unity`
|
||||
4. 运行到 Android 手机测试
|
||||
4. 运行到 Android 或 iOS 真机测试
|
||||
|
||||
## iOS DebugUI 启用
|
||||
|
||||
1. 在 `Build/Modular Build System` 的 `TopOn 配置` 页签开启 `启用 iOS DebugUI Pod`
|
||||
2. iOS DebugUI 版本保持默认 `1.0.7`
|
||||
3. 导出 Xcode 工程后执行 `pod install --repo-update`
|
||||
4. 在 Taku 后台获取 `SDK Debug Key`
|
||||
5. 在示例配置 `CommonKeyValues` 中设置 `topon.debugger_key=<SDK Debug Key>`
|
||||
6. 真机首次请求 IDFA 时选择允许
|
||||
7. 点击 `Initialize ADManager`
|
||||
8. 点击 `Open DebugUI`
|
||||
|
||||
## 当前默认策略
|
||||
|
||||
@@ -57,6 +68,7 @@
|
||||
- `topon.debug=true` 只用于打开 SDK 调试日志
|
||||
- 不会再因为 debug 模式自动弹出官方 DebugUI
|
||||
- 官方 DebugUI 改为手动点击 `Open DebugUI`
|
||||
- iOS 需要构建期启用 `AnyThinkDebugUISDK` Pod,并配置 `topon.debugger_key`
|
||||
|
||||
## 场景到达测试方式
|
||||
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Text.RegularExpressions;
|
||||
using UnityEditor;
|
||||
using UnityEditor.Callbacks;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Topon_Adapter.Editor
|
||||
@@ -13,11 +15,15 @@ namespace Topon_Adapter.Editor
|
||||
public bool forceVerbtoUtilVersion = true;
|
||||
public string verbtoUtilDependency = ToponBuildSettingsStore.DefaultVerbtoUtilDependency;
|
||||
public bool stripResolvedDebuggerArtifacts = true;
|
||||
public bool enableIOSDebuggerUI = false;
|
||||
public string iosDebuggerPodVersion = ToponBuildSettingsStore.DefaultIOSDebuggerPodVersion;
|
||||
}
|
||||
|
||||
internal static class ToponBuildSettingsStore
|
||||
{
|
||||
public const string DefaultVerbtoUtilDependency = "com.verbto.tools:util:1.1.3";
|
||||
public const string IOSDebuggerPodName = "AnyThinkDebugUISDK";
|
||||
public const string DefaultIOSDebuggerPodVersion = "1.0.7";
|
||||
|
||||
private const string ActiveBuildSessionKey = "Commercialization.Topon.ActiveBuildSettings";
|
||||
private const string SettingsFileSuffix = "_topon_build_settings.json";
|
||||
@@ -47,6 +53,16 @@ namespace Topon_Adapter.Editor
|
||||
return settings.verbtoUtilDependency.Trim();
|
||||
}
|
||||
|
||||
public static string GetIOSDebuggerPodVersion(ToponBuildSettings settings)
|
||||
{
|
||||
if (settings == null || string.IsNullOrWhiteSpace(settings.iosDebuggerPodVersion))
|
||||
{
|
||||
return DefaultIOSDebuggerPodVersion;
|
||||
}
|
||||
|
||||
return settings.iosDebuggerPodVersion.Trim();
|
||||
}
|
||||
|
||||
public static ToponBuildSettings LoadForProfileName(string profileName, string repositoryRoot)
|
||||
{
|
||||
var settings = CreateDefault();
|
||||
@@ -298,7 +314,9 @@ namespace Topon_Adapter.Editor
|
||||
enableDebuggerUI = settings.enableDebuggerUI,
|
||||
forceVerbtoUtilVersion = settings.forceVerbtoUtilVersion,
|
||||
verbtoUtilDependency = GetVerbtoUtilDependency(settings),
|
||||
stripResolvedDebuggerArtifacts = settings.stripResolvedDebuggerArtifacts
|
||||
stripResolvedDebuggerArtifacts = settings.stripResolvedDebuggerArtifacts,
|
||||
enableIOSDebuggerUI = settings.enableIOSDebuggerUI,
|
||||
iosDebuggerPodVersion = GetIOSDebuggerPodVersion(settings)
|
||||
};
|
||||
}
|
||||
|
||||
@@ -310,6 +328,7 @@ namespace Topon_Adapter.Editor
|
||||
}
|
||||
|
||||
settings.verbtoUtilDependency = NormalizeDependency(settings.verbtoUtilDependency);
|
||||
settings.iosDebuggerPodVersion = NormalizeIOSDebuggerPodVersion(settings.iosDebuggerPodVersion);
|
||||
}
|
||||
|
||||
private static string NormalizeDependency(string dependency)
|
||||
@@ -322,6 +341,16 @@ namespace Topon_Adapter.Editor
|
||||
return dependency.Trim();
|
||||
}
|
||||
|
||||
private static string NormalizeIOSDebuggerPodVersion(string version)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(version))
|
||||
{
|
||||
return DefaultIOSDebuggerPodVersion;
|
||||
}
|
||||
|
||||
return version.Trim();
|
||||
}
|
||||
|
||||
private static string GetVersionFromDependency(string dependency)
|
||||
{
|
||||
dependency = NormalizeDependency(dependency);
|
||||
@@ -386,4 +415,196 @@ namespace Topon_Adapter.Editor
|
||||
return new string(chars);
|
||||
}
|
||||
}
|
||||
|
||||
#if UNITY_IOS || UNITY_IPHONE
|
||||
internal static class ToponIOSDebuggerDependencyPostProcessor
|
||||
{
|
||||
private const string Tag = "[TopOn Build]";
|
||||
|
||||
[PostProcessBuild(int.MaxValue)]
|
||||
public static void OnPostProcessBuild(BuildTarget buildTarget, string buildPath)
|
||||
{
|
||||
if (buildTarget != BuildTarget.iOS)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var settings = ToponBuildSettingsStore.GetActiveForCurrentBuild();
|
||||
try
|
||||
{
|
||||
ProcessExportedProject(buildPath, settings);
|
||||
}
|
||||
finally
|
||||
{
|
||||
ToponBuildSettingsStore.ClearActiveBuildSettings();
|
||||
}
|
||||
}
|
||||
|
||||
public static void ProcessExportedProject(string buildPath, ToponBuildSettings settings)
|
||||
{
|
||||
if (settings == null)
|
||||
{
|
||||
settings = ToponBuildSettingsStore.CreateDefault();
|
||||
}
|
||||
|
||||
var podfilePath = Path.Combine(buildPath, "Podfile");
|
||||
if (!File.Exists(podfilePath))
|
||||
{
|
||||
if (settings.enableIOSDebuggerUI)
|
||||
{
|
||||
Debug.LogWarning($"{Tag} Podfile not found, cannot add {ToponBuildSettingsStore.IOSDebuggerPodName}: {podfilePath}");
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
var content = File.ReadAllText(podfilePath);
|
||||
var updated = RewritePodfile(content, settings);
|
||||
if (!string.Equals(content, updated, StringComparison.Ordinal))
|
||||
{
|
||||
File.WriteAllText(podfilePath, updated);
|
||||
}
|
||||
|
||||
if (settings.enableIOSDebuggerUI)
|
||||
{
|
||||
Debug.Log($"{Tag} iOS DebugUI pod enabled: {ToponBuildSettingsStore.IOSDebuggerPodName} {ToponBuildSettingsStore.GetIOSDebuggerPodVersion(settings)}.");
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.Log($"{Tag} iOS DebugUI pod disabled for this build.");
|
||||
}
|
||||
}
|
||||
|
||||
private static string RewritePodfile(string content, ToponBuildSettings settings)
|
||||
{
|
||||
var newline = content.Contains("\r\n") ? "\r\n" : "\n";
|
||||
var lines = new List<string>(content.Replace("\r\n", "\n").Replace('\r', '\n').Split('\n'));
|
||||
|
||||
for (var i = lines.Count - 1; i >= 0; i--)
|
||||
{
|
||||
if (IsDebuggerPodLine(lines[i]))
|
||||
{
|
||||
lines.RemoveAt(i);
|
||||
}
|
||||
}
|
||||
|
||||
if (settings.enableIOSDebuggerUI)
|
||||
{
|
||||
InsertDebuggerPod(lines, ToponBuildSettingsStore.GetIOSDebuggerPodVersion(settings));
|
||||
}
|
||||
|
||||
return string.Join(newline, lines);
|
||||
}
|
||||
|
||||
private static bool IsDebuggerPodLine(string line)
|
||||
{
|
||||
return Regex.IsMatch(line ?? string.Empty,
|
||||
@"^\s*pod\s+['""]" + ToponBuildSettingsStore.IOSDebuggerPodName + @"['""]",
|
||||
RegexOptions.CultureInvariant);
|
||||
}
|
||||
|
||||
private static void InsertDebuggerPod(List<string> lines, string version)
|
||||
{
|
||||
var targetRange = FindTargetRange(lines, "UnityFramework");
|
||||
if (targetRange.start < 0)
|
||||
{
|
||||
targetRange = FindTargetRange(lines, "Unity-iPhone");
|
||||
}
|
||||
|
||||
if (targetRange.start >= 0)
|
||||
{
|
||||
var indent = ResolvePodIndent(lines, targetRange);
|
||||
var podLine = $"{indent}pod '{ToponBuildSettingsStore.IOSDebuggerPodName}', '{version}'";
|
||||
lines.Insert(ResolvePodInsertIndex(lines, targetRange), podLine);
|
||||
return;
|
||||
}
|
||||
|
||||
if (lines.Count > 0 && !string.IsNullOrWhiteSpace(lines[lines.Count - 1]))
|
||||
{
|
||||
lines.Add(string.Empty);
|
||||
}
|
||||
|
||||
lines.Add("target 'UnityFramework' do");
|
||||
lines.Add($" pod '{ToponBuildSettingsStore.IOSDebuggerPodName}', '{version}'");
|
||||
lines.Add("end");
|
||||
}
|
||||
|
||||
private static (int start, int end) FindTargetRange(List<string> lines, string targetName)
|
||||
{
|
||||
var targetPattern = new Regex(@"^\s*target\s+['""]" + Regex.Escape(targetName) + @"['""]\s+do\b",
|
||||
RegexOptions.CultureInvariant);
|
||||
|
||||
for (var i = 0; i < lines.Count; i++)
|
||||
{
|
||||
if (!targetPattern.IsMatch(lines[i] ?? string.Empty))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var depth = 0;
|
||||
for (var j = i; j < lines.Count; j++)
|
||||
{
|
||||
var line = StripComment(lines[j]);
|
||||
if (Regex.IsMatch(line, @"\bdo\b", RegexOptions.CultureInvariant))
|
||||
{
|
||||
depth++;
|
||||
}
|
||||
|
||||
if (Regex.IsMatch(line, @"^\s*end\s*$", RegexOptions.CultureInvariant))
|
||||
{
|
||||
depth--;
|
||||
if (depth <= 0)
|
||||
{
|
||||
return (i, j);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return (i, lines.Count);
|
||||
}
|
||||
|
||||
return (-1, -1);
|
||||
}
|
||||
|
||||
private static int ResolvePodInsertIndex(List<string> lines, (int start, int end) targetRange)
|
||||
{
|
||||
var insertIndex = targetRange.start + 1;
|
||||
for (var i = targetRange.start + 1; i < targetRange.end && i < lines.Count; i++)
|
||||
{
|
||||
if (Regex.IsMatch(lines[i] ?? string.Empty, @"^\s*pod\s+", RegexOptions.CultureInvariant))
|
||||
{
|
||||
insertIndex = i + 1;
|
||||
}
|
||||
}
|
||||
|
||||
return insertIndex;
|
||||
}
|
||||
|
||||
private static string ResolvePodIndent(List<string> lines, (int start, int end) targetRange)
|
||||
{
|
||||
for (var i = targetRange.start + 1; i < targetRange.end && i < lines.Count; i++)
|
||||
{
|
||||
var match = Regex.Match(lines[i] ?? string.Empty, @"^(\s*)pod\s+", RegexOptions.CultureInvariant);
|
||||
if (match.Success)
|
||||
{
|
||||
return match.Groups[1].Value;
|
||||
}
|
||||
}
|
||||
|
||||
var targetIndent = Regex.Match(lines[targetRange.start] ?? string.Empty, @"^(\s*)", RegexOptions.CultureInvariant).Value;
|
||||
return targetIndent + " ";
|
||||
}
|
||||
|
||||
private static string StripComment(string line)
|
||||
{
|
||||
if (string.IsNullOrEmpty(line))
|
||||
{
|
||||
return string.Empty;
|
||||
}
|
||||
|
||||
var commentIndex = line.IndexOf('#');
|
||||
return commentIndex >= 0 ? line.Substring(0, commentIndex) : line;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
#if TOPON_HAS_CC_FRAMEWORK_COMMON_BUILD_WINDOW
|
||||
using UnityEditor;
|
||||
using UnityEngine;
|
||||
|
||||
@@ -31,12 +32,12 @@ namespace Topon_Adapter.Editor
|
||||
|
||||
EditorGUILayout.LabelField("TopOn Android 调试工具", EditorStyles.boldLabel);
|
||||
EditorGUILayout.HelpBox(
|
||||
"正式 release 默认关闭 DebugUI。verbto util 独立控制,默认强制指定到 1.1.3,避免回落到存在数据库降级风险的旧版本。",
|
||||
"Android 正式 release 默认关闭 DebugUI。verbto util 独立控制,默认强制指定到 1.1.3,避免回落到存在数据库降级风险的旧版本。",
|
||||
MessageType.Info);
|
||||
|
||||
EditorGUI.BeginChangeCheck();
|
||||
settings.enableDebuggerUI = EditorGUILayout.Toggle(
|
||||
new GUIContent("启用 DebugUI 依赖", "仅用于开发/测试包;正式 release 应保持关闭。"),
|
||||
new GUIContent("启用 Android DebugUI 依赖", "仅用于开发/测试包;正式 release 应保持关闭。"),
|
||||
settings.enableDebuggerUI);
|
||||
|
||||
settings.forceVerbtoUtilVersion = EditorGUILayout.Toggle(
|
||||
@@ -54,6 +55,23 @@ namespace Topon_Adapter.Editor
|
||||
new GUIContent("禁用时剔除 DebugUI 旧产物", "关闭 DebugUI 时,从生成的 Gradle 工程中删除旧 Resolver 带入的 debugger-ui AAR;不会把 verbto util 当作 DebugUI 一起剔除。"),
|
||||
settings.stripResolvedDebuggerArtifacts);
|
||||
|
||||
EditorGUILayout.Space(6);
|
||||
EditorGUILayout.LabelField("TopOn iOS 调试工具", EditorStyles.boldLabel);
|
||||
EditorGUILayout.HelpBox(
|
||||
"iOS DebugUI 通过导出后的 Podfile 写入 AnyThinkDebugUISDK。当前 Taku iOS SDK 6.5.45 对应 DebugUI 1.0.7;正式 release 应保持关闭。",
|
||||
MessageType.Info);
|
||||
|
||||
settings.enableIOSDebuggerUI = EditorGUILayout.Toggle(
|
||||
new GUIContent("启用 iOS DebugUI Pod", "仅用于开发/测试包;启用后导出工程 Podfile 会写入 AnyThinkDebugUISDK。"),
|
||||
settings.enableIOSDebuggerUI);
|
||||
|
||||
using (new EditorGUI.DisabledScope(!settings.enableIOSDebuggerUI))
|
||||
{
|
||||
settings.iosDebuggerPodVersion = EditorGUILayout.TextField(
|
||||
new GUIContent("iOS DebugUI 版本", "Taku iOS SDK 6.5.45 推荐 AnyThinkDebugUISDK 1.0.7。"),
|
||||
ToponBuildSettingsStore.GetIOSDebuggerPodVersion(settings));
|
||||
}
|
||||
|
||||
if (EditorGUI.EndChangeCheck())
|
||||
{
|
||||
ToponBuildSettingsStore.SaveForProfileName(profile.profileName, context.repositoryRoot, settings);
|
||||
@@ -62,11 +80,20 @@ namespace Topon_Adapter.Editor
|
||||
EditorGUILayout.Space(6);
|
||||
if (settings.enableDebuggerUI)
|
||||
{
|
||||
EditorGUILayout.HelpBox("当前配置会把 TopOn DebugUI 打进 Android 构建;请不要用于正式 release。", MessageType.Warning);
|
||||
EditorGUILayout.HelpBox("当前配置会把 TopOn Android DebugUI 打进 Android 构建;请不要用于正式 release。", MessageType.Warning);
|
||||
}
|
||||
else
|
||||
{
|
||||
EditorGUILayout.HelpBox("当前配置不会打包 TopOn DebugUI。", MessageType.None);
|
||||
EditorGUILayout.HelpBox("当前配置不会打包 TopOn Android DebugUI。", MessageType.None);
|
||||
}
|
||||
|
||||
if (settings.enableIOSDebuggerUI)
|
||||
{
|
||||
EditorGUILayout.HelpBox($"当前配置会在 iOS Podfile 写入 {ToponBuildSettingsStore.IOSDebuggerPodName} {ToponBuildSettingsStore.GetIOSDebuggerPodVersion(settings)};请不要用于正式 release。", MessageType.Warning);
|
||||
}
|
||||
else
|
||||
{
|
||||
EditorGUILayout.HelpBox("当前配置不会打包 TopOn iOS DebugUI。", MessageType.None);
|
||||
}
|
||||
|
||||
if (settings.forceVerbtoUtilVersion)
|
||||
@@ -95,15 +122,28 @@ namespace Topon_Adapter.Editor
|
||||
var report = BuildWindowExtensionReport.Pass();
|
||||
if (settings.enableDebuggerUI)
|
||||
{
|
||||
report.AddMessage("TopOn DebugUI 已启用。");
|
||||
report.AddMessage("TopOn Android DebugUI 已启用。");
|
||||
if (!profile.isDevelopment)
|
||||
{
|
||||
report.AddWarning("当前不是 Development Build,请确认该配置不是正式 release。");
|
||||
report.AddWarning("Android DebugUI 已启用,但当前不是 Development Build,请确认该配置不是正式 release。");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
report.AddMessage("TopOn DebugUI 已关闭,构建产物不会打包 debugger-ui。");
|
||||
report.AddMessage("TopOn Android DebugUI 已关闭,构建产物不会打包 debugger-ui。");
|
||||
}
|
||||
|
||||
if (settings.enableIOSDebuggerUI)
|
||||
{
|
||||
report.AddMessage($"TopOn iOS DebugUI 已启用,将写入 {ToponBuildSettingsStore.IOSDebuggerPodName} {ToponBuildSettingsStore.GetIOSDebuggerPodVersion(settings)}。");
|
||||
if (!profile.isDevelopment)
|
||||
{
|
||||
report.AddWarning("iOS DebugUI 已启用,但当前不是 Development Build,请确认该配置不是正式 release。");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
report.AddMessage("TopOn iOS DebugUI 已关闭,导出工程不会写入 AnyThinkDebugUISDK。");
|
||||
}
|
||||
|
||||
if (!settings.enableDebuggerUI && ToponBuildSettingsStore.HasStaleDebuggerResolverOutput(context.repositoryRoot))
|
||||
@@ -148,9 +188,12 @@ namespace Topon_Adapter.Editor
|
||||
EditorGUILayout.Space(6);
|
||||
EditorGUILayout.LabelField("本地依赖状态", EditorStyles.boldLabel);
|
||||
EditorGUILayout.LabelField("旧 DebugUI 输出", hasStaleDebuggerOutput ? "检测到 debugger-ui" : "未检测到");
|
||||
EditorGUILayout.LabelField("DebugUI AAR/JAR", debuggerArtifacts.Count == 0 ? "未检测到" : $"{debuggerArtifacts.Count} 个");
|
||||
EditorGUILayout.LabelField("Android DebugUI AAR/JAR", debuggerArtifacts.Count == 0 ? "未检测到" : $"{debuggerArtifacts.Count} 个");
|
||||
EditorGUILayout.LabelField("verbto util 强制", settings.forceVerbtoUtilVersion ? dependency : "自动/不干预");
|
||||
EditorGUILayout.LabelField("verbto util 本地产物", utilArtifacts.Count == 0 ? "未检测到" : $"{utilArtifacts.Count} 个");
|
||||
EditorGUILayout.LabelField("iOS DebugUI Pod", settings.enableIOSDebuggerUI
|
||||
? $"{ToponBuildSettingsStore.IOSDebuggerPodName} {ToponBuildSettingsStore.GetIOSDebuggerPodVersion(settings)}"
|
||||
: "关闭");
|
||||
if (settings.forceVerbtoUtilVersion && hasUnforcedUtilOutput)
|
||||
{
|
||||
EditorGUILayout.HelpBox("检测到本地/Resolver 中存在非强制版本的 verbto util;Android Gradle 工程生成后会改写依赖,并清理旧版本本地产物。", MessageType.Warning);
|
||||
@@ -158,3 +201,4 @@ namespace Topon_Adapter.Editor
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -16,6 +16,12 @@
|
||||
"precompiledReferences": [],
|
||||
"autoReferenced": true,
|
||||
"defineConstraints": [],
|
||||
"versionDefines": [],
|
||||
"versionDefines": [
|
||||
{
|
||||
"name": "com.foldcc.cc-framework.common",
|
||||
"expression": "[1.0.5,)",
|
||||
"define": "TOPON_HAS_CC_FRAMEWORK_COMMON_BUILD_WINDOW"
|
||||
}
|
||||
],
|
||||
"noEngineReferences": false
|
||||
}
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
"name": "com.commercialization.topon",
|
||||
"displayName": "Commercialization.topon",
|
||||
"description": "基于topon的广告sdk封装,依赖基础商业化模块",
|
||||
"version": "1.4.15",
|
||||
"version": "1.4.17",
|
||||
"unity": "2021.1",
|
||||
"license": "MIT",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "http://private.lightyears.ltd:18640/foldcc/Commercialization.topon"
|
||||
"url": "http://private.lightyears.ltd:18650/foldcc/Commercialization.topon.git"
|
||||
},
|
||||
"author": {
|
||||
"name": "foldcc",
|
||||
@@ -16,7 +16,7 @@
|
||||
},
|
||||
"dependencies":
|
||||
{
|
||||
"com.foldcc.cc-framework.commercialization" : "http://private.lightyears.ltd:18640/foldcc/CC-Framework.Commercialization.git#1.0.14"
|
||||
"com.foldcc.cc-framework.commercialization" : "http://private.lightyears.ltd:18650/foldcc/CC-Framework.Commercialization.git#1.0.16"
|
||||
},
|
||||
"samples": [
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user