当前位置:   UNITY > 正文

【问题记录】Unity打包iOS真机闪退,报错Error loading ***.app/Frameworks/UnityFramework.framework/UnityFramework_unity ios闪退

unity ios闪退

报错:

Error loading /var/containers/Bundle/Application/61CD0810-9E62-452B-8129-3DAC706B56C5/HarvestBumpers.app/Frameworks/UnityFramework.framework/UnityFramework: dlopen(/var/containers/Bundle/Application/61CD0810-9E62-452B-8129-3DAC706B56C5/HarvestBumpers.app/Frameworks/UnityFramework.framework/UnityFramework, 0x0109): dependent dylib '/System/Library/Frameworks/AdServices.framework/AdServices' not found for '/private/var/containers/Bundle/Application/61CD0810-9E62-452B-8129-3DAC706B56C5/HarvestBumpers.app/Frameworks/UnityFramework.framework/UnityFramework'

问题出现在AdServices' not found,缺少AdServices.framework文件

iOS 13.6闪退,iOS 15.1/15.5正常

原因:

接入的iOS SDK中需要手动添加库/框架,其中AdServices是可选的,仅支持14.3及以上版本iOS。

实际设置为了必选的,导致低版本iOS异常。

解决:

将AdServices.framework设置为可选项:

方式一:直接修改XCode工程,将Required改为Optional

方式二:Unity打包后处理,false改为true

project.AddFrameworkToProject(frameGuid,"AdServices.framework",true)

  1. using UnityEngine;
  2. using UnityEditor;
  3. using UnityEditor.Build;
  4. using UnityEditor.Build.Reporting;
  5. using UnityEditor.Callbacks;
  6. using System.IO;
  7. using System.Linq;
  8. #if UNITY_EDITOR_OSX
  9. using UnityEditor.iOS.Xcode;
  10. #endif
  11. public class BuildCallback1
  12. {
  13. //回调 打包后操作
  14. [PostProcessBuild(1)]
  15. private static void PostProcessBuildCallback(BuildTarget target,string projectPath)
  16. {
  17. if(target == BuildTarget.iOS)
  18. {
  19. #if UNITY_EDITOR_OSX
  20. AfterBuild_IOS(projectPath);
  21. #endif
  22. }
  23. }
  24. #if UNITY_EDITOR_OSX
  25. private static void AfterBuild_IOS(string projectPath)
  26. {
  27. //修改设置属性
  28. string projPath = PBXProject.GetPBXProjectPath(projectPath);
  29. PBXProject project = new PBXProject();
  30. project.ReadFromString(File.ReadAllText(projPath));
  31. string frameGuid = project.GetUnityFrameworkTargetGuid();
  32. //True if the framework is optional (i.e. weakly linked), false if the framework is required.
  33. project.AddFrameworkToProject(frameGuid,"AdServices.framework",true);
  34. /*
  35. * 其他后处理操作
  36. */
  37. File.WriteAllText(projPath,project.WriteToString());
  38. Debug.Log("Xcode 后续处理完成");
  39. }
  40. #endif
  41. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/blog/UNITY/detail/36302
推荐阅读
相关标签
  

闽ICP备14008679号