之前想做持续集成,然后在电脑上安装了Jenkins,一通操作踩了无数坑之后,持续集成没有搞好,后面在真机上运行工程的时候反而出现了报错。错误信息如下:
CodeSign /Users/me/Library/Developer/Xcode/DerivedData/MyApp-gnoiiwnelmxzdidnijaswisrwdqe/Build/Intermediates/ArchiveIntermediates/MyApp/InstallationBuildProductsLocation/Applications/MyApp.app
cd /Users/me/Desktop/MyAppFolder1/MyAppFolder2/MyAppxcode
export CODESIGN_ALLOCATE=/Users/me/Downloads/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/codesign_allocate
export PATH="/Users/me/Downloads/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:/Users/me/Downloads/Xcode.app/Contents/Developer/usr/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin"
Signing Identity: "iPhone Developer: My Name (**********)"
Provisioning Profile: "iOS Team Provisioning Profile: com.**********.*********"
(********-****-****-****-************)
/usr/bin/codesign --force --sign **************************************** --entitlements /Users/me/Library/Developer/Xcode/DerivedData/MyApp-gnoiiwnelmxzdidnijaswisrwdqe/Build/Intermediates/ArchiveIntermediates/MyApp/IntermediateBuildFilesPath/MyApp.build/Release-iphoneos/MyApp.build/MyApp.app.xcent --timestamp=none /Users/me/Library/Developer/Xcode/DerivedData/MyApp-gnoiiwnelmxzdidnijaswisrwdqe/Build/Intermediates/ArchiveIntermediates/MyApp/InstallationBuildProductsLocation/Applications/MyApp.app
/Users/me/Library/Developer/Xcode/DerivedData/MyApp-gnoiiwnelmxzdidnijaswisrwdqe/Build/Intermediates/ArchiveIntermediates/MyApp/InstallationBuildProductsLocation/Applications/MyApp.app: resource fork, Finder information, or similar detritus not allowed
Command /usr/bin/codesign failed with exit code 1
还有这种错误:
dyld: Library not loaded: @rpath/libswiftCore.dylib
Referenced from: /private/var/mobile/Containers/Bundle/Application/LONGSERIALNUMBER/AppName.app/AppName
Reason: no suitable image found. Did find:
/private/var/mobile/Containers/Bundle/Application/LONGSERIALNUMBER/AppName.app/Frameworks/libswiftCore.dylib: mmap() error 1 at
address=0x008A1000, size=0x001A4000 segment=__TEXT in Segment::map() mapping
/private/var/mobile/Containers/Bundle/Application/LONGSERIALNUMBER/APPLICATION_NAME/Frameworks/libswiftCore.dylib
然后真机运行的时候也不断的要求输入管理员账号密码,关键是一直要求输入,正确了也不能允许运行。
现在提供自己的解决方案:
1.修改证书私钥的访问控制权限
由于Jenkins的原因,我对钥匙串进行了一定的操作。我最终确认应该是这种操作导致了上述问题。
- 将 钥匙串 -> 登录 上的开发者证书拷贝到钥匙串 -> 系统 中。
- 然后在系统下选中证书,显示简介,信任选择始终信任。
- 再选中系统下开发者证书的私钥,显示简介后在访问控制中勾选“允许所有应用程序访问该项目”。
4.重新运行Xcode。
但是在搜索解决办法的过程中,我发现了可能还有其他操作也会导致这样的问题,所以后面是一些其他原因导致的解决办法。
2.升级Xcode和系统
如果Xcode不是最新系统,而手机系统版本又比较高,升级Xcode吧。为了保险起见,系统也升级。这个很有用。
3.Stack Overflow上的解决方式
Stack Overflow上面有一个这个提问,里面回答非常多,可见不少人遇到了这样的问题。我先精简几个重要的解决办法:
清除缓存派
这种方法主要是认为缓存原因造成的,解决方式包括:Xcode Clean、删除DerivedData(包括ModuleCache中的)、重新生成证书、Xcode重启、Mac重启、iPhone重启,保证完全的清零状态,然后解决。-
修改设置参数派
这种方法认为是参数的影响导致了问题。所以需要修改Build setting里面的参数。Embedded Content Contains Swift Code 设置成 "Always Embed Swift Standard Libraries = YES"
Runpath Search Paths 设置成 $(inherited) @executable_path/Frameworks