Xcode 6 – 如何为Ad-Hoc分发select签名证书/configuration文件?

为了将应用程序分发给我们的testing人员,我们使用Xcode,我们使用以下过程:

  • 档案申请
  • 分发Ad-Hoc
  • selectconfiguration文件
  • 将.ipa保存到一个文件夹

但是在Xcode 6中 ,这个工作stream程被改变了一下。 我仍然可以selectAd-Hoc分发选项,但是我无法select我想要的configuration文件。 这使我们无法控制使用哪个签名证书以及configuration文件configuration(我们使用推送通知)。

默认情况下,使用iPhone distribution签名标识,并生成某种XC Ad Hoc置备configuration文件,如下图所示: 导出IPA 如果您单击configurationconfiguration文件附近的箭头,则会打开具有configurationconfiguration文件的文件夹。

所以我的问题是:

在Xcode 6中有没有办法select用于Ad Hoc分发的configuration文件?

谢谢!

我面临着同样的问题,使用命令行“xcodebuild”工具脚本,这是预装XCode6(不需要重新安装XCode5)解决。

http://www.thecave.com/2014/09/16/using-xcodebuild-to-export-a-ipa-from-an-archive/

terminal中的脚本:

 xcodebuild -exportArchive -archivePath $projectname.xcarchive -exportPath $projectname -exportFormat ipa -exportProvisioningProfile 'Provisioning Profile Name' 

提交到App Store时,我遇到了类似的问题。 我创build了一个存档,然后点击“提交”,Xcode想用默认的“XC com。*”通配符configuration文件自动签名,而不是已经有的显式configuration文件。

为了解决这个问题,我只是重新生成了Apple Developer Portal上的configuration文件:

1)转到developer.apple.com并查找要使用的分发资源调配configuration文件。
2)select它,点击“编辑”,重命名configuration文件,然后点击“生成”。
3)将configuration文件下载到桌面并将其拖到Xcode 6图标上。
4)重新启动Xcode 6。
5)打开组织者窗口,并在你build立的档案上点击“提交”。 Xcode将自动select您的显式configuration文件,而不是通用configuration文件。

一旦你在组织者

  • selectad-hoc构build,然后单击“导出…”。
  • select“保存进行Ad Hoc部署” – >下一步
  • 从下拉列表中select“使用本地签名资产” – >“select”,而不是select组织
  • 像以前一样导出并保存.ipa。

当然,您需要生成,下载并安装ad-hoc供应configuration文件。

看来最后生成的configuration文件现在赢了。 所以你可以重新生成你想要的configuration文件并下载它,Xcode将使用它。

稍微好一点的方法:在目标中设置所需的configuration文件,并使用命令行来构build你的ipa,也可以。

这是我正在使用的脚本:

 #!/bin/sh # Current as working as of 2014/09/22 # Xcode 6 OUTPUTDIR="$HOME/build" APPNAME="your-app" SCHEME="your-app" APP_WORKSPACE="$HOME/Path/To/your-app.xcworkspace" rm "$OUTPUTDIR/$APPNAME.ipa" #deletes previous ipa xcodebuild -workspace "$APP_WORKSPACE" -scheme "$SCHEME" archive -archivePath "$OUTPUTDIR/$APPNAME.xcarchive" xcodebuild -exportArchive -exportFormat ipa -archivePath "$OUTPUTDIR/$APPNAME.xcarchive" -exportPath "$OUTPUTDIR/$APPNAME.ipa" 

和我的设置:

Xcode设置

我也无法弄清楚这一点 – 在提交给AppStore时,我们无法理解它的默认configuration文件。

我最终在Xcode 6中编译,然后返回到Xcode 5的Organizer窗口进行提交。 这样它会提示你select一个configuration文件签署。

在Xcode 6中(至less6.1我现在使用),当您为ad hoc导出导出时,xcode 6将自动扫描,如果有任何供应configuration文件包含在开发者帐户中注册的所有设备,并同时匹配包ID 。 如果否,则将使用XC提供configuration文件。 因此,如果您想使用自己的configuration文件(例如,为了推送通知),则需要在Apple开发人员门户上selectconfiguration文件中的所有设备。 我想这就是为什么一些人重新创buildconfiguration文件的原因,有些不会。

顺便说一下,使用脚本可以导出并上传到testflight,但设备不能下载它。 可能是我错了。 如果有人知道为什么,请让我知道。 TKS

这对我工作:

  1. 在“..select开发团队”对话框中单击“查看帐户..”。
  2. 点击“查看详情..”并findXC Ad Hocconfiguration文件。
  3. 右键单击该configuration文件并select“在Finder中显示”。
  4. 删除选定的configuration文件。
  5. 回到步骤1中的对话框。
  6. 点击“select”。
  7. 单击configurationconfiguration文件附近的箭头以打开configurationconfiguration文件目录。
  8. 像第4步一样再次删除通用configuration文件。
  9. 单击“将[应用程序名称]发送到Apple:”对话框中的“上一步”button。
  10. 再次select“保存以进行特别部署”
  11. 再次点击“select”button。

现在您应该看到正确的configuration文件名称。

我有一个解决方法,这对我的作品。

我同时安装了Xcode 6和Xcode 5.1.1,Xcode 6在应用程序中,Xcode 5.1.1在另一个目录中。 当我想做一个构build时,我使用Xcode 6创build存档。 但是您也可以在Xcode 5.1.1中看到创build的Archive,所以我使用Xcode 5.1.1来使用我想要使用的configuration文件分发Ad Hoc .ipa。 所以build立使用Xcode 6,但使用Xcode 5.1.1分发。

