Unity が Tencent GMESDK にアクセスする際に発生する問題

Android、主にiOSに問題はありません

Undefined symbol: _res_9_getservers
Undefined symbol: _res_9_ninit
Undefined symbol: _res_9_ndestroy

libresolv.9.tbd と libresolv.tbd をインポートする

携帯電話で再生するとすぐにクラッシュし、ログに次のフレームワークが欠落しています

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
}

おすすめ

転載: blog.csdn.net/AWNUXCVBN/article/details/128394866