c1_unity/Assets/Editor/Package.cs
2023-08-14 21:58:25 +08:00

907 lines
28 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System;
using System.Collections.Generic;
using System.IO;
using UnityEditor;
using UnityEngine;
#if UNITY_EDITOR_OSX && UNITY_IOS
using UnityEditor.iOS.Xcode;
public class Package {
[UnityEditor.Callbacks.PostProcessBuildAttribute(100)]
public static void OnPostProcessBuild(BuildTarget target, string pathToBuiltProject) {
if (target != BuildTarget.iOS) {
Debug.LogWarning("Target is not iPhone. XCodePostProcess will not run");
return;
}
// Create a new project object from build target
UnityEditor.iOS.Xcode.PBXProject project = new UnityEditor.iOS.Xcode.PBXProject();
string configFilePath = UnityEditor.iOS.Xcode.PBXProject.GetPBXProjectPath(pathToBuiltProject);
project.ReadFromFile(configFilePath);
string targetGuid = project.GetUnityMainTargetGuid();
string targetGuid_Framework = project.GetUnityFrameworkTargetGuid();
string debug = project.BuildConfigByName(targetGuid, "Debug");
string release = project.BuildConfigByName(targetGuid, "Release");
project.AddBuildPropertyForConfig(debug, "CODE_SIGN_RESOURCE_RULES_PATH", "$(SDKROOT)/ResourceRules.plist");
project.AddBuildPropertyForConfig(release, "CODE_SIGN_RESOURCE_RULES_PATH", "$(SDKROOT)/ResourceRules.plist");
#region
string projPath = Path.GetFullPath(pathToBuiltProject);
//添加推送和其他的有点不一样需要添加一个文件。这个文件只能考进去。或者事先准备好了Base.entitlements 文件,文件类容 就是你手动添加进去的内容,你手动添加完成后生成的那个文件
string entitlement = Application.dataPath + "/Editor/entitlement.entitlements";
File.Copy (entitlement, pathToBuiltProject + "/Unity-iPhone/entitlement.entitlements");
//Max Ad Review service
File.Copy(Application.dataPath + "/ThirdParty/MaxSdk/AppLovin/Editor/AppLovinQualityServiceSetup-ios.rb", pathToBuiltProject + "/AppLovinQualityServiceSetup-ios.rb");
project.AddCapability(targetGuid, PBXCapabilityType.AssociatedDomains, pathToBuiltProject + "/Unity-iPhone/entitlement.entitlements", true);
// Enable Push Notifications
project.AddFrameworkToProject (targetGuid_Framework, "UserNotifications.framework", false);
// Enable background mode
// project.AddCapability (targetGuid, PBXCapabilityType.BackgroundModes);
#region google service plist file
// google service
string googleServicePath = Application.dataPath + "/Plugins/iOS/GoogleService-Info.plist";
File.Copy(googleServicePath, pathToBuiltProject + "/GoogleService-Info.plist");
project.AddFileToBuild(targetGuid, project.AddFile("GoogleService-Info.plist", "GoogleService-Info.plist", PBXSourceTree.Source));
#endregion
// Add background modes
string plistPath = pathToBuiltProject + "/Info.plist";
PlistDocument plist = new PlistDocument();
plist.ReadFromString(File.ReadAllText(plistPath));
PlistElementDict rootDict = plist.root;
//在playersetting里设置iosUseCustomAppBackgroundBehavior 和 iOSBackgroundModes
// PlistElementArray arr = rootDict.CreateArray ("UIBackgroundModes");
// arr.AddString ("remote-notification");
// arr.AddString ("fetch");
//解决错误ITMS-90339
string exitsOnSuspendKey = "UIApplicationExitsOnSuspend";
if (rootDict.values.ContainsKey(exitsOnSuspendKey)) {
rootDict.values.Remove(exitsOnSuspendKey);
}
File.WriteAllText(plistPath, plist.WriteToString());
#endregion
// 根据实际需要添加framework或者tbd
// project.AddFrameworkToProject(targetGuid_Framework, "libz.tbd", false);
project.AddFrameworkToProject(targetGuid_Framework, "libsqlite3.tbd", false);
project.AddFrameworkToProject(targetGuid_Framework, "WebKit.framework", false);
// project.AddFrameworkToProject(targetGuid, "UnityFramework.framework", false);
// keychain
project.AddFrameworkToProject(targetGuid_Framework, "Security.framework", false);
// project.AddFrameworkToProject(targetGuid_Framework, "CoreTelephony.framework", false);
// AF
project.AddFrameworkToProject(targetGuid_Framework, "AdSupport.framework", false);
project.AddFrameworkToProject(targetGuid_Framework, "iAd.framework", false);
// AF END */
// adjust
project.AddFrameworkToProject(targetGuid_Framework, "AdServices.framework", false);
// ATT
project.AddFrameworkToProject(targetGuid_Framework, "AppTrackingTransparency.framework", false);
// ATT END
// 苹果登录
project.AddFrameworkToProject(targetGuid_Framework, "AuthenticationServices.framework", true);
// end
project.SetBuildProperty(targetGuid_Framework, "GCC_ENABLE_OBJC_EXCEPTIONS", "YES");
project.SetBuildProperty(targetGuid, "GCC_ENABLE_OBJC_EXCEPTIONS", "YES");
project.SetBuildProperty(targetGuid, "ENABLE_BITCODE", "NO");
//处理iOS编译报错大量Undefined symbol Swift.XXX
// project.SetBuildProperty(targetGuid_Framework, "SWIFT_OBJC_BRIDGING_HEADER", "Libraries/Plugins/iOS/Unity-iPhone-Bridging-Header.h");
// project.SetBuildProperty(targetGuid_Framework, "SWIFT_VERSION", "5.0");
// project.AddBuildProperty(targetGuid_Framework, "LD_RUNPATH_SEARCH_PATHS", "@executable_path/Frameworks");
//报错内容为Please provide an auth token with USYM_UPLOAD_AUTH_TOKEN environment
// project.SetBuildProperty(targetGuid, "USYM_UPLOAD_AUTH_TOKEN", "FakeToken");
// project.SetBuildProperty(targetGuid_Framework, "USYM_UPLOAD_AUTH_TOKEN", "FakeToken");
//ITMS-90206UnityFramework包含Framework问题
project.SetBuildProperty(targetGuid_Framework, "ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES", "NO");
project.WriteToFile(configFilePath);
// 编辑plist 文件
EditorPlist(Path.GetFullPath(pathToBuiltProject));
CopyDirectory(path + "/BFVersions/ios/ios_common", Path.GetFullPath(pathToBuiltProject), true);
}
private static void EditorPlist(string filePath) {
XCPlist list = new XCPlist(filePath);
string ITSAppUsesNonExemptEncryption = @"
<key>ITSAppUsesNonExemptEncryption</key>
<false/>";
//在plist里面增加ITSAppUsesNonExemptEncryption,解决上架AppStore提示缺少出口合规证明
list.AddKey(ITSAppUsesNonExemptEncryption);
// string AppsFlyerShouldSwizzle = @"
// <key>AppsFlyerShouldSwizzle</key>
// <true/>";
// //appFlyer 设置 AppsFlyerShouldSwizzle解决UnityAppController冲突
// //记得AppsFlyerAppController.mm 注释掉//IMPL_APP_CONTROLLER_SUBCLASS(AppsFlyerAppController)
// list.AddKey(AppsFlyerShouldSwizzle);
// 跟踪权限请求描述(ATT) TODO...
string NSUserTrackingUsageDescription = @"
<key>NSUserTrackingUsageDescription</key>
<string>Your data will help us to provide a more personalized experience and offers.</string>";
list.AddKey(NSUserTrackingUsageDescription);
string NSLocationWhenInUseUsageDescription = @"
<key>NSLocationWhenInUseUsageDescription</key>
<string>We need to use location information to provide you with better network services</string>";
list.AddKey(NSLocationWhenInUseUsageDescription);
//iOS 设置状态栏的背景颜色方法
// string StatusBar = @"
// <key>UIViewControllerBasedStatusBarAppearance</key>
// <false/>";
// list.AddKey(StatusBar);
//admob ironsource那里设置了
// string GADApplicationIdentifier = @"
// <key>GADApplicationIdentifier</key>
// <string></string>";
// list.AddKey(GADApplicationIdentifier);
//*/
//google Ads 使用 wkwebview
// string gad_preferred_webview = @"
// <key>gad_preferred_webview</key>
// <string>wkwebview</string>";
// list.AddKey(gad_preferred_webview);
// string UnityNotificationRequestAuthorizationOnAppLaunch = @"
// <key>UnityNotificationRequestAuthorizationOnAppLaunch</key>
// <true />";
// list.AddKey(UnityNotificationRequestAuthorizationOnAppLaunch);
string SKAdNetworkIdentifiers = @"
<key>SKAdNetworkItems</key>
<array>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>2fnua5tdw4.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>2u9pt9hc89.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>3qcr597p9d.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>3qy4746246.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>3sh42y64q3.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>424m5254lk.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>4468km3ulz.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>4dzt52r2t5.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>4fzdc2evr5.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>578prtvx9j.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>5a6flpkh64.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>7ug5zh24hu.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>8c4e2ghe7u.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>8s468mfl3y.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>9rd848q2bz.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>9t245vhmpl.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>av6w8kgt66.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>c6k4g5qg8m.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>cstr6suwn9.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>e5fvkxwrpn.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>f38h382jlk.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>hs6bdukanm.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>kbd757ywx3.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>klf5c3l5u5.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>n6fk4nfna4.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>p78axxw29g.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>ppxm28t8ap.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>prcb7njmu6.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>s39g8k73mm.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>t38b2kh725.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>uw77j35x4d.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>v4nxqhlyqp.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>v72qych5uu.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>wzmmz9fp6w.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>yclnxrl5pm.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>ydx93a7ass.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>zq492l623r.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>22mmun2rn5.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>24t9a8vw3c.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>275upjj5gd.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>294l99pt4k.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>32z4fx6l9h.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>3l6bd9hu43.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>3rd42ekr43.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>4pfyvq9l8r.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>523jb4fst2.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>52fl2v3hgk.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>54nzkqm89y.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>5l3tpt7t6e.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>5lm9lj6jb7.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>5tjdwbrq8w.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>6g9af3uyq4.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>6xzpu9s2p8.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>79pbpufp6p.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>7rz58n8ntl.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>9b89h5y424.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>9nlqeag3gk.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>9yg77x724h.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>a8cz6cu7e5.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>c3frkrj4fj.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>cg4yq2srnc.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>cj5566h2ga.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>dkc879ngq3.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>ejvt5qm6ak.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>feyaarzu9v.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>g28c52eehv.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>ggvn48r87g.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>glqzh8vgby.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>gta9lk7p23.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>k674qkevps.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>kbmxgpxpgc.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>ludvb6z3bs.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>m5mvw97r93.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>m8dbw4sv7c.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>mlmmfzh3r3.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>mtkv5xtk9e.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>n66cz3y3bx.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>n9x2a789qt.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>nzq8sh4pbs.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>pwa73g5rt2.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>qqp299437r.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>r45fhb6rf7.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>rvh3l7un93.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>tl55sbb4fm.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>vcra2ehyfk.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>wg4vff78zm.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>x44k69ngh6.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>x5l83yy675.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>x8jxxk4ff5.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>x8uqf25wch.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>xy9t38ct57.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>zmvfpc5aq8.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>44jx6755aq.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>44n7hlldy6.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>4w7y6s5ca2.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>6964rsfnh4.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>6p4ks3rnbw.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>737z793b9f.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>74b6s63p6l.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>84993kbrcf.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>97r2b46745.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>a2p9lx4jpn.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>a7xqa6mtl2.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>b9bk5wbcq9.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>bxvub5ada5.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>dzg6xy7pwj.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>f73kdq92p3.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>g2y4y55b64.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>hdw39hrw9y.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>krvm3zuq6h.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>lr83yxwka7.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>mls7yz5dvl.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>mp6xlyr22a.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>pwdxu55a5a.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>rx5hdcabgc.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>s69wq72ugq.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>su67r6k2v3.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>u679fj5vs4.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>w9q455wk68.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>y45688jllp.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>n38lu8286q.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>v9wttpbfk9.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>252b5q8x7y.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>9g2aggbj52.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>238da6jt44.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>x2jnk7ly8j.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>488r3q3dtq.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>f7s53z58qe.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>v79kvwwj4g.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>ecpz2srf59.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>gvmwg8q7h5.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>pu4na253f3.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>yrqqpx2mcb.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>z4gj7hsk7h.skadnetwork</string>
</dict>
</array>
";
list.AddKey(SKAdNetworkIdentifiers);
///*/facebook 深度连接
string facebookStr = @"
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLSchemes</key>
<array>
<string>fb277827051329111</string>
</array>
</dict>
</array>
<key>FacebookAppID</key>
<string>277827051329111</string>
<key>FacebookClientToken</key>
<string>cd6be8cc57dff789f3476ee1b25e2410</string>
<key>FacebookDisplayName</key>
<string>Knights Combo</string>
<key>LSApplicationQueriesSchemes</key>
<array>
<string>fb</string>
<string>fbapi</string>
<string>fb-messenger-share-api</string>
<string>fbauth2</string>
<string>fbshareextension</string>
<string>fbapi20130214</string>
<string>fbapi20130410</string>
<string>fbapi20130702</string>
<string>fbapi20131010</string>
<string>fbapi20131219</string>
<string>fbapi20140410</string>
<string>fbapi20140116</string>
<string>fbapi20150313</string>
<string>fbapi20150629</string>
<string>fbapi20160328</string>
<string>fbauth</string>
</array>";
list.AddKey(facebookStr);
//*/
//保存
list.Save();
}
}
static void CopyDirectory(string sourceDir, string destinationDir, bool recursive) {
// Get information about the source directory
var dir = new DirectoryInfo(sourceDir);
// Check if the source directory exists
if (!dir.Exists)
throw new DirectoryNotFoundException($"Source directory not found: {dir.FullName}");
// Cache directories before we start copying
DirectoryInfo[] dirs = dir.GetDirectories();
// Create the destination directory
Directory.CreateDirectory(destinationDir);
// Get the files in the source directory and copy to the destination directory
foreach (FileInfo file in dir.GetFiles())
{
string targetFilePath = Path.Combine(destinationDir, file.Name);
file.CopyTo(targetFilePath);
}
// If recursive and copying subdirectories, recursively call this method
if (recursive)
{
foreach (DirectoryInfo subDir in dirs)
{
string newDestinationDir = Path.Combine(destinationDir, subDir.Name);
CopyDirectory(subDir.FullName, newDestinationDir, true);
}
}
}
public partial class XClassExt : System.IDisposable {
private string filePath;
public XClassExt(string fPath) {
filePath = fPath;
if (!System.IO.File.Exists(filePath)) {
Debug.LogError(filePath + "not found in path.");
return;
}
}
public void WriteBelow(string below, string text) {
StreamReader streamReader = new StreamReader(filePath);
string text_all = streamReader.ReadToEnd();
streamReader.Close();
int beginIndex = text_all.IndexOf(below);
if (beginIndex == -1) {
Debug.LogError(filePath + " not found sign in " + below);
return;
}
int endIndex = text_all.LastIndexOf("\n", beginIndex + below.Length);
text_all = text_all.Substring(0, endIndex) + "\n" + text + "\n" + text_all.Substring(endIndex);
StreamWriter streamWriter = new StreamWriter(filePath);
streamWriter.Write(text_all);
streamWriter.Close();
}
public void Replace(string below, string newText) {
StreamReader streamReader = new StreamReader(filePath);
string text_all = streamReader.ReadToEnd();
streamReader.Close();
int beginIndex = text_all.IndexOf(below);
if (beginIndex == -1) {
// Debug.LogError(filePath + " not found sign in " + below);
return;
}
text_all = text_all.Replace(below, newText);
StreamWriter streamWriter = new StreamWriter(filePath);
streamWriter.Write(text_all);
streamWriter.Close();
}
public void Dispose() {
}
}
public partial class XCPlist : System.IDisposable {
private string filePath;
List<string> contents = new List<string>();
List<string> removeContents = new List<string>();
public XCPlist(string fPath) {
filePath = Path.Combine(fPath, "info.plist");
if (!System.IO.File.Exists(filePath)) {
Debug.LogError(filePath + "路径下文件不存在");
return;
}
FileInfo projectFileInfo = new FileInfo(filePath);
StreamReader sr = projectFileInfo.OpenText();
while (sr.Peek() >= 0) {
contents.Add(sr.ReadLine());
}
sr.Close();
}
public void AddKey(string key) {
if (contents.Count < 2)
return;
contents.Insert(contents.Count - 2, key);
}
public void ReplaceKey(string key, string replace) {
for (int i = 0; i < contents.Count; i++) {
if (contents[i].IndexOf(key) != -1) {
contents[i] = contents[i].Replace(key, replace);
}
}
}
public void RemoveKey(string contents) {
removeContents.Add(contents);
}
public void Save() {
StreamWriter saveFile = File.CreateText(filePath);
foreach (string line in contents)
saveFile.WriteLine(line);
saveFile.Close();
var texts = File.ReadAllText(filePath);
foreach (string content in removeContents) {
texts = texts.Replace(content, "");
};
File.WriteAllText(filePath, texts);
}
public void Dispose() {
}
}
#endif