Android端没什么问题,主要是iOS
Undefined symbol: _res_9_getservers
Undefined symbol: _res_9_ninit
Undefined symbol: _res_9_ndestroy
导入libresolv.9.tbd和libresolv.tbd
打出到手机上一运行就崩溃,看日志缺少以下framework
libgmefdkaac.framework
libgmelamemp3.framework
libgmeogg.framework
libgmesoundtouch.framework
最后直接添加到打包后处理中去
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
}