236 lines
10 KiB
C#
236 lines
10 KiB
C#
using System;
|
|
using System.IO;
|
|
using UnityEditor;
|
|
//using Google.Android.AppBundle.Editor.Internal;
|
|
#if UNITY_ANDROID
|
|
using UnityEditor.Android;
|
|
#else
|
|
using UnityEditor.iOS.Xcode;
|
|
using UnityEditor.iOS.Xcode.Extensions;
|
|
using Facebook.Unity.Settings;
|
|
#endif
|
|
using UnityEngine;
|
|
|
|
public static class AutoBuild
|
|
{
|
|
[MenuItem("AutoBuild/Set_AndroidKeyStore")]
|
|
static void Set_AndroidKeyStore()
|
|
{
|
|
PlayerSettings.Android.useCustomKeystore = true;
|
|
PlayerSettings.Android.keystoreName = "AndroidData/himminji.keystore";
|
|
PlayerSettings.Android.keyaliasName = "nerdnavis";
|
|
PlayerSettings.Android.keystorePass = PlayerSettings.Android.keyaliasPass = "himminji3#";
|
|
}
|
|
[MenuItem("AutoBuild/Set_AndroidKeyStore_OneStore")]
|
|
static void Set_AndroidKeyStore_OneStore()
|
|
{
|
|
PlayerSettings.Android.useCustomKeystore = true;
|
|
PlayerSettings.Android.keystoreName = "AndroidData/OnestoreLWS.keystore";
|
|
PlayerSettings.Android.keyaliasName = "fgb";
|
|
PlayerSettings.Android.keystorePass = PlayerSettings.Android.keyaliasPass = "fgb123!!";
|
|
}
|
|
static void Common(BuildTargetGroup _btg, BuildTarget _bt, bool _onestore = false)
|
|
{
|
|
PlayerSettings.applicationIdentifier = "com.nerdnavis.himminji";
|
|
EditorUserBuildSettings.SwitchActiveBuildTarget(_btg, _bt);
|
|
|
|
if (_bt == BuildTarget.Android)
|
|
{
|
|
PlayerSettings.Android.splitApplicationBinary = false;
|
|
File.WriteAllText("Assets/Resources/VersionCode.txt", PlayerSettings.Android.bundleVersionCode.ToString());
|
|
PlayerSettings.Android.targetArchitectures = AndroidArchitecture.ARMv7 | AndroidArchitecture.ARM64;
|
|
if (_onestore) Set_AndroidKeyStore_OneStore();
|
|
else Set_AndroidKeyStore();
|
|
}
|
|
else
|
|
{
|
|
File.WriteAllText("Assets/Resources/VersionCode.txt", PlayerSettings.iOS.buildNumber);
|
|
PlayerSettings.iOS.appleDeveloperTeamID = "788PYWMPC6";
|
|
PlayerSettings.iOS.appleEnableAutomaticSigning = true;
|
|
PlayerSettings.iOS.sdkVersion = iOSSdkVersion.DeviceSDK;
|
|
}
|
|
|
|
EditorUserBuildSettings.SwitchActiveBuildTargetAsync(_btg, _bt);
|
|
}
|
|
|
|
static void Show_BuildFolder(BuildTarget _bt)
|
|
{
|
|
if (_bt == BuildTarget.Android) System.Diagnostics.Process.Start("AndroidData");
|
|
else System.Diagnostics.Process.Start("IOSData");
|
|
}
|
|
static void BuildStart(string path, BuildTarget _bt)
|
|
{
|
|
BuildPipeline.BuildPlayer(EditorBuildSettings.scenes, path, _bt, BuildOptions.None);
|
|
Show_BuildFolder(_bt);
|
|
}
|
|
|
|
[MenuItem("AutoBuild/Build APK with KeyStore")]
|
|
static void Build_APK_with_KeyStore()
|
|
{
|
|
Common(BuildTargetGroup.Android, BuildTarget.Android);
|
|
|
|
var curVer = PlayerSettings.bundleVersion;
|
|
PlayerSettings.bundleVersion = "9.9.9";
|
|
EditorUserBuildSettings.buildAppBundle = false;
|
|
BuildStart("AndroidData/Test_himminji_" + Application.version + "_" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".apk", BuildTarget.Android);
|
|
PlayerSettings.bundleVersion = curVer;
|
|
}
|
|
[MenuItem("AutoBuild/Build Live AAB")]
|
|
static void Build_AAB()
|
|
{
|
|
++PlayerSettings.Android.bundleVersionCode;
|
|
Common(BuildTargetGroup.Android, BuildTarget.Android);
|
|
|
|
PlayerSettings.SetScriptingDefineSymbolsForGroup(BuildTargetGroup.Android, "FGB_LIVE");
|
|
EditorUserBuildSettings.buildAppBundle = true;
|
|
if (EditorUtility.DisplayDialog("현재 버전", PlayerSettings.Android.bundleVersionCode.ToString(), "OK", "Not Build"))
|
|
{
|
|
//AppBundlePublisher.Build();
|
|
PlayerSettings.SetScriptingDefineSymbolsForGroup(BuildTargetGroup.Android, "");
|
|
Show_BuildFolder(BuildTarget.Android);
|
|
}
|
|
}
|
|
[MenuItem("AutoBuild/Build Test AAB")]
|
|
static void Build_Test_AAB()
|
|
{
|
|
++PlayerSettings.Android.bundleVersionCode;
|
|
Common(BuildTargetGroup.Android, BuildTarget.Android);
|
|
|
|
EditorUserBuildSettings.buildAppBundle = true;
|
|
if (EditorUtility.DisplayDialog("현재 버전", PlayerSettings.Android.bundleVersionCode.ToString(), "OK", "Not Build"))
|
|
{
|
|
//AppBundlePublisher.Build();
|
|
Show_BuildFolder(BuildTarget.Android);
|
|
}
|
|
}
|
|
[MenuItem("AutoBuild/Build_APK_with_OneStore")]
|
|
static void Build_APK_with_OneStore()
|
|
{
|
|
Common(BuildTargetGroup.Android, BuildTarget.Android, true);
|
|
|
|
PlayerSettings.SetScriptingDefineSymbolsForGroup(BuildTargetGroup.Android, new string[] { "FGB_OneStore", "FGB_LIVE" });
|
|
EditorUserBuildSettings.buildAppBundle = false;
|
|
BuildStart("AndroidData/OneStoreLWS_" + Application.version + "_" + PlayerSettings.Android.bundleVersionCode + ".apk", BuildTarget.Android);
|
|
PlayerSettings.SetScriptingDefineSymbolsForGroup(BuildTargetGroup.Android, "");
|
|
}
|
|
[MenuItem("AutoBuild/Build_APK_with_OneStore Test")]
|
|
static void Build_APK_with_OneStore_Test()
|
|
{
|
|
Common(BuildTargetGroup.Android, BuildTarget.Android, true);
|
|
|
|
PlayerSettings.SetScriptingDefineSymbolsForGroup(BuildTargetGroup.Android, "FGB_OneStore");
|
|
EditorUserBuildSettings.buildAppBundle = false;
|
|
BuildStart("AndroidData/OneStoreLWSTest_" + Application.version + "_" + PlayerSettings.Android.bundleVersionCode + ".apk", BuildTarget.Android);
|
|
PlayerSettings.SetScriptingDefineSymbolsForGroup(BuildTargetGroup.Android, "");
|
|
}
|
|
#if UNITY_IOS
|
|
[MenuItem("AutoBuild/IOS Xcode")]
|
|
static void Build_IOS_Xcode()
|
|
{
|
|
PlayerSettings.iOS.buildNumber = (int.Parse(PlayerSettings.iOS.buildNumber) + 1).ToString();
|
|
PlayerSettings.SetScriptingDefineSymbolsForGroup(BuildTargetGroup.iOS, "FGB_LIVE");
|
|
Common(BuildTargetGroup.iOS, BuildTarget.iOS);
|
|
|
|
BuildStart("IOSData/IOSXcodeLive_" + Application.version + "_" + PlayerSettings.iOS.buildNumber, BuildTarget.iOS);
|
|
PlayerSettings.SetScriptingDefineSymbolsForGroup(BuildTargetGroup.iOS, "");
|
|
}
|
|
[MenuItem("AutoBuild/IOS Xcode Test")]
|
|
static void Build_IOS_Xcode_Test()
|
|
{
|
|
PlayerSettings.iOS.buildNumber = (int.Parse(PlayerSettings.iOS.buildNumber) + 1).ToString();
|
|
Common(BuildTargetGroup.iOS, BuildTarget.iOS);
|
|
|
|
BuildStart("IOSData/IOSSRDebugOn_" + Application.version + "_" + PlayerSettings.iOS.buildNumber, BuildTarget.iOS);
|
|
}
|
|
[MenuItem("AutoBuild/Test IOS Simulator")]
|
|
static void Build_Test_IOS_Simulator()
|
|
{
|
|
Common(BuildTargetGroup.iOS, BuildTarget.iOS);
|
|
PlayerSettings.iOS.sdkVersion = iOSSdkVersion.SimulatorSDK;
|
|
|
|
BuildStart("IOSData/IOSTestBuild_" + Application.version + "_" + PlayerSettings.iOS.buildNumber, BuildTarget.iOS);
|
|
}
|
|
|
|
[PostProcessBuild(1)]
|
|
static void OnPostProcessBuild(BuildTarget buildTarget, string path)
|
|
{
|
|
Debug.Log(buildTarget + " " + path);
|
|
if (buildTarget == BuildTarget.iOS)
|
|
{
|
|
//#if UNITY_IOS
|
|
var plistPath = Path.Combine(path, "Info.plist");
|
|
var plist = new PlistDocument();
|
|
plist.ReadFromFile(plistPath);
|
|
|
|
plist.root.SetBoolean("GADIsAdManagerApp", true);
|
|
plist.root.SetBoolean("FirebaseMessagingAutoInitEnabled", false);
|
|
plist.root.SetBoolean("FirebaseAppStoreReceiptURLCheckEnabled", false);
|
|
plist.root.SetBoolean("ITSAppUsesNonExemptEncryption", false);
|
|
|
|
// Add string setting
|
|
// SKAdNetwork IDs integration(for iOS14+)
|
|
var arraySKAdNetworkItems = plist.root.CreateArray("SKAdNetworkItems");
|
|
// for FAN
|
|
// https://developers.facebook.com/docs/audience-network/guides/SKAdNetwork
|
|
var dictSKAdNetworkIdentifier_FAN_1 = arraySKAdNetworkItems.AddDict();
|
|
dictSKAdNetworkIdentifier_FAN_1.SetString("SKAdNetworkIdentifier", "v9wttpbfk9.skadnetwork"); // FAN 1
|
|
var dictSKAdNetworkIdentifier_FAN_2 = arraySKAdNetworkItems.AddDict();
|
|
dictSKAdNetworkIdentifier_FAN_2.SetString("SKAdNetworkIdentifier", "n38lu8286q.skadnetwork"); // FAN 2
|
|
|
|
plist.root.SetString("FacebookAppID", FacebookSettings.AppId);
|
|
plist.root.SetString("FacebookDisplayName", Application.productName);
|
|
// Add URL Scheme
|
|
var array = plist.root.CreateArray("CFBundleURLTypes");
|
|
var urlDict = array.AddDict();
|
|
urlDict.SetString("CFBundleURLName", Application.identifier);
|
|
var urlInnerArray = urlDict.CreateArray("CFBundleURLSchemes");
|
|
urlInnerArray.AddString("fb" + FacebookSettings.AppId);
|
|
var googleiosurlscheme = urlDict.CreateArray("CFBundleURLSchemes");
|
|
googleiosurlscheme.AddString("com.googleusercontent.apps.107333004578-n74n1eaap2bgtg2od6ia1vk4ls5c139j");
|
|
|
|
var fbArray = plist.root.CreateArray("LSApplicationQueriesSchemes");
|
|
fbArray.AddString("fbapi");
|
|
fbArray.AddString("fb-messenger-api");
|
|
fbArray.AddString("fbauth2");
|
|
fbArray.AddString("fbshareextension");
|
|
|
|
plist.WriteToFile(plistPath);
|
|
|
|
// get project info
|
|
string pbxPath = PBXProject.GetPBXProjectPath(path);
|
|
var proj = new PBXProject();
|
|
proj.ReadFromFile(pbxPath);
|
|
var guid = proj.GetUnityMainTargetGuid();
|
|
var unitytest = proj.TargetGuidByName(PBXProject.GetUnityTestTargetName());
|
|
var unityframework = proj.GetUnityFrameworkTargetGuid();
|
|
|
|
proj.SetBuildProperty(guid, "ENABLE_BITCODE", "NO");
|
|
proj.SetBuildProperty(unitytest, "ENABLE_BITCODE", "NO");
|
|
proj.SetBuildProperty(unityframework, "ENABLE_BITCODE", "NO");
|
|
|
|
// Add Push framework
|
|
proj.AddFrameworkToProject(guid, "UserNotifications.framework", false);
|
|
|
|
proj.WriteToFile(pbxPath);
|
|
|
|
// get entitlements path
|
|
string[] idArray = Application.identifier.Split('.');
|
|
var entitlementsPath = $"Unity-iPhone/{idArray[idArray.Length - 1]}.entitlements";
|
|
|
|
// create capabilities manager
|
|
var capManager = new ProjectCapabilityManager(pbxPath, entitlementsPath, null, guid);
|
|
|
|
// Add necessary capabilities
|
|
capManager.AddPushNotifications(true);
|
|
capManager.AddSignInWithApple();
|
|
capManager.AddBackgroundModes(BackgroundModesOptions.RemoteNotifications);
|
|
|
|
// Write to file
|
|
capManager.WriteToFile();
|
|
}
|
|
//#endif
|
|
Debug.Log("OnPostProcessBuild end");
|
|
}
|
|
#endif
|
|
}
|