static void OnPostprocessAllAssets(string[] importedAssets, string[] deletedAssets, string[] movedAssets, string[] movedFromAssetPaths) { foreach (var assetPath in importedAssets) { //games-ids.xml was created or modified; if (assetPath.Equals(AN_Settings.ANDROID_GAMES_IDS_FILE_PATH)) { AN_GoolgePlayRersources.LoadLocalGamesIds(); } AN_FirebaseDefinesResolver.ProcessAssetImport(assetPath); AN_ResolveManager.ProcessAssetImport(assetPath); } foreach (var assetPath in deletedAssets) { //games-ids.xml was deleted; if (assetPath.Equals(AN_Settings.ANDROID_GAMES_IDS_FILE_PATH)) { AN_GoolgePlayRersources.DropGamesIds(); } AN_FirebaseDefinesResolver.ProcessAssetDelete(assetPath); AN_ResolveManager.ProcessAssetDelete(assetPath); } }
private static void ResolveBinaryLibs(AN_AndroidBuildRequirements requirements) { if (AN_Settings.Instance.UseUnityJarResolver) { AN_ResolveManager.Resolve(requirements.BinaryDependencies); SA_AssetDatabase.DeleteAsset(AN_Settings.ANDROID_MAVEN_FOLDER); } else { AN_ResolveManager.Resolve(new List <AN_BinaryDependency>()); List <string> repositoriesToAdd = new List <string>(); List <string> repositorysToRemove = new List <string>(); List <string> mavenLibs = SA_AssetDatabase.FindAssetsWithExtentions(AN_Settings.ANDROID_MAVEN_FOLDER); foreach (var lib in mavenLibs) { // We are only interested in folder, we also assume all folders are located inside a root folder. if (!SA_AssetDatabase.IsValidFolder(lib)) { continue; } string libName = SA_AssetDatabase.GetFileName(lib); if (!requirements.HasBinaryDependency(libName)) { repositorysToRemove.Add(libName); } } foreach (var dep in requirements.BinaryDependencies) { string libPath = AN_Settings.ANDROID_MAVEN_FOLDER + dep.GetLocalRepositoryName(); if (!SA_AssetDatabase.IsDirectoryExists(libPath)) { string localRepositoryName = dep.GetLocalRepositoryName(); if (!repositoriesToAdd.Contains(localRepositoryName)) { repositoriesToAdd.Add(localRepositoryName); } } } SA_PluginsEditor.UninstallLibs(AN_Settings.ANDROID_MAVEN_FOLDER, repositorysToRemove); foreach (var lib in repositoriesToAdd) { string source = AN_Settings.ANDROID_MAVEN_FOLDER_DISABLED + lib; string destination = AN_Settings.ANDROID_MAVEN_FOLDER + lib; SA_PluginsEditor.InstallLibFolder(source, destination); } } }
public override void OnGUI() { using (new SA_WindowBlockWithSpace(new GUIContent("Log Level"))) { EditorGUILayout.HelpBox("We recommend you to keep full logging level while your project in development mode. " + "Full communication logs between Native plugin part & " + "Unity side will be only available with Info logging level enabled. \n" + "Disabling the error logs isn't recommended.", MessageType.Info); using (new SA_GuiBeginHorizontal()) { var logLevel = AN_Settings.Instance.LogLevel; logLevel.Info = GUILayout.Toggle(logLevel.Info, Info, GUILayout.Width(80)); logLevel.Warning = GUILayout.Toggle(logLevel.Warning, Warnings, GUILayout.Width(100)); logLevel.Error = GUILayout.Toggle(logLevel.Error, Errors, GUILayout.Width(100)); } EditorGUILayout.Space(); EditorGUILayout.HelpBox("On some Android devices, Log.d or Log.e methods will not print anything to console," + "so sometimes the only ability to see the logs is to enable the WTF printing. This will make all" + "logs to be printed with Log.wtf method despite message log level.", MessageType.Info); AN_Settings.Instance.WTFLogging = GUILayout.Toggle(AN_Settings.Instance.WTFLogging, "WTF Logging", GUILayout.Width(130)); } using (new SA_WindowBlockWithSpace(new GUIContent("Environment Management"))) { EditorGUILayout.HelpBox("The Android Native plugin will alter manifest " + "automatically for your convenience. But in case you want to do it manually, " + "you may un-toggle the checkbox below \n" + "The plugin manifest is located under: " + AN_Settings.ANDROID_CORE_LIB_PATH, MessageType.Info); AN_Settings.Instance.ManifestManagement = SA_EditorGUILayout.ToggleFiled("Auto Manifest Management", AN_Settings.Instance.ManifestManagement, SA_StyledToggle.ToggleType.EnabledDisabled); EditorGUILayout.Space(); EditorGUILayout.HelpBox("The Android Resolver plugin will download and integrate Android library dependencies " + "and handle any conflicts between plugins that share the same dependencies. \n" + "The Resolver is an additional third-party plugin. You need to download, install and configure it" + "Before Android Native will able to rely on this plugin and disable internal libraries.", MessageType.Info); using (new SA_GuiBeginHorizontal()) { GUILayout.Label(UnityJarResolverText, GUILayout.MaxWidth(120)); if (AN_Settings.Instance.UseUnityJarResolver) { if (AN_Settings.Instance.UnityJarResolverVersion != null && AN_Settings.Instance.UnityJarResolverVersion.Length > 0) { UnityJarResolverState = new GUIContent("version " + AN_Settings.Instance.UnityJarResolverVersion, "Version of current Jar Resolver."); } else { UnityJarResolverState = new GUIContent("Enabled"); } } else { UnityJarResolverState = new GUIContent("Disabled"); } GUILayout.Label(UnityJarResolverState, GUILayout.MaxWidth(100)); GUILayout.FlexibleSpace(); GUIContent restartResolveContent = new GUIContent(" Restart Resolver", SA_Skin.GetGenericIcon("refresh.png")); var pressed = GUILayout.Button(restartResolveContent, new GUILayoutOption[2] { GUILayout.Width(140), GUILayout.Height(15) }); if (pressed) { AN_ResolveManager.ProcessAssets(); GUIUtility.ExitGUI(); } } using (new SA_GuiBeginHorizontal()) { GUILayout.FlexibleSpace(); var click = m_JarResolverLink.DrawWithCalcSize(); if (click) { Application.OpenURL(JAR_RESOLVER_DOC_LINK); } } } using (new SA_WindowBlockWithSpace("Storage")) { EditorGUILayout.HelpBox("When plugin needs to have a valid URI for an image, " + "it can be saved using the Internal or External storage. " + "In case saving attempt is failed, an alternative option will be used. " + "You can define if Internal or External storage should be a preferred option.", MessageType.Info); AN_Settings.Instance.PreferredImagesStorage = (AN_Settings.StorageType)SA_EditorGUILayout.EnumPopup("Preferred Images Storage", AN_Settings.Instance.PreferredImagesStorage); using (new SA_GuiBeginHorizontal()) { GUILayout.FlexibleSpace(); var click = m_StorageOptionsLink.DrawWithCalcSize(); if (click) { Application.OpenURL(STORAGE_OPTIONS_DOC_LINK); } } } using (new SA_WindowBlockWithSpace("Debug")) { EditorGUILayout.HelpBox("API Resolver's are normally launched with build pre-process stage", MessageType.Info); var pressed = GUILayout.Button("Start API Resolvers"); if (pressed) { SA_PluginsEditor.DisableLibstAtPath(AN_Settings.ANDROID_FOLDER_DISABLED); AN_Preprocessor.Resolve(); GUIUtility.ExitGUI(); } EditorGUILayout.HelpBox("Action will reset all of the plugin settings to default.", MessageType.Info); pressed = GUILayout.Button("Reset To Defaults"); if (pressed) { AN_Settings.Delete(); AN_Preprocessor.Resolve(); } } }
//-------------------------------------- // AN_PluginInstallationProcessor //-------------------------------------- protected override void OnInstall() { // Let's check if we have FB SKD and Jar Resolver in the project. AN_ResolveManager.ProcessAssets(); AN_FirebaseDefinesResolver.ProcessAssets(); }