Created
December 5, 2021 20:12
-
-
Save bbenetskyy/6fc8f9536bd39ad0faec5030748b53c0 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Import Required NuGet Packages | |
#addin "nuget:?package=Cake.Xamarin" | |
#addin "nuget:?package=Cake.Android.Adb" | |
#addin "nuget:?package=Cake.AppleSimulator" | |
using System.Threading; | |
// Script Predefined Arguments | |
var target = Argument("target", "Default"); | |
var iosSimulators = Argument("iosSimulators", new string[] {"iPhone SE", "iPhone 13"}); | |
// Full Path to my project | |
const string ROOT="/Users/user/YourBestProject/"; | |
const string SOLUTION_DIR = "/Users/user/YourBestProject/YourBestProject/"; | |
const string SOLUTION = "/Users/user/YourBestProject/YourBestProject/YourBestProject.sln"; | |
const string ANDROID = "/Users/user/YourBestProject/YourBestProject/Platform/YourBestProject.Platform.Android/YourBestProject.Platform.Android.csproj"; | |
const string ANDROID_APP_IDENTIFIER="you.com.YourBestProject"; | |
const string IOS = "/Users/user/YourBestProject/YourBestProject/Platform/YourBestProject.Platform.iOS/YourBestProject.Platform.iOS.csproj"; | |
const string IOS_APP="YourBestProject.Platform.iOS.app"; | |
const string IOS_ARTIFACTS="/Users/user/YourBestProject/YourBestProject/Platform/YourBestProject.Platform.iOS/bin/iPhoneSimulator/Debug/"; | |
const string IOS_APP_IDENTIFIER="you.com.YourBestProject"; | |
Task("Clean") | |
.Does(() => | |
{ | |
CleanDirectories(ROOT+"**/bin"); | |
CleanDirectories(ROOT+"**/obj"); | |
}); | |
Task("Restore") | |
.Does(() => | |
{ | |
RestoreComponents(SOLUTION); | |
NuGetRestore(SOLUTION); | |
}); | |
Task("Build") | |
.Does(() => | |
{ | |
FilePath androidApk = BuildAndroidApk(projectFile: ANDROID, sign: true, configuration: "Debug", configurator: null); | |
FilePath iosIpa = BuildiOSIpa(projectFile: IOS, configuration: "Debug", platform: "iPhoneSimulator", settings: null); //"iPhone" | |
Information($"Android APK {androidApk}"); | |
Information($"iOS IPA {iosIpa}"); | |
}); | |
Task("Rebuild") | |
.IsDependentOn("Clean") | |
.IsDependentOn("Restore") | |
.IsDependentOn("Build") | |
.Does(() => | |
{ | |
}); | |
Task("CheckAndroidDevices") | |
.Does(() => | |
{ | |
var devices = AdbDevices(); | |
Information($"Found Devices: {devices.Count}"); | |
Information(string.Empty); | |
foreach (var device in devices) | |
{ | |
Information($"{device.Device} {device.Model} {device.Serial}"); | |
Information(string.Empty); | |
} | |
}); | |
Task("CheckiOSSimulators") | |
.Does(() => | |
{ | |
var simulators = ListAppleSimulators(); | |
Information($"Found Simulators: {simulators.Count}"); | |
Information(string.Empty); | |
foreach (var simulator in simulators) | |
{ | |
Information($"{simulator.Name} {simulator.IsAvailable} {simulator.Runtime.Split('.').Last()} {simulator.UDID}"); | |
Information(string.Empty); | |
} | |
}); | |
Task("BuildAndRunAndroid") | |
.Does(() => | |
{ | |
FilePath androidApk = BuildAndroidApk(projectFile: ANDROID, sign: true, configuration: "Debug", configurator: null); | |
Information($"Android APK {androidApk}"); | |
Information(string.Empty); | |
var devices = AdbDevices(); | |
Information($"Found Devices: {devices.Count}"); | |
Information(string.Empty); | |
foreach (var device in devices) | |
{ | |
Information($"{device.Device} {device.Model} {device.Serial}"); | |
if(string.IsNullOrEmpty(device.Model)) | |
continue; | |
var settings = new AdbToolSettings | |
{ | |
Serial = device.Serial | |
}; | |
if(!device.Serial.StartsWith("emulator")) | |
{ | |
AdbUninstall(packageName: "you.com.YourBestProject", settings: settings); | |
} | |
AdbInstall(apkFile: androidApk, settings: settings); | |
AdbRun(args: new string[] { "shell monkey -p you.com.YourBestProject -c android.intent.category.LAUNCHER 1" }, settings: settings); | |
Information(string.Empty); | |
} | |
}); | |
Task("BuildAndRuniOS") | |
.Does(() => | |
{ | |
MSBuild(IOS, configurator => configurator | |
.SetConfiguration("Debug") | |
.SetVerbosity(Verbosity.Minimal)); | |
var simulators = ListAppleSimulators(); | |
Information($"Found Simulators: {simulators.Count}"); | |
Information(string.Empty); | |
foreach (var simulator in simulators) | |
{ | |
Information($"{simulator.Name} {simulator.IsAvailable} {simulator.Runtime.Split('.').Last()} {simulator.UDID}"); | |
if(iosSimulators.Any(s => s == simulator.Name) && simulator.IsAvailable) | |
{ | |
Information($"Start Installation on {simulator.Name}"); | |
InstalliOSApplication(deviceIdentifier: simulator.UDID, applicationPath: IOS_ARTIFACTS + IOS_APP); | |
Thread.Sleep(3_000); | |
LaunchiOSApplication(deviceIdentifier: simulator.UDID, appIdentifier: IOS_APP_IDENTIFIER); | |
} | |
Information(string.Empty); | |
} | |
} ); | |
Task("Default") | |
.IsDependentOn("BuildAndRunAndroid") | |
.IsDependentOn("BuildAndRuniOS") | |
.Does(() => {}); | |
RunTarget(target); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment