Problems encountered when Unity accesses Tencent GMESDK

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
}

Guess you like

Origin blog.csdn.net/AWNUXCVBN/article/details/128394866