Nothing wrong with Android, mostly iOS
Undefined symbol: _res_9_getservers
Undefined symbol: _res_9_ninit
Undefined symbol: _res_9_ndestroy
import libresolv.9.tbd and libresolv.tbd
It crashes as soon as it is played on the mobile phone, and the following framework is missing from the log
libgmefdkaac.framework
libgmelamemp3.framework
libgmeogg.framework
libgmesoundtouch.framework
Finally, add it directly to the post-package processing
using UnityEngine;
using System.IO;
using UnityEditor.Callbacks;
using UnityEditor;
using System.Collections;
#if UNITY_IOS
using UnityEditor.iOS.Xcode;
using UnityEditor.iOS.Xcode.Extensions;
#endif
public class PluginsProcessBuild
{
#if UNITY_IOS
[PostProcessBuildAttribute(88)]
public static void onPostProcessBuild(BuildTarget buildTarget, string path)
{
if (buildTarget != BuildTarget.iOS)
{
Debug.LogWarning("Target is not iPhone. XCodePostProcess will not run");
return;
}
//导入文件
PBXProject proj = new PBXProject();
string projPath = path + "/Unity-iPhone.xcodeproj/project.pbxproj";
proj.ReadFromFile(projPath);
//xcode Target
string target = proj.GetUnityMainTargetGuid();
string unityTarget = proj.GetUnityFrameworkTargetGuid();
// add extra framework(s)
proj.AddFrameworkToProject(target, "AssetsLibrary.framework", false);
proj.AddFrameworkToProject(target, "Photos.framework", true);
proj.AddFrameworkToProject(target, "SystemConfiguration.framework", true);
proj.AddFrameworkToProject(target, "security.framework", false);
proj.AddFrameworkToProject(target, "CoreTelephony.framework", false);
proj.AddBuildProperty(target, "OTHER_LDFLAGS", "-ObjC");
proj.AddBuildProperty(target, "ENABLE_BITCODE", "NO");
#region GMESDK相关
const string defaultLocationInProj = "GMESDK/Plugins/iOS";
const string libgmefdkaacFrameworkName = "libgmefdkaac.framework";
const string libgmelamemp3FrameworkName = "libgmelamemp3.framework";
const string libgmeoggFrameworkName = "libgmeogg.framework";
const string libgmesoundtouchFrameworkName = "libgmesoundtouch.framework";
string libgmefdkaacFrameworkPath = Path.Combine(defaultLocationInProj, libgmefdkaacFrameworkName);
string libgmelamemp3FrameworkPath = Path.Combine(defaultLocationInProj, libgmelamemp3FrameworkName);
string libgmeoggFrameworkPath = Path.Combine(defaultLocationInProj, libgmeoggFrameworkName);
string libgmesoundtouchFrameworkPath = Path.Combine(defaultLocationInProj, libgmesoundtouchFrameworkName);
string fileGuid = proj.AddFile(libgmefdkaacFrameworkPath, "Frameworks/" + libgmefdkaacFrameworkPath, PBXSourceTree.Sdk);
PBXProjectExtensions.AddFileToEmbedFrameworks(proj, target, fileGuid);
fileGuid = proj.AddFile(libgmelamemp3FrameworkPath, "Frameworks/" + libgmelamemp3FrameworkPath, PBXSourceTree.Sdk);
PBXProjectExtensions.AddFileToEmbedFrameworks(proj, target, fileGuid);
fileGuid = proj.AddFile(libgmeoggFrameworkPath, "Frameworks/" + libgmeoggFrameworkPath, PBXSourceTree.Sdk);
PBXProjectExtensions.AddFileToEmbedFrameworks(proj, target, fileGuid);
fileGuid = proj.AddFile(libgmesoundtouchFrameworkPath, "Frameworks/" + libgmesoundtouchFrameworkPath, PBXSourceTree.Sdk);
PBXProjectExtensions.AddFileToEmbedFrameworks(proj, target, fileGuid);
proj.SetBuildProperty(target, "LD_RUNPATH_SEARCH_PATHS", "$(inherited) @executable_path/Frameworks");
string fileGuidlibresolv9 = proj.AddFile("usr/lib/libresolv.9.tbd", "Libraries/libresolv.9.tbd", PBXSourceTree.Sdk);
proj.AddFileToBuild(target, fileGuidlibresolv9);
proj.AddFileToBuild(unityTarget, fileGuidlibresolv9);
string fileGuidlibresolv = proj.AddFile("usr/lib/libresolv.tbd", "Libraries/libresolv.tbd", PBXSourceTree.Sdk);
proj.AddFileToBuild(target, fileGuidlibresolv);
proj.AddFileToBuild(unityTarget, fileGuidlibresolv);
#endregion
string fileGuidLibz = proj.AddFile("usr/lib/libz.tbd", "Libraries/libz.tbd", PBXSourceTree.Sdk);
proj.AddFileToBuild(target, fileGuidLibz);
proj.AddFileToBuild(unityTarget, fileGuidLibz);
string fileGuidSqlite = proj.AddFile("usr/lib/libsqlite3.tbd", "Libraries/libsqlite3.tbd", PBXSourceTree.Sdk);
proj.AddFileToBuild(target, fileGuidSqlite);
proj.AddFileToBuild(unityTarget, fileGuidSqlite);
// rewrite to file
File.WriteAllText(projPath, proj.WriteToString());
}
#endif
}