echo $(uname) // 输出Darwin 注:Darwin为MacOS的内核
scutil --get ComputerName // 输出计算机名
scutil --get HostName // 输出主机名
chflags hidden ./crash/ // 隐藏当前目录下的crash文件夹
chflags nohidden "/Users/kekec/12.txt" // 取消对/Users/kekec/12.txt文件的隐藏
SetFile -a V "/Users/kekec/docs/" // 隐藏/Users/kekec下的docs目录
SetFile -a v "/Users/kekec/docs/" // 取消对/Users/kekec下的docs目录的隐藏
SetFile -a v "/Users/kekec/12.txt" // 取消对/Users/kekec/12.txt文件的隐藏
zip -r -y -1 UAGame.dSYM.zip UAGame.dSYM // 将当前目录下的UAGame.dSYM目录压缩成UAGame.dSYM.zip(保持原有目录结构)
/usr/bin/dsymutil "/Users/admin/UAGroup/R6Game/Binaries/IOS/UAGame" -o "/Users/admin/UAGroup/R6Game/Binaries/IOS/UAGame.dSYM" // 从/Users/admin/UAGroup/R6Game/Binaries/IOS/UAGame生成UAGame.dSYM符号表 注:UAGame.dSYM为一个目录
/usr/bin/dsymutil -s "/Users/admin/UAGroup/R6Game/Binaries/IOS/UAGame" // 打印UAGame中所有的符号
---------------------------------------------------------------------- Symbol table for: 'UAGame' (arm64) ---------------------------------------------------------------------- Index n_strx n_type n_sect n_desc n_value ======== -------- ------------------ ------ ------ ---------------- [ 0] 0000e9f7 1e (PEXT SECT ) 01 0010 0000000100000000 '__mh_execute_header' [ 1] 0000ea0b 0e ( SECT ) 01 0000 0000000100004000 '-[RNWeakObject parent]' [ 2] 0000ea22 0e ( SECT ) 01 0000 0000000100004020 '-[RNWeakObject setParent:]' [ 3] 0000ea3d 0e ( SECT ) 01 0000 0000000100004034 '-[RNWeakObject .cxx_destruct]' [ 4] 0000ea5b 0e ( SECT ) 01 0000 0000000100004044 '-[UIView(Hippy) hippyTag]' [ 5] 0000ea75 0e ( SECT ) 01 0000 0000000100004048 '-[UIView(Hippy) setHippyTag:]' [ 6] 0000ea93 0e ( SECT ) 01 0000 0000000100004068 '-[UIView(Hippy) rootTag]' [ 7] 0000eaac 0e ( SECT ) 01 0000 000000010000406c '-[UIView(Hippy) setRootTag:]' [ 8] 0000eac9 0e ( SECT ) 01 0000 000000010000408c '-[UIView(Hippy) onInterceptTouchEvent]' [ 9] 0000eaf0 0e ( SECT ) 01 0000 00000001000040e4 '-[UIView(Hippy) setOnInterceptTouchEvent:]' [ 10] 0000eb1b 0e ( SECT ) 01 0000 000000010000415c '-[UIView(Hippy) props]' [ 11] 0000eb32 0e ( SECT ) 01 0000 0000000100004160 '-[UIView(Hippy) setProps:]' 。。。 。。。 [255544] 00fe15b4 1e (PEXT SECT ) 01 0000 00000001044290e8 '__ZN14USGGameStatics11GetGameTimeEP7UObject' [255545] 00fe15e0 1e (PEXT SECT ) 01 0000 0000000104429130 '__ZN14USGGameStatics18GetGameRunningTimeEP7UObject' [255546] 00fe1613 1e (PEXT SECT ) 01 0000 00000001044291f0 '__ZN14USGGameStatics20GetGameRemainingTimeEP7UObject' [255547] 00fe1648 1e (PEXT SECT ) 01 0000 00000001044292c0 '__ZN14USGGameStatics23GetGameRemainingTimeStrEP7UObject' [255548] 00fe1680 1e (PEXT SECT ) 01 0000 00000001044293d4 '__ZN14USGGameStatics26ShouldGiveBackTeammateItemEP7UObject' [255549] 00fe16bb 1e (PEXT SECT ) 01 0000 0000000104429420 '__ZN14USGGameStatics15SetTimeDilationEP7UObjectf' [255550] 00fe16ec 1e (PEXT SECT ) 01 0000 0000000104429470 '__ZN14USGGameStatics25AddActorForDestroyInFrameEP7UObjectP6AActor' [255551] 00fe172e 1e (PEXT SECT ) 01 0080 00000001044295c8 '__ZN15USGActorStatics20FindComponentByClassI40USGGameStateDestroyActorManagerComponentEEPT_P6AActor' [255552] 00fe1792 1e (PEXT SECT ) 01 0000 0000000104429698 '__ZN14USGGameStatics29AddCharacterForDestroyInFrameEP7UObjectP6AActor7FVector' [255553] 00fe17e0 1e (PEXT SECT ) 01 0000 0000000104429818 '__ZN14USGGameStatics16SpawnAICharacterEP15ASGAISpawnPointRK5FNamei' [255554] 00fe1823 1e (PEXT SECT ) 01 0000 0000000104429e50 '__ZN14USGGameStatics16GetCompareResultEi15ENumCompareTypeii' [255555] 00fe185f 1e (PEXT SECT ) 01 0000 0000000104429edc '__ZN14USGGameStatics8DrawIconEP12ASGCharacterP7UCanvasP8UTexture' [255556] 00fe18a0 1e (PEXT SECT ) 01 0000 0000000104429ee4 '__ZN14USGGameStatics13GetDeviceNameEv' [255557] 00fe18c6 1e (PEXT SECT ) 01 0000 0000000104429fc8 '__ZN14USGGameStatics19GetSimpleDeviceNameEv' [255558] 00fe18f2 1e (PEXT SECT ) 01 0000 000000010442a0ac '__ZN14USGGameStatics18MapNameShortToLongERK7FString' [255559] 00fe1926 0e ( SECT ) 01 0000 000000010442a58c '__ZZN14USGGameStatics18MapNameShortToLongERK7FStringENK4$_75clI19FLogCategoryLogTempA95_DsJEEEDaRKT_RKT0_PKcDpRKT1_' [255560] 00fe199a 1e (PEXT SECT ) 01 0000 000000010442a770 '__ZN14USGGameStatics14SetPlayerWhereEP7UObjecti' [255561] 00fe19ca 1e (PEXT SECT ) 01 0000 000000010442a88c '__ZN14USGGameStatics16MarkPackageDirtyEP7UObject' [255562] 00fe19fb 1e (PEXT SECT ) 01 0000 000000010442a898 '__ZN14USGGameStatics27WeightedRandomSampling_AResE6TArrayI6TTupleIJP12ASGInventoryfiEE22TSizedDefaultAllocatorILi32EEEi' [255563] 00fe1a73 1e (PEXT SECT ) 01 0000 000000010442ab04 '__ZN14USGGameStatics27WeightedRandomSampling_AResE6TArrayIf22TSizedDefaultAllocatorILi32EEEi' [255564] 00fe1ad0 1e (PEXT SECT ) 01 0000 000000010442ad9c '__ZN14USGGameStatics16GetDeathDropTypeEP7UObject' [255565] 00fe1b01 1e (PEXT SECT ) 01 0000 000000010442addc '__ZN14USGGameStatics16SetDeathDropTypeEP7UObject14EDeathDropType' [255566] 00fe1b42 1e (PEXT SECT ) 01 0000 000000010442ae28 '__ZN14USGGameStatics36CheckCharacterCanLootCorpseContainerEP7UObjectyP12ASGInventory' [255567] 00fe1b97 1e (PEXT SECT ) 01 0000 000000010442ae84 '__ZN14USGGameStatics41CheckCharacterCanLootCorpseContainerByGIDEP7UObjectyy' [255568] 00fe1be3 1e (PEXT SECT ) 01 0000 000000010442aee0 '__ZN14USGGameStatics20PlaceCurseOnTeammateEP7UObjectyy' [255569] 00fe1c1a 1e (PEXT SECT ) 01 0000 000000010442af40 '__ZN14USGGameStatics21RemoveCurseOnTeammateEP7UObjectyy' 。。。 。。。
上面的符号可以使用c++filt命令来反修饰(Demangle):c++filt __ZN14USGGameStatics16SpawnAICharacterEP15ASGAISpawnPointRK5FNamei //输出:USGGameStatics::SpawnAICharacter(ASGAISpawnPoint*, FName const&, int)
/usr/bin/dsymutil --statistics "/Users/admin/UAGroup/R6Game/Binaries/IOS/UAGame" // 打印如下信息
warning: (arm64) /Users/admin/UAGroup/UnrealEngine/Engine/Intermediate/UnzippedFrameworks/BeaconAPI_BaseTVK/BeaconAPI_BaseTVK/BeaconAPI_BaseTVK.framework/BeaconAPI_BaseTVK(BeaconBaseInterface.o) unable to open object file: No such file or directory warning: (arm64) /Users/admin/UAGroup/UnrealEngine/Engine/Intermediate/UnzippedFrameworks/BeaconAPI_BaseTVK/BeaconAPI_BaseTVK/BeaconAPI_BaseTVK.framework/BeaconAPI_BaseTVK(BeaconErrorPopulator.o) unable to open object file: No such file or directory warning: (arm64) /Users/admin/UAGroup/UnrealEngine/Engine/Intermediate/UnzippedFrameworks/BeaconAPI_BaseTVK/BeaconAPI_BaseTVK/BeaconAPI_BaseTVK.framework/BeaconAPI_BaseTVK(JCEBaseObject.o) unable to open object file: No such file or directory warning: (arm64) /Users/admin/UAGroup/UnrealEngine/Engine/Intermediate/UnzippedFrameworks/BeaconAPI_BaseTVK/BeaconAPI_BaseTVK/BeaconAPI_BaseTVK.framework/BeaconAPI_BaseTVK(JceEnumHelper.o) unable to open object file: No such file or directory 。。。 。。。 warning: (arm64) /Users/admin/UAGroup/UnrealEngine/Engine/Intermediate/UnzippedFrameworks/mars/mars/mars.framework/mars(log_zlib_buffer.cc.o) unable to open object file: No such file or directory warning: (arm64) /Users/admin/UAGroup/UnrealEngine/Engine/Intermediate/UnzippedFrameworks/mars/mars/mars.framework/mars(log_zstd_buffer.cc.o) unable to open object file: No such file or directory warning: (arm64) /Users/admin/UAGroup/UnrealEngine/Engine/Intermediate/UnzippedFrameworks/mars/mars/mars.framework/mars(log_crypt.cc.o) unable to open object file: No such file or directory warning: (arm64) /Users/admin/UAGroup/UnrealEngine/Engine/Intermediate/UnzippedFrameworks/mars/mars/mars.framework/mars(uECC.c.o) unable to open object file: No such file or directory warning: (arm64) /Users/admin/UAGroup/UnrealEngine/Engine/Intermediate/UnzippedFrameworks/SuperPlayer/SuperPlayer/SuperPlayer.framework/SuperPlayer(SPWorkerQueue.o) unable to open object file: No such file or directory warning: (arm64) /Users/admin/UAGroup/UnrealEngine/Engine/Intermediate/UnzippedFrameworks/SuperPlayer/SuperPlayer/SuperPlayer.framework/SuperPlayer(SPCGIRequestParam.o) unable to open object file: No such file or directory warning: (arm64) /Users/admin/UAGroup/UnrealEngine/Engine/Intermediate/UnzippedFrameworks/SuperPlayer/SuperPlayer/SuperPlayer.framework/SuperPlayer(SPPlayerUtils.o) unable to open object file: No such file or directory warning: (arm64) /Users/admin/UAGroup/UnrealEngine/Engine/Intermediate/UnzippedFrameworks/SuperPlayer/SuperPlayer/SuperPlayer.framework/SuperPlayer(SPPrepareUtils.o) unable to open object file: No such file or directory warning: (arm64) /Users/admin/UAGroup/UnrealEngine/Engine/Intermediate/UnzippedFrameworks/SuperPlayer/SuperPlayer/SuperPlayer.framework/SuperPlayer(SPNetVideoInfo.o) unable to open object file: No such file or directory 。。。 。。。 warning: (arm64) /Users/admin/UAGroup/R6Game/Plugins/Wwise/ThirdParty/iOS/Profile-iphoneos/lib/libAkSoundEngine.a(AkMidiBaseCtx.o) unable to open object file: No such file or directory warning: (arm64) /Users/admin/UAGroup/R6Game/Plugins/Wwise/ThirdParty/iOS/Profile-iphoneos/lib/libAkSoundEngine.a(AkMidiBaseMgr.o) unable to open object file: No such file or directory warning: (arm64) /Users/admin/UAGroup/R6Game/Plugins/Wwise/ThirdParty/iOS/Profile-iphoneos/lib/libAkSoundEngine.a(AkMidiClipCtx.o) unable to open object file: No such file or directory warning: (arm64) /Users/admin/UAGroup/R6Game/Plugins/Wwise/ThirdParty/iOS/Profile-iphoneos/lib/libAkSoundEngine.a(AkMidiClipMgr.o) unable to open object file: No such file or directory warning: (arm64) /Users/admin/UAGroup/R6Game/Plugins/Wwise/ThirdParty/iOS/Profile-iphoneos/lib/libAkSoundEngine.a(AkMidiDeviceCtx.o) unable to open object file: No such file or directory warning: (arm64) /Users/admin/UAGroup/R6Game/Plugins/Wwise/ThirdParty/iOS/Profile-iphoneos/lib/libAkSoundEngine.a(AkMidiDeviceMgr.o) unable to open object file: No such file or directory warning: (arm64) /Users/admin/UAGroup/R6Game/Plugins/Wwise/ThirdParty/iOS/Profile-iphoneos/lib/libAkSoundEngine.a(AkMidiNoteCtx.o) unable to open object file: No such file or directory warning: (arm64) /Users/admin/UAGroup/R6Game/Plugins/Wwise/ThirdParty/iOS/Profile-iphoneos/lib/libAkSoundEngine.a(AkMidiParseSe.o) unable to open object file: No such file or directory 。。。 。。。 warning: (arm64) /Users/admin/UAGroup/R6Game/Plugins/Wwise/ThirdParty/iOS/Profile-iphoneos/lib/libAkMemoryMgr.a(rpmalloc.o) unable to open object file: No such file or directory warning: (arm64) /Users/admin/UAGroup/R6Game/Plugins/Wwise/ThirdParty/iOS/Profile-iphoneos/lib/libAkMemoryMgr.a(AkMemoryMgr.o) unable to open object file: No such file or directory warning: (arm64) /Users/admin/UAGroup/R6Game/Plugins/Wwise/ThirdParty/iOS/Profile-iphoneos/lib/libAkMemoryMgr.a(AkMemoryMgrBase.o) unable to open object file: No such file or directory warning: (arm64) /Users/admin/UAGroup/R6Game/Plugins/Wwise/ThirdParty/iOS/Profile-iphoneos/lib/libAkStreamMgr.a(AkDeviceBase.o) unable to open object file: No such file or directory warning: (arm64) /Users/admin/UAGroup/R6Game/Plugins/Wwise/ThirdParty/iOS/Profile-iphoneos/lib/libAkStreamMgr.a(AkDeviceBlocking.o) unable to open object file: No such file or directory warning: (arm64) /Users/admin/UAGroup/R6Game/Plugins/Wwise/ThirdParty/iOS/Profile-iphoneos/lib/libAkStreamMgr.a(AkDeviceDeferredLinedUp.o) unable to open object file: No such file or directory warning: (arm64) /Users/admin/UAGroup/R6Game/Plugins/Wwise/ThirdParty/iOS/Profile-iphoneos/lib/libAkStreamMgr.a(AkIOMemMgr.o) unable to open object file: No such file or directory warning: (arm64) /Users/admin/UAGroup/R6Game/Plugins/Wwise/ThirdParty/iOS/Profile-iphoneos/lib/libAkStreamMgr.a(AkStreamMgr.o) unable to open object file: No such file or directory warning: (arm64) /Users/admin/UAGroup/R6Game/Plugins/Wwise/ThirdParty/iOS/Profile-iphoneos/lib/libAkStreamMgr.a(AkTransferDeferred.o) unable to open object file: No such file or directory warning: (arm64) /Users/admin/UAGroup/R6Game/Plugins/Wwise/ThirdParty/iOS/Profile-iphoneos/lib/libAkStreamMgr.a(AkIOThread.o) unable to open object file: No such file or directory warning: (arm64) /Users/admin/UAGroup/R6Game/Plugins/Wwise/ThirdParty/iOS/Profile-iphoneos/lib/libAkMusicEngine.a(MusicNodeProxyConnected.o) unable to open object file: No such file or directory warning: (arm64) /Users/admin/UAGroup/R6Game/Plugins/Wwise/ThirdParty/iOS/Profile-iphoneos/lib/libAkMusicEngine.a(MusicRanSeqProxyConnected.o) unable to open object file: No such file or directory warning: (arm64) /Users/admin/UAGroup/R6Game/Plugins/Wwise/ThirdParty/iOS/Profile-iphoneos/lib/libAkMusicEngine.a(MusicSwitchProxyConnected.o) unable to open object file: No such file or directory warning: (arm64) /Users/admin/UAGroup/R6Game/Plugins/Wwise/ThirdParty/iOS/Profile-iphoneos/lib/libAkMusicEngine.a(MusicTransAwareProxyConnected.o) unable to open object file: No such file or directory warning: (arm64) /Users/admin/UAGroup/R6Game/Plugins/Wwise/ThirdParty/iOS/Profile-iphoneos/lib/libAkMusicEngine.a(ProxyMusic.o) unable to open object file: No such file or directory warning: (arm64) /Users/admin/UAGroup/R6Game/Plugins/Wwise/ThirdParty/iOS/Profile-iphoneos/lib/libAkMusicEngine.a(SegmentProxyConnected.o) unable to open object file: No such file or directory warning: (arm64) /Users/admin/UAGroup/R6Game/Plugins/Wwise/ThirdParty/iOS/Profile-iphoneos/lib/libAkMusicEngine.a(TrackProxyConnected.o) unable to open object file: No such file or directory 。。。 。。。 warning: (arm64) /Users/admin/UAGroup/UnrealEngine/Engine/Source/ThirdParty/libPNG/libPNG-1.5.2/lib/ios/Device/libpng152.a(pngwrite.o) unable to open object file: No such file or directory warning: (arm64) /Users/admin/UAGroup/UnrealEngine/Engine/Source/ThirdParty/libPNG/libPNG-1.5.2/lib/ios/Device/libpng152.a(pngwtran.o) unable to open object file: No such file or directory warning: (arm64) /Users/admin/UAGroup/UnrealEngine/Engine/Source/ThirdParty/libPNG/libPNG-1.5.2/lib/ios/Device/libpng152.a(pngwutil.o) unable to open object file: No such file or directory warning: (arm64) /Users/admin/UAGroup/R6Game/Intermediate/Build/IOS/UAGame/Development/Launch/Module.Launch.cpp.o unable to open object file: No such file or directory warning: (arm64) /Users/admin/UAGroup/R6Game/Intermediate/Build/IOS/UAGame/Development/AkAudio/Module.AkAudio.1_of_3.cpp.o unable to open object file: No such file or directory warning: (arm64) /Users/admin/UAGroup/R6Game/Intermediate/Build/IOS/UAGame/Development/AkAudio/Module.AkAudio.2_of_3.cpp.o unable to open object file: No such file or directory warning: (arm64) /Users/admin/UAGroup/R6Game/Intermediate/Build/IOS/UAGame/Development/AkAudio/Module.AkAudio.3_of_3.cpp.o unable to open object file: No such file or directory warning: (arm64) /Users/admin/UAGroup/R6Game/Intermediate/Build/IOS/UAGame/Development/AkAudio/Module.AkAudio.gen.1_of_7.cpp.o unable to open object file: No such file or directory warning: (arm64) /Users/admin/UAGroup/R6Game/Intermediate/Build/IOS/UAGame/Development/AkAudio/Module.AkAudio.gen.2_of_7.cpp.o unable to open object file: No such file or directory warning: (arm64) /Users/admin/UAGroup/R6Game/Intermediate/Build/IOS/UAGame/Development/AkAudio/Module.AkAudio.gen.3_of_7.cpp.o unable to open object file: No such file or directory warning: (arm64) /Users/admin/UAGroup/R6Game/Intermediate/Build/IOS/UAGame/Development/AkAudio/Module.AkAudio.gen.4_of_7.cpp.o unable to open object file: No such file or directory warning: (arm64) /Users/admin/UAGroup/R6Game/Intermediate/Build/IOS/UAGame/Development/AkAudio/Module.AkAudio.gen.5_of_7.cpp.o unable to open object file: No such file or directory warning: (arm64) /Users/admin/UAGroup/R6Game/Intermediate/Build/IOS/UAGame/Development/AkAudio/Module.AkAudio.gen.6_of_7.cpp.o unable to open object file: No such file or directory warning: (arm64) /Users/admin/UAGroup/R6Game/Intermediate/Build/IOS/UAGame/Development/AkAudio/Module.AkAudio.gen.7_of_7.cpp.o unable to open object file: No such file or directory warning: (arm64) /Users/admin/UAGroup/R6Game/Intermediate/Build/IOS/UAGame/Development/MFGridLevelsRuntime/Module.MFGridLevelsRuntime.cpp.o unable to open object file: No such file or directory warning: (arm64) /Users/admin/UAGroup/R6Game/Intermediate/Build/IOS/UAGame/Development/MFGridLevelsRuntime/Module.MFGridLevelsRuntime.gen.cpp.o unable to open object file: No such file or directory warning: (arm64) /Users/admin/UAGroup/R6Game/Intermediate/Build/IOS/UAGame/Development/ProceduralMeshComponent/Module.ProceduralMeshComponent.cpp.o unable to open object file: No such file or directory warning: (arm64) /Users/admin/UAGroup/R6Game/Intermediate/Build/IOS/UAGame/Development/ProceduralMeshComponent/Module.ProceduralMeshComponent.gen.cpp.o unable to open object file: No such file or directory warning: (arm64) /Users/admin/UAGroup/R6Game/Intermediate/Build/IOS/UAGame/Development/MFPluginWrapper/Module.MFPluginWrapper.cpp.o unable to open object file: No such file or directory warning: (arm64) /Users/admin/UAGroup/R6Game/Intermediate/Build/IOS/UAGame/Development/MFPluginWrapper/Module.MFPluginWrapper.gen.1_of_6.cpp.o unable to open object file: No such file or directory 。。。 。。。 warning: (arm64) /Users/admin/UAGroup/R6Game/Intermediate/Build/IOS/UAGame/Development/MovieSceneCapture/Module.MovieSceneCapture.cpp.o unable to open object file: No such file or directory warning: (arm64) /Users/admin/UAGroup/R6Game/Intermediate/Build/IOS/UAGame/Development/MovieSceneCapture/Module.MovieSceneCapture.gen.cpp.o unable to open object file: No such file or directory warning: (arm64) /Users/admin/UAGroup/R6Game/Intermediate/Build/IOS/UAGame/Development/MoviePlayer/Module.MoviePlayer.cpp.o unable to open object file: No such file or directory warning: (arm64) /Users/admin/UAGroup/R6Game/Intermediate/Build/IOS/UAGame/Development/MoviePlayer/Module.MoviePlayer.gen.cpp.o unable to open object file: No such file or directory warning: (arm64) /Users/admin/UAGroup/R6Game/Intermediate/Build/IOS/UAGame/Development/StreamingPauseRendering/StreamingPauseRendering.cpp.o unable to open object file: No such file or directory warning: (arm64) /Users/admin/UAGroup/R6Game/Intermediate/Build/IOS/UAGame/Development/SlateNullRenderer/Module.SlateNullRenderer.cpp.o unable to open object file: No such file or directory warning: (arm64) /Users/admin/UAGroup/R6Game/Intermediate/Build/IOS/UAGame/Development/NullReplayStreaming/NullNetworkReplayStreaming.cpp.o unable to open object file: No such file or directory warning: (arm64) /Users/admin/UAGroup/R6Game/Intermediate/Build/IOS/UAGame/Development/LocalFileNetworkReplayStreaming/LocalFileNetworkReplayStreaming.cpp.o unable to open object file: No such file or directory warning: (arm64) /Users/admin/UAGroup/R6Game/Intermediate/Build/IOS/UAGame/Development/HttpReplayStreaming/HttpNetworkReplayStreaming.cpp.o unable to open object file: No such file or directory warning: (arm64) /Users/admin/UAGroup/R6Game/Intermediate/Build/IOS/UAGame/Development/Advertising/Advertising.cpp.o unable to open object file: No such file or directory warning: (arm64) /Users/admin/UAGroup/R6Game/Intermediate/Build/IOS/UAGame/Development/Engine/Module.Engine.1_of_49.cpp.o unable to open object file: No such file or directory warning: (arm64) /Users/admin/UAGroup/R6Game/Intermediate/Build/IOS/UAGame/Development/Engine/Module.Engine.2_of_49.cpp.o unable to open object file: No such file or directory warning: (arm64) /Users/admin/UAGroup/R6Game/Intermediate/Build/IOS/UAGame/Development/Engine/Module.Engine.3_of_49.cpp.o unable to open object file: No such file or directory warning: (arm64) /Users/admin/UAGroup/R6Game/Intermediate/Build/IOS/UAGame/Development/Engine/Module.Engine.4_of_49.cpp.o unable to open object file: No such file or directory warning: (arm64) /Users/admin/UAGroup/R6Game/Intermediate/Build/IOS/UAGame/Development/Engine/Module.Engine.5_of_49.cpp.o unable to open object file: No such file or directory warning: (arm64) /Users/admin/UAGroup/R6Game/Intermediate/Build/IOS/UAGame/Development/Engine/Module.Engine.6_of_49.cpp.o unable to open object file: No such file or directory 。。。 。。。 warning: (arm64) /Volumes/data/workspace/ino/build/MNA.build/Release-iphoneos/MNA.build/Objects-normal/arm64/ino_mna.o unable to open object file: No such file or directory warning: (arm64) /Volumes/data/workspace/ino/build/MNA.build/Release-iphoneos/MNA.build/Objects-normal/arm64/NSString+IPValidation.o unable to open object file: No such file or directory warning: (arm64) /Volumes/data/workspace/ino/build/MNA.build/Release-iphoneos/MNA.build/Objects-normal/arm64/MNASimplePing.o unable to open object file: No such file or directory warning: (arm64) /Volumes/data/workspace/ino/build/MNA.build/Release-iphoneos/MNA.build/Objects-normal/arm64/MNA_vers.o unable to open object file: No such file or directory warning: (arm64) /Applications/Xcode_10.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/arc/libarclite_iphoneos.a(arclite.o) unable to open object file: No such file or directory warning: no debug symbols in executable (-arch arm64) .debug_info section size (in bytes) ------------------------------------------------------------------------------- Filename Object dSYM Change ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Total 0b 0b 0.00% ------------------------------------------------------------------------------
更多dsymutil命令请查看:https://llvm.org/docs/CommandGuide/dsymutil.html
// 将/Users/kekec/crash目录中所有文件打包到size为10m、Volume名为MyDmg的/Users/kekec/tmp.dmg中
hdiutil create -srcfolder "/Users/kekec/crash" -volname "MyDmg" -fs HFS+ -fsargs "-c c=64,a=16,e=16" -format UDRW -size 10m "/Users/kekec/tmp.dmg"
hdiutil attach -readwrite -noverify -noautoopen "/Users/kekec/tmp.dmg" // 以可读写、非验证、不自动打开的方式对/Users/kekec/tmp.dmg进行挂载 注:挂载后,对应/Volumes/MyDmg目录
hdiutil detach /Volumes/MyDmg // 卸载/Volumes/MyDmg
hdiutil convert "/Users/kekec/tmp.dmg" -format UDZO -imagekey zlib-level=9 -o "/Users/kekec/test" // 将/Users/kekec/tmp.dmg压缩并转化为UDZO格式,然后写文件到/Users/kekec/test.dmg
open /System/Applications/Utilities/Console.app // 打开控制台 注:这儿还有一款类似功能的软件:iOS Console
// 启动MyTest1项目的ue4编辑器
open -a /Users/kekec/CodeTest/UnrealEngine/Engine/Binaries/Mac/UE4Editor-Mac-Debug.app/Contents/MacOS/UE4Editor-Mac-Debug --args "/Users/kekec/CodeTest/MyTest1/MyTest1.uproject"
open -a /Users/kekec/CodeTest/UnrealEngine/Engine/Binaries/Mac/UE4Editor-Mac-Debug.app/Contents/MacOS/UE4Editor-Mac-Debug --args "/Users/kekec/CodeTest/MyTest1/MyTest1.uproject /Game/ThirdPersonCPP/Maps/ThirdPersonExampleMap -game -windowed -ResX=1280 -ResY=720"
xcrun dwarfdump --uuid MyGame.dSYM // 查看dSYM符号文件的UUID。显示如下信息:
UUID: 26D77D79-C734-303D-9223-7C1A6EB8374F (arm64) MyGame.dSYM/Contents/Resources/DWARF/MyGame
xcrun dwarfdump --uuid MyGame // 查看MyGame可执行文件的UUID。显示如下信息:
UUID: 26D77D79-C734-303D-9223-7C1A6EB8374F (arm64) MyGame
xcrun dwarfdump --uuid MyGame.dSYM | cut -d" " -f2 // 查看dSYM符号文件的UUID。显示如下信息 注:使用空格分隔,显示第2个字符串
26D77D79-C734-303D-9223-7C1A6EB8374F
xcrun dwarfdump --show-section-sizes ./MyGame.dSYM/Contents/Resources/DWARF/MyGame // 打印符号表MyGame中段的信息
---------------------------------------------------- file: ./MyGame.dSYM/Contents/Resources/DWARF/MyGame ---------------------------------------------------- SECTION SIZE (b) ---------------- -------- __apple_names 36 (0.00%) __apple_types 48 (0.00%) __debug_abbrev 1 (0.00%) __apple_namespac 36 (0.00%) __debug_str 1 (0.00%) __apple_objc 36 (0.00%) Total Size: 158 (0.00%) Total File Size: 142430366 ----------------------------------------------------
注:xcrun全称为command-line tool runner,是Xcode的基本命令行工具,使用它可以基于当前的Xcode版本环境(机器上可以装多个版本的Xcode,通过xcode-select来选择某个版本作为当前版本)来调用其他命令
更多dwarfdump的信息见:https://llvm.org/docs/CommandGuide/llvm-dwarfdump.html
xcrun actool --output-format human-readable-text --notices --warnings --output-partial-info-plist '/Users/admin/UAGroup/R6Game/Intermediate/IOS/Resources/assetcatalog_generated_info.plist' --app-icon AppIcon --product-type com.apple.product-type.application --target-device iphone --target-device ipad --minimum-deployment-target 9.0 --platform iphoneos --enable-on-demand-resources YES --compile '/Users/admin/UAGroup/R6Game/Binaries/IOS/Payload/UAGame.app' '/Users/admin/UAGroup/R6Game/Intermediate/IOS/Resources/Assets.xcassets'
打最低支持ios9的icon资源,会生成Assets.car和AppIcon*.png散文件
/* com.apple.actool.document.notices */ /Users/admin/UAGroup/R6Game/Intermediate/IOS/Resources/Assets.xcassets:./AppIcon.appiconset/[][ipad][76x76][][][1x][][][]: notice: 76x76@1x app icons only apply to iPad apps target ing releases of iOS prior to 10.0. /* com.apple.actool.compilation-results */ /Users/admin/UAGroup/R6Game/Binaries/IOS/Payload/UAGame.app/AppIcon20x20@2x.png /Users/admin/UAGroup/R6Game/Binaries/IOS/Payload/UAGame.app/AppIcon20x20@2x~ipad.png /Users/admin/UAGroup/R6Game/Binaries/IOS/Payload/UAGame.app/AppIcon20x20@3x.png /Users/admin/UAGroup/R6Game/Binaries/IOS/Payload/UAGame.app/AppIcon20x20~ipad.png /Users/admin/UAGroup/R6Game/Binaries/IOS/Payload/UAGame.app/AppIcon29x29@2x.png /Users/admin/UAGroup/R6Game/Binaries/IOS/Payload/UAGame.app/AppIcon29x29@2x~ipad.png /Users/admin/UAGroup/R6Game/Binaries/IOS/Payload/UAGame.app/AppIcon29x29@3x.png /Users/admin/UAGroup/R6Game/Binaries/IOS/Payload/UAGame.app/AppIcon29x29~ipad.png /Users/admin/UAGroup/R6Game/Binaries/IOS/Payload/UAGame.app/AppIcon40x40@2x.png /Users/admin/UAGroup/R6Game/Binaries/IOS/Payload/UAGame.app/AppIcon40x40@2x~ipad.png /Users/admin/UAGroup/R6Game/Binaries/IOS/Payload/UAGame.app/AppIcon40x40@3x.png /Users/admin/UAGroup/R6Game/Binaries/IOS/Payload/UAGame.app/AppIcon40x40~ipad.png /Users/admin/UAGroup/R6Game/Binaries/IOS/Payload/UAGame.app/AppIcon60x60@2x.png /Users/admin/UAGroup/R6Game/Binaries/IOS/Payload/UAGame.app/AppIcon60x60@3x.png /Users/admin/UAGroup/R6Game/Binaries/IOS/Payload/UAGame.app/AppIcon76x76@2x~ipad.png /Users/admin/UAGroup/R6Game/Binaries/IOS/Payload/UAGame.app/AppIcon76x76~ipad.png /Users/admin/UAGroup/R6Game/Binaries/IOS/Payload/UAGame.app/AppIcon83.5x83.5@2x~ipad.png /Users/admin/UAGroup/R6Game/Binaries/IOS/Payload/UAGame.app/Assets.car /Users/admin/UAGroup/R6Game/Intermediate/IOS/Resources/assetcatalog_generated_info.plist
xcrun actool --output-format human-readable-text --notices --warnings --output-partial-info-plist '/Users/admin/UAGroup/R6Game/Intermediate/IOS/Resources/assetcatalog_generated_info.plist' --app-icon AppIcon --product-type com.apple.product-type.application --target-device iphone --target-device ipad --minimum-deployment-target 11.0 --platform iphoneos --enable-on-demand-resources YES --compile '/Users/admin/UAGroup/R6Game/Binaries/IOS/Payload/UAGame.app' '/Users/admin/UAGroup/R6Game/Intermediate/IOS/Resources/Assets.xcassets'
打最低支持ios11的icon资源,会生成Assets.car
/* com.apple.actool.document.notices */ /Users/admin/UAGroup/R6Game/Intermediate/IOS/Resources/Assets.xcassets:./AppIcon.appiconset/[][ipad][76x76][][][1x][][][]: notice: 76x76@1x app icons only apply to iPad apps target ing releases of iOS prior to 10.0. /* com.apple.actool.compilation-results */ /Users/admin/UAGroup/R6Game/Binaries/IOS/Payload/UAGame.app/AppIcon60x60@2x.png /Users/admin/UAGroup/R6Game/Binaries/IOS/Payload/UAGame.app/AppIcon76x76@2x~ipad.png /Users/admin/UAGroup/R6Game/Binaries/IOS/Payload/UAGame.app/Assets.car /Users/admin/UAGroup/R6Game/Intermediate/IOS/Resources/assetcatalog_generated_info.plist
codesign -d -vvvv /Test.app // 查看Test程序签名的详细信息。Test程序未签名时,显示如下信息:
Test.app: code object is not signed at all
codesign -d -vvvv /Applications/Xcode.app // 查看Xcode签名的详细信息
Executable=/Applications/Xcode.app/Contents/MacOS/Xcode Identifier=com.apple.dt.Xcode Format=app bundle with Mach-O thin (x86_64) CodeDirectory v=20200 size=469 flags=0x2000(library-validation) hashes=7+5 location=embedded VersionPlatform=1 VersionMin=658944 VersionSDK=659204 Hash type=sha256 size=32 CandidateCDHash sha1=e7b303a96a38351b6b2a7c4d8117704c82cf28a9 CandidateCDHashFull sha1=e7b303a96a38351b6b2a7c4d8117704c82cf28a9 CandidateCDHash sha256=dd839ddedd3f40999e53e76a2d4e556fcdd46f6c CandidateCDHashFull sha256=dd839ddedd3f40999e53e76a2d4e556fcdd46f6ce4b6cbbcca50a415820817f6 Hash choices=sha1,sha256 CMSDigest=014acc18a5b1cef7e9133a809c3c189075292bc39062f7dc81418d8d0229d22d CMSDigestType=2 Page size=4096 CDHash=dd839ddedd3f40999e53e76a2d4e556fcdd46f6c Signature size=4698 Authority=Apple Mac OS Application Signing Authority=Apple Worldwide Developer Relations Certification Authority Authority=Apple Root CA Info.plist entries=40 TeamIdentifier=APPLECOMPUTER Sealed Resources version=2 rules=13 files=309580 Internal requirements count=1 size=224
codesign -d --entitlements - /Applications/Xcode.app // 查看Xcode签名中的授权机制entitlements信息
Executable=/Applications/Xcode.app/Contents/MacOS/Xcode ??qq?<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>com.apple.PairingManager.Read</key> <true/> <key>com.apple.PairingManager.RemovePeer</key> <true/> <key>com.apple.PairingManager.Write</key> <true/> <key>com.apple.application-identifier</key> <string>59GAB85EFG.com.apple.dt.Xcode</string> <key>com.apple.authkit.client.private</key> <true/> <key>com.apple.developer.aps-environment</key> <string>production</string> <key>com.apple.developer.maps</key> <true/> <key>com.apple.dt.simulator.client</key> <true/> <key>com.apple.private.coreservices.definesExtensionPoint</key> <true/> <key>com.apple.private.dt.xcode.set-responsible-process-for-ui-testing</key> <true/> <key>com.apple.private.syspolicy.execution-policy-bypass</key> <true/> <key>com.apple.private.tcc.allow</key> <array> <string>kTCCServiceAppleEvents</string> <string>kTCCServicePhotos</string> <string>kTCCServiceDeveloperTool</string> </array> <key>com.apple.private.tcc.allow-prompting</key> <array> <string>kTCCServiceAll</string> </array> <key>com.apple.sysmond.client</key> <true/> </dict> </plist>
security find-identity -v -p codesigning // 查看当前机器上拥有有效的私钥证书(即可用来给程序签名的证书)
1) 2E54C48AF11C373978B9E57F121335128756B259 "iPhone Developer: zhong jianbin (Y68J4BC8T9)" (CSSMERR_TP_CERT_REVOKED) 2) 71CB408548CBAAB125F00854532134D8FA140766 "Apple Development: zhong jianbin (Y68J4BC8T9)" 2 valid identities found
codesign -f -s "iPhone Developer: zhong jianbin (Y68J4BC8T9)" Test.app // 强制使用"iPhone Developer: zhong jianbin (Y68J4BC8T9)"对Test.app进行签名(若之前有签名,则进行覆盖)。注:签名之后没有输出,说明签名正确。如果有错误,会输出错误的
codesign -f -i com.tencent.mf.test1 -s "iPhone Developer: zhong jianbin (Y68J4BC8T9)" Test.app // 修改Test.app的Identifier(即:bundle id)为com.tencent.mf.test1 注:Xcode的Identifier为com.apple.dt.Xcode
codesign -f -o 0x2200 -s "iPhone Developer: zhong jianbin (Y68J4BC8T9)" Test.app // 修改Test.app的flag为0x2200 注:Xcode的flag为0x2000
security cms -D -i "MyGamePP.mobileprovision" > "entitlements_full.plist" // 从pp文件中提取详细的entitlements信息 entitlements_full.plist内容如下
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>AppIDName</key> <string>App all</string> <key>ApplicationIdentifierPrefix</key> <array> <string>L3E7KQ25LR</string> </array> <key>CreationDate</key> <date>2020-07-09T01:50:30Z</date> <key>Platform</key> <array> <string>iOS</string> </array> <key>IsXcodeManaged</key> <false/> <key>DeveloperCertificates</key> <array> <data>MIIFmjCCBIKgAwIBAgIITnLDUpKR25UwDQYJKoZIhvcNAQELBQAwgZYxCzAJBgNVBAYTAlVTMRMwEQYDVQQKDApBcHBsZSBJbmMuMSwwKgYDVQQLDCNBcHBsZSBXb3JsZHdpZGUgRGV2ZWxvcGVyIFJlbGF0aW9uczFEMEIGA1UEAww7QXBwbGUgV29ybGR3aWRlIERldmVsb3BlciBSZWxhdGlvbnMgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMjAwNzA5MDEzNzU4WhcNMjEwNzA5MDEzNzU4WjCBjTEaMBgGCgmSJomT8ixkAQEMCkY1NDVUMjdaMkIxNTAzBgNVBAMMLGlQaG9uZSBEZXZlbG9wZXI6IHpob25nIGppYW5iaW4gKFk2OEo0RUhRVDkpMRMwEQYDVQQLDApMM0U3S1EyNUxSMRYwFAYDVQQKDA16aG9uZyBqaWFuYmluMQswCQYDVQQGEwJVUzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALKDXr4XjSXhdbnl0kI+k4WUKVbxsBlg3Ja2cviNdCv91qImIVpANKNjP0GVMJ01S5TYqsOROm2N5qRliPLVe31ZHyp+C1tKUbFekhB5lhTo7jRZBnas/LhVRcvqDUBrnF7iB9DCM1MJs8ivvX7rg23JesfhfbvILX2pyFcVPpz0ee6W8b5DupWhE0YXdsB+RJ2Iwqt7x9eCCE7dCh9xNdXq75QAw2Jtep4aYgimxl+svdeBAguQ3teAWhK3uynQabZkKz3q/+bGJEiwphdCullhWRGhHzXtThifnie9qbEtdK5l5fbBpda6ylKEmR2I9LCVL3FKuB8VpwJN01nQ34cCAwEAAaOCAfEwggHtMAwGA1UdEwEB/wQCMAAwHwYDVR0jBBgwFoAUiCcXCam2GGCL7Ou69kdZxVJUo7cwPwYIKwYBBQUHAQEEMzAxMC8GCCsGAQUFBzABhiNodHRwOi8vb2NzcC5hcHBsZS5jb20vb2NzcDAzLXd3ZHIwMTCCAR0GA1UdIASCARQwggEQMIIBDAYJKoZIhvdjZAUBMIH+MIHDBggrBgEFBQcCAjCBtgyBs1JlbGlhbmNlIG9uIHRoaXMgY2VydGlmaWNhdGUgYnkgYW55IHBhcnR5IGFzc3VtZXMgYWNjZXB0YW5jZSBvZiB0aGUgdGhlbiBhcHBsaWNhYmxlIHN0YW5kYXJkIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHVzZSwgY2VydGlmaWNhdGUgcG9saWN5IGFuZCBjZXJ0aWZpY2F0aW9uIHByYWN0aWNlIHN0YXRlbWVudHMuMDYGCCsGAQUFBwIBFipodHRwOi8vd3d3LmFwcGxlLmNvbS9jZXJ0aWZpY2F0ZWF1dGhvcml0eS8wFgYDVR0lAQH/BAwwCgYIKwYBBQUHAwMwHQYDVR0OBBYEFC6C70GaKf2rjBgj0sMi+f3tQH6dMA4GA1UdDwEB/wQEAwIHgDATBgoqhkiG92NkBgECAQH/BAIFADANBgkqhkiG9w0BAQsFAAOCAQEAivKGrapsdODR/Hs8JImuC9ttLKv2ejpnRBm9cV+u+XeszvxUl8kAw9n2of3KC5JwmY5rPFgn1uzaIHF/wWSE31hBE8fuf+0GvC4/mWX8mUUJBRVZ1sgY3Z6W+0W3GqcAnwdzJEfGdyJVVyXkoHhHfnqM6ACTvdWjynD0TpdSSpAMo4w9TH1or3j7wt39tDDLH5a5WtzZHWnMAIhGPu3Xs0gQdvKxKGP0tZ9GpV6ZAZKRXaPqUTQTgBNuNJQr0XOZ3l0BmzkbQVMEIoKfvCI1ZxwFbd34eBN+GZNXwHEtt1CAS588VTZASHMNC/jnocgFtD+1Mh3cXLbCeaTH6q22Ug==</data> <data>MIIFsDCCBJigAwIBAgIIWQCxpMbgGiMwDQYJKoZIhvcNAQELBQAwgZYxCzAJBgNVBAYTAlVTMRMwEQYDVQQKDApBcHBsZSBJbmMuMSwwKgYDVQQLDCNBcHBsZSBXb3JsZHdpZGUgRGV2ZWxvcGVyIFJlbGF0aW9uczFEMEIGA1UEAww7QXBwbGUgV29ybGR3aWRlIERldmVsb3BlciBSZWxhdGlvbnMgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMjAwNjEwMDE1NjEyWhcNMjEwNjEwMDE1NjEyWjCBjjEaMBgGCgmSJomT8ixkAQEMCkY1NDVUMjdaMkIxNjA0BgNVBAMMLUFwcGxlIERldmVsb3BtZW50OiB6aG9uZyBqaWFuYmluIChZNjhKNEVIUVQ5KTETMBEGA1UECwwKTDNFN0tRMjVMUjEWMBQGA1UECgwNemhvbmcgamlhbmJpbjELMAkGA1UEBhMCQ04wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQConrFeucNOBY/kJscD0pMA01PnifZaLKA2PUPAZtkwnlfoLA0YGr+Beds6rS/Imq7N7Akxj+aI8QDTluaPBEiVzprXxYXK5chs5Si2+BRbbRxbKtdTVZjxdABNdWc2LW5CTnHj1EcfhTN0tBZCW+aBU7qhRCgYAchwTeYBcrVXBOyQJgRxEf1A3qCFradVGyseK1nEc6WnRonUQEnxdn2Ec+CLgQwaJhRiN1PqG8Wwf9wwzJGzvhDLLd3Fbx2V75M58CImLDZ9oJwH0e4Nc9jCFNAupdwI/Slf0d6peKV4DzzJ/qDIWO2jagTm/FH+UsGW6eulfkpecqfZks66FHKDAgMBAAGjggIGMIICAjAMBgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaAFIgnFwmpthhgi+zruvZHWcVSVKO3MD8GCCsGAQUFBwEBBDMwMTAvBggrBgEFBQcwAYYjaHR0cDovL29jc3AuYXBwbGUuY29tL29jc3AwMy13d2RyMTkwggEdBgNVHSAEggEUMIIBEDCCAQwGCSqGSIb3Y2QFATCB/jCBwwYIKwYBBQUHAgIwgbYMgbNSZWxpYW5jZSBvbiB0aGlzIGNlcnRpZmljYXRlIGJ5IGFueSBwYXJ0eSBhc3N1bWVzIGFjY2VwdGFuY2Ugb2YgdGhlIHRoZW4gYXBwbGljYWJsZSBzdGFuZGFyZCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB1c2UsIGNlcnRpZmljYXRlIHBvbGljeSBhbmQgY2VydGlmaWNhdGlvbiBwcmFjdGljZSBzdGF0ZW1lbnRzLjA2BggrBgEFBQcCARYqaHR0cDovL3d3dy5hcHBsZS5jb20vY2VydGlmaWNhdGVhdXRob3JpdHkvMBYGA1UdJQEB/wQMMAoGCCsGAQUFBwMDMB0GA1UdDgQWBBQcLYdw0bsUXTusOmBipBZuN2HdajAOBgNVHQ8BAf8EBAMCB4AwEwYKKoZIhvdjZAYBAgEB/wQCBQAwEwYKKoZIhvdjZAYBDAEB/wQCBQAwDQYJKoZIhvcNAQELBQADggEBAACFE6nHco8ZFcFzRh/jH6opROpTvwjSZJrlunTyPDrHVAh/nSUas6WT+pfjJoEY+LKxBxVsQvRL68sUI32PGXBaRsDhDZErxYFnZvfuuSIb1jMrqUVnQ4B4WjgZctPAcWPXwEmTW+ZVqGgdn9IrqcTwGXc8dRgogsugtBSD324iorVy2q+wxXWPGYIYYYSnvBSmqH+NkYGqyYEM+R7NrNjeqPPJE71zvZ27g1uZCzEeqMoVhKyBfhUGFdT6r8iftpx9r4zRBwY5eEVcOPUIt0NHGiYQbjqw1APGA24G+aO7YsKYHolJBZUeerJoBF0Z3PubIsHceZtv3ewEAijZrMY=</data> <data>MIIFsDCCBJigAwIBAgIIOwoKa3l9nGMwDQYJKoZIhvcNAQELBQAwgZYxCzAJBgNVBAYTAlVTMRMwEQYDVQQKDApBcHBsZSBJbmMuMSwwKgYDVQQLDCNBcHBsZSBXb3JsZHdpZGUgRGV2ZWxvcGVyIFJlbGF0aW9uczFEMEIGA1UEAww7QXBwbGUgV29ybGR3aWRlIERldmVsb3BlciBSZWxhdGlvbnMgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMjAwNjIyMDMyNDQ0WhcNMjEwNjIyMDMyNDQ0WjCBjjEaMBgGCgmSJomT8ixkAQEMCkY1NDVUMjdaMkIxNjA0BgNVBAMMLUFwcGxlIERldmVsb3BtZW50OiB6aG9uZyBqaWFuYmluIChZNjhKNEVIUVQ5KTETMBEGA1UECwwKTDNFN0tRMjVMUjEWMBQGA1UECgwNemhvbmcgamlhbmJpbjELMAkGA1UEBhMCVVMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDFlb2osOUca3JmPZnT3y2f2MzI+I9Z4dtvUpXDcXcdgKAMsAx7dHoWCCFY6wqi6eFpZniKWZk1/Krezk+KN0+EBFooDSjh5KXu1aM4VLbNXz6WJgjrDy2VE1sbaDP4/7bHFgRaUHLkxGEk+cAUwXhVpe947dOYxk1vE4phTWl1GKdSGB73XN/oqb152IpCdZbwV9eRghXbsXBIAu7uPGt/598JBQGEsKOMzmTyo0jNqpdCfxpZOPoZiSufl7lT5LEdXeoyEBweh3F2Sdd/mo28Q/1f01+IFGVv9/AQDKJguTWbNI6fsaUgxNCLXoZic0p+qnM9ZvDr0wI7r5UHXOFFAgMBAAGjggIGMIICAjAMBgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaAFIgnFwmpthhgi+zruvZHWcVSVKO3MD8GCCsGAQUFBwEBBDMwMTAvBggrBgEFBQcwAYYjaHR0cDovL29jc3AuYXBwbGUuY29tL29jc3AwMy13d2RyMTkwggEdBgNVHSAEggEUMIIBEDCCAQwGCSqGSIb3Y2QFATCB/jCBwwYIKwYBBQUHAgIwgbYMgbNSZWxpYW5jZSBvbiB0aGlzIGNlcnRpZmljYXRlIGJ5IGFueSBwYXJ0eSBhc3N1bWVzIGFjY2VwdGFuY2Ugb2YgdGhlIHRoZW4gYXBwbGljYWJsZSBzdGFuZGFyZCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB1c2UsIGNlcnRpZmljYXRlIHBvbGljeSBhbmQgY2VydGlmaWNhdGlvbiBwcmFjdGljZSBzdGF0ZW1lbnRzLjA2BggrBgEFBQcCARYqaHR0cDovL3d3dy5hcHBsZS5jb20vY2VydGlmaWNhdGVhdXRob3JpdHkvMBYGA1UdJQEB/wQMMAoGCCsGAQUFBwMDMB0GA1UdDgQWBBR27oMYYWYk4s6QWZoqhrtVfNkPiDAOBgNVHQ8BAf8EBAMCB4AwEwYKKoZIhvdjZAYBAgEB/wQCBQAwEwYKKoZIhvdjZAYBDAEB/wQCBQAwDQYJKoZIhvcNAQELBQADggEBAAj8yMH4lhRPS3Oa0bxhZ+wSC4Sbu6/MmyTWJ4LSAPM6t79tCfeMTfU5jpHjvbkCVBH6+NnVhTruvy3kuulxzWLtVR8dwzV3N3MdLzbu3SZYCOx85OaNmea9Y28AUXkvQj6xaqKNJ4L4VkOXnEp0LeHRkFRhwYQFj2ydEXhr4SFyt5Msm4EI5k/MtbRl+oDcKTLL4khYgXoCjGGTR+NHsGlHQBVNXSP5j+nwbuwq8fQUrGkdfiwhGNXTJOIQky3X3RrqR5CQta0MX46tUm6eiADHc9VG2LQQVLUcmk80fAtKxgITmi569IJHIWD8etDoJ357TnguZTBADZMING/ybos=</data> <data>MIIFsDCCBJigAwIBAgIIW27PjARhS+QwDQYJKoZIhvcNAQELBQAwgZYxCzAJBgNVBAYTAlVTMRMwEQYDVQQKDApBcHBsZSBJbmMuMSwwKgYDVQQLDCNBcHBsZSBXb3JsZHdpZGUgRGV2ZWxvcGVyIFJlbGF0aW9uczFEMEIGA1UEAww7QXBwbGUgV29ybGR3aWRlIERldmVsb3BlciBSZWxhdGlvbnMgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMjAwNzA5MDEzNDU4WhcNMjEwNzA5MDEzNDU4WjCBjjEaMBgGCgmSJomT8ixkAQEMCkY1NDVUMjdaMkIxNjA0BgNVBAMMLUFwcGxlIERldmVsb3BtZW50OiB6aG9uZyBqaWFuYmluIChZNjhKNEVIUVQ5KTETMBEGA1UECwwKTDNFN0tRMjVMUjEWMBQGA1UECgwNemhvbmcgamlhbmJpbjELMAkGA1UEBhMCQ04wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCyg16+F40l4XW55dJCPpOFlClW8bAZYNyWtnL4jXQr/daiJiFaQDSjYz9BlTCdNUuU2KrDkTptjeakZYjy1Xt9WR8qfgtbSlGxXpIQeZYU6O40WQZ2rPy4VUXL6g1Aa5xe4gfQwjNTCbPIr71+64NtyXrH4X27yC19qchXFT6c9HnulvG+Q7qVoRNGF3bAfkSdiMKre8fXgghO3QofcTXV6u+UAMNibXqeGmIIpsZfrL3XgQILkN7XgFoSt7sp0Gm2ZCs96v/mxiRIsKYXQrpZYVkRoR817U4Yn54nvamxLXSuZeX2waXWuspShJkdiPSwlS9xSrgfFacCTdNZ0N+HAgMBAAGjggIGMIICAjAMBgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaAFIgnFwmpthhgi+zruvZHWcVSVKO3MD8GCCsGAQUFBwEBBDMwMTAvBggrBgEFBQcwAYYjaHR0cDovL29jc3AuYXBwbGUuY29tL29jc3AwMy13d2RyMTkwggEdBgNVHSAEggEUMIIBEDCCAQwGCSqGSIb3Y2QFATCB/jCBwwYIKwYBBQUHAgIwgbYMgbNSZWxpYW5jZSBvbiB0aGlzIGNlcnRpZmljYXRlIGJ5IGFueSBwYXJ0eSBhc3N1bWVzIGFjY2VwdGFuY2Ugb2YgdGhlIHRoZW4gYXBwbGljYWJsZSBzdGFuZGFyZCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB1c2UsIGNlcnRpZmljYXRlIHBvbGljeSBhbmQgY2VydGlmaWNhdGlvbiBwcmFjdGljZSBzdGF0ZW1lbnRzLjA2BggrBgEFBQcCARYqaHR0cDovL3d3dy5hcHBsZS5jb20vY2VydGlmaWNhdGVhdXRob3JpdHkvMBYGA1UdJQEB/wQMMAoGCCsGAQUFBwMDMB0GA1UdDgQWBBQugu9Bmin9q4wYI9LDIvn97UB+nTAOBgNVHQ8BAf8EBAMCB4AwEwYKKoZIhvdjZAYBAgEB/wQCBQAwEwYKKoZIhvdjZAYBDAEB/wQCBQAwDQYJKoZIhvcNAQELBQADggEBAC4SFOCYi0CGhUg37l1uTdSl3Wdvr9RHXeBVs4F1j/B99F6+AA+fcIBAdpG5b7x4Qe64uAzJw37NGjMS8KT0o96iy6nTduC+WQdy07A9jWdYAm8Gg4DjsOir7LqDajRMzVAu0ZWKr1Vo3XMZtF3zBVjCwqWRDgnIyVIb7JEZhfQ4Nk3FCW0SkkMbtU2fVrG+kRGdJ/A3AWtOKw0Ud+wLksFW7znSNQMHZulBza2/Tn9241RxDTthJWfoQsq9HE27EMnGS5Y9V8x9/sVyNdu6y6Ok3+HX3Ss9XVWrQXy4LsUsYWVwVumyCaDMzjaakGd9+C4RhpVlSeeacej5oadO1EU=</data> </array> <key>Entitlements</key> <dict> <key>application-identifier</key> <string>L3E7KQ25LR.com.*</string> <key>keychain-access-groups</key> <array> <string>L3E7KQ25LR.*</string> <string>com.apple.token</string> </array> <key>get-task-allow</key> <true/> <key>com.apple.developer.team-identifier</key> <string>L3E7KQ25LR</string> </dict> <key>ExpirationDate</key> <date>2021-07-09T01:50:30Z</date> <key>Name</key> <string>UAGamePP</string> <key>ProvisionedDevices</key> <array> <string>00008030-000435A80A91802E</string> <string>ef517a56e81ebcc95af428943981c0a57f765756</string> <string>fb64c4fdd3ad6b276e2b82d39f0d3c21ff6a3033</string> <string>51bd0b61cb2bdb8b8ede964cdadac21c948fc13a</string> <string>0f3f1a4430543305f21f17cb49d0c4bebd91ef63</string> <string>d5d8446663220fbe74aa37bc6afc3afb89ed6307</string> <string>00008020-000E35C03446002E</string> <string>00008030-001C6D391A84802E</string> <string>00008030-000D559C1EBA802E</string> </array> <key>TeamIdentifier</key> <array> <string>L3E7KQ25LR</string> </array> <key>TeamName</key> <string>zhong jianbin</string> <key>TimeToLive</key> <integer>365</integer> <key>UUID</key> <string>700539a1-132d-4ebc-9753-e9e56fcd6173</string> <key>Version</key> <integer>1</integer> </dict> </plist>
/usr/libexec/PlistBuddy -x -c 'Print:Entitlements' entitlements_full.plist > entitlements.plist // 从详细的entitlements_full.plist文件中提取entitlements文件所需的那部分内容 entitlements.plist的内容如下
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>application-identifier</key> <string>L3E7KQ25LR.com.*</string> <key>com.apple.developer.team-identifier</key> <string>L3E7KQ25LR</string> <key>get-task-allow</key> <true/> <key>keychain-access-groups</key> <array> <string>L3E7KQ25LR.*</string> <string>com.apple.token</string> </array> </dict> </plist>
注:get-task-allow为是否允许调试器调试该app的flag。为true允许调试,为false表示关闭调试(app要Distribution时需设置成该值)
codesign -f -s 'iPhone Developer: zhong jianbin (Y68J4BC8T9)' --entitlements ./entitlements.plist ./Payload/MyGame.app/ // 使用当前目录的entitlements.plist文件对./Payload/MyGame.app/目录中的内容进行签名
sudo spctl --master-disable // 在MacOS BigSur等权限管理严格的系统上,将GateKeeper disable掉
sudo spctl --master-enable // 在MacOS BigSur等权限管理严格的系统上,将GateKeeper设置成enable
spctl --status // GateKeeper disable掉时,会打印:assessments disabled GateKeeper enable时,会打印:assessments enabled
注:disable掉GateKeeper,会显示出“任何来源”按钮;enable掉GateKeeper,会隐藏出“任何来源”按钮
vmmap -interleaved 50114 // 查看进程id为50114的内存映像信息
sysctl -a | grep page // 查看内存page相关的值
kern.vm_page_free_min: 3500 kern.vm_page_free_reserved: 788 kern.vm_page_free_target: 4000 kern.vm_page_speculative_percentage: 5 kern.vm_page_speculative_q_age_ms: 500 vm.vm_page_background_count: 782360 vm.vm_page_background_exclude_external: 0 vm.vm_page_background_external_count: 27986 vm.vm_page_background_internal_count: 754374 vm.vm_page_background_mode: 1 vm.vm_page_background_promoted_count: 987732 vm.vm_page_background_target: 50000 vm.vm_page_external_count: 4531948 vm.vm_page_filecache_min: 4239297 vm.vm_page_xpmapped_min: 574137 vm.vm_pageout_considered_bq_external: 454224 vm.vm_pageout_considered_bq_internal: 11301035 vm.vm_pageout_rejected_bq_external: 0 vm.vm_pageout_rejected_bq_internal: 0 vm.apple_protect_pager_cache_limit: 20 vm.apple_protect_pager_count: 5 vm.apple_protect_pager_count_mapped: 5 vm.iopl_pages_tainted: 0 vm.kern_lpage_count: 474 vm.page_busy_absent_skipped: 0 vm.page_cleaned_count: 0 vm.page_free_count: 1569690 vm.page_free_wanted: 0 vm.page_pageable_external_count: 4531948 vm.page_pageable_internal_count: 7999406 vm.page_purgeable_count: 52643 vm.page_purgeable_wired_count: 32 vm.page_reusable_count: 4695302 vm.page_speculative_count: 1574608 vm.pageout_freed_cleaned: 128596 vm.pageout_freed_external: 9270417 vm.pageout_freed_speculative: 25616083 vm.pageout_inactive_clean: 47800073 vm.pageout_inactive_dirty_external: 63358 vm.pageout_inactive_dirty_internal: 80728808 vm.pageout_inactive_used: 12862278 vm.pageout_speculative_clean: 25616083 vm.pages: 16416185 vm.pagesize: 4096 vm.prefault_nb_pages: 0 vm.retired_pages_count: 0 vm.reusable_pages_shared: 88756 vm.shared_region_pager_copied: 0 vm.shared_region_pager_reclaimed: 40948 vm.shared_region_pager_slid: 60108 vm.shared_region_pager_slid_error: 0 vm.upl_pages_tainted: 0 vm.vm_create_upl_extra_cow_pages: 107 vm.vm_do_collapse_compressor_pages: 141 vm.vm_page_free_target: 4000 hw.pagesize: 4096 hw.pagesize32: 4096
pagesize //查看当前系统的页面大小 macOS为4096,iOS为16384 注:iOS系统中,基于A7和A8处理器的系统,物理内存按照4KB分页,虚拟内存按照16KB分页。A9及以后,物理和虚拟内存都是以16KB进行分页。
参考