Unity接入腾讯GMESDK遇到的问题

3 篇文章 0 订阅

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
}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

地狱为王

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值