输出时使用本地签名资产解决了我的问题: 在这里输入图像说明

@MrPatol的答案不适合我。 我的工作场景为Xcode 6.3.2

在成员中心 – > iOSconfigurationconfiguration文件

  • 删除在您尝试构build应用程序时默认设置的configuration文件(例如“XC …”)。 使用短名称创build临时设置configuration文件(不是生产)。

在iPhoneconfiguration实用程序 – >供应configuration文件

  • 删除相同的configuration文件(例如“XC …”)

在Xcode – >组织者

  • select即席构build,然后单击“导出…”。select“保存以进行即席部署” – >下一步
  • 从下拉菜单中select一个组织
  • 检查是否自动select新的专用configuration文件
  • 像以前一样导出并保存.ipa。

以下是为我解决问题的两个关键点。

  • 当您生成供应configuration文件时,需要将其链接到使用与您的应用程序相同的包标识符的显式应用程序ID 。 通配符应用程序ID将不起作用。
  • 在导出应用程序以进行临时部署时, 在下拉列表中select使用本地签名资产 ,然后单击select。

然后,Xcode将通过匹配应用程序ID和应用程序的包标识符来find正确的供应configuration文件。

实际上,您需要创build一个新的分发概要文件,专用于Ad Hoc部署。 这可以在经典会员中心find,但它是一种新型的证书。

然后,您可以select哪些设备可以用来testing应用程序,因为您可以使用开发人员configuration文件进行testing。

当您以常规方式从组织者中导出包裹时,新创build的证书将可用。

或者,您也可以使用Apple提供的iOS 8的TestFlight解决scheme,使用户能够访问预发布。

在这里输入图像说明

我有同样的问题,最后我解决了它重新生成的configuration文件,我想在Xcode 6中使用,包括我已经注册在我的iOS开发帐户的所有设备,这样做,当select导出它显示正确的configuration文件,我可以使用Xcode 6进行Ad Hoc导出而不使用脚本。 希望能帮助到你。

我已经坚持了一段时间,但是使用Crashlytics解决了它,使用Xcode项目的构build设置中选定的configuration文件构build分布式。

希望它有助于某人。

几乎是同样的问题。 创build分发存档(产品>存档)后,导出存档(单击导出…)并select“保存为企业部署”; 然后“下一步”。 然后select“开发团队”默认(例如组织名称),然后单击“select”。 最后,您将看到一个摘要视图,该视图还列出了Xcode自动为您find的供应configuration文件(可能是在运行中创build的)。 这可能是错误的configuration文件(通常是通配符configuration文件,如“XC:*”),可能会发生,因为在开发者平台上已经有了通配符configuration文件。 通配符configuration文件可能会被其他较旧的项目使用,也许从开发人员门户中删除通配符configuration文件是不明智的。

我为此使用了一个支持票,只有这个链接返回https://developer.apple.com/library/ios/documentation/IDEs/Conceptual/AppDistributionGuide/ConfiguringPushNotifications/ConfiguringPushNotifications.html#//apple_ref/doc/uid/TP40012582 -CH32-SW1 。 不是一个很大的帮助。

我发现MrPatol的解决scheme也适用于企业部署 ,并为我们解决了这个问题。 我首先login到开发人员门户并手动创build适合我的应用程序的供应configuration文件。 然后下载并安装新的手动创build的configuration文件。

在xcode 7中,我无法通过selectadhocconfiguration

组织者 – >上传到应用程序商店和组织者 – >validation

但我可以select通过组织者 – >出口

编辑:

在导出adhoc之后上传应用程序到testFlight的应用程序商店导致了另一个在这里讨论的问题 。 所以,解决这两个问题就是一个。 创buildAppStore供应,以便能够通过组织者select并通过上传到appstore来利用testFlight。

  1. 我认为这是在Xcode 7之后指定-exportOptionsPlist选项的正确方法。无论您在项目设置中指定什么,它都将在GUI导出中select正确的configuration文件。

xcodebuild -exportArchive -archivePath $ Archive_Path -exportPath $ LOCAL_PACKAGE_DIR -exportOptionsPlist $ Export_Plist_Path

optionPlist文件是这样的,

 <dict> <key>teamID</key> <string>MYTEAMID123</string> <key> teamID </key> <string>app-store</string> <key>uploadSymbols</key> <true/> </dict> <plist> 

应用程序商店,企业,临时,开发是可选的

  1. 但是你可能会在上面遇到另一个错误。

错误域= IDEDistributionErrorDomain代码= 14“找不到适用的设备”。 UserInfo = {NSLocalizedDescription =找不到适用的设备。}

这是一个ruby问题。 试试这个shell脚本, xcbuild-safe.sh

 xcbuild-safe.sh xxxxNormalOptionsInXcodebuild bla... 
  1. 等一下,另一个奇怪的错误来了。

xcbuild-safe.sh:第62行:找不到shell_session_update:命令

什么是地狱shell_session_update ? 让我们解决它。 只需在真正的xcodebuild cmd之前定义一个函数,即在60或61行。

 function shell_session_update() { :; } 

在回答您的具体问题时,不可以select要使用的configuration文件。 你想做什么? (即你想select的configuration文件允许自动生成的configuration文件不是什么?)