using System.IO;
using Unity.Android.Gradle;
using UnityEditor;
using UnityEditor.Android;
using UnityEngine;
public class ModifyProjectScript : AndroidProjectFilesModifier
{
private string _myLibBuildGradle = Path.Combine("unityLibrary", "customPlugin", "build.gradle");
public override AndroidProjectFilesModifierContext Setup()
{
var projectFilesContext = new AndroidProjectFilesModifierContext();
// Tell the build system to expect a file to be produced in <gradleProject>/unityLibrary/customPlugin/build.gradle
projectFilesContext.Outputs.AddBuildGradleFile(_myLibBuildGradle);
// Tell the build system that it should run OnModifyAndroidProjectFiles if MyConfig.json has changes since the last build
projectFilesContext.Dependencies.DependencyFiles = new[]
{
"Assets/MyConfig.json"
};
// Tell the build system to copy the directory to the Gradle project
projectFilesContext.AddDirectoryToCopy("Assets/DirectoryToCopy", "destinationName");
// Pass some data/properties from the Editor to the OnModifyAndroidProjectFiles callback
projectFilesContext.SetData("companyName", PlayerSettings.companyName);
// Data can be any serializable object
projectFilesContext.SetData<Vector2>("cursorHotspot", PlayerSettings.cursorHotspot);
return projectFilesContext;
}
public override void OnModifyAndroidProjectFiles(AndroidProjectFiles projectFiles)
{
// Produce an object that will be serialized to <gradleProject>/unityLibrary/customPlugin/build.gradle
var buildGradleFile = new ModuleBuildGradleFile();
buildGradleFile.Android.AaptOptions.NoCompress.Set(new []{"someValue"});
// Set the object that will be serialized to <gradleProject>/unityLibrary/customPlugin/build.gradle
projectFiles.SetBuildGradleFile(_myLibBuildGradle, buildGradleFile);
// Do some changes based on MyConfig.json here
// ...
// Get the data/properties that were declare in Setup
var companyName = projectFiles.GetData("companyName");
var cursorHotspot = projectFiles.GetData<Vector2>("cursorHotspot");
// Do something based on the data
// ...
}
}