我创造了一个' helloworld'使用documentation cordova
的iOS应用。当我运行cordova emulate ios
时,该应用成功运行。我无法做的是在我运行cordova build --release
时进行部署。它不会在那里创建任何.ipa
个文件。我找到的只是Helloworld.build
目录中的PROJECT_ROOT/platforms/ios/build
文件。我在这里错过了什么吗?
答案 0 :(得分:66)
我发现这个命令对我有用:
cordova build ios --device
cd platforms/ios/build/device
/usr/bin/xcrun -sdk iphoneos PackageApplication "$(pwd)/$PROJECT_NAME.app" -o "$(pwd)/$PROJECT_NAME.ipa"
来源:http://www.splinter.com.au/xcode-4-command-line-builds-of-iphone-apps/
我确实在运行@MD。首先是Mohiuddin Ahmed的Ruby脚本,它会改变我的xcodeproj文件。我不确定这是否必要,但我不这么认为。
XCode 8更新:正如评论者所指出的,PackageApplication
已从XCode 8中删除。要更新流程,请参阅问题:What's the replacement for Xcode's PackageApplication?
根据评论的建议,通过添加cordova build
命令编辑澄清流程。
答案 1 :(得分:41)
如果您使用的是cordova ios 3.9.0或更高版本,则可以使用此命令直接从CLI创建.ipa
,而无需额外命令:
cordova build ios --device --release
您在项目的根目录中需要build.json
个文件
{
"ios": {
"debug": {
"codeSignIdentity": "iPhone Developer",
"provisioningProfile": "your-dev-provisioning-profile-UUID-here"
},
"release": {
"codeSignIdentity": "iPhone Distribution",
"provisioningProfile": "your-distribution-provisioning-profile-UUID-here"
}
}
}
要获取UUID,我会在文本编辑器上打开.mobileprovision
文件并搜索“UUID”,不确定是否有更简单的方法可以找到它。
如果使用Xcode 8 build.json
需要developmentTeam
字段和packageType
字段,但不再需要配置文件,codeSignIdentity
也应该是iPhone Developer
调试和发布:
{
"ios": {
"debug": {
"codeSignIdentity": "iPhone Developer",
"developmentTeam": "FG35JLLMXX4A",
"packageType": "development"
},
"release": {
"codeSignIdentity": "iPhone Developer",
"developmentTeam": "FG35JLLMXX4A",
"packageType": "app-store"
}
}
}
http://cordova.apache.org/docs/en/6.x/guide/platforms/ios/index.html#using-buildjson
答案 2 :(得分:5)
我终于找到了一种使用xcodeproj,xcode和这个ruby脚本自动执行此操作的方法:
require 'xcodeproj'
xcproj = Xcodeproj::Project.open("HelloWorld.xcodeproj")
xcproj.recreate_user_schemes
xcproj.save
然后在PROJECT_ROOT/platforms/ios/
目录中,此命令帮助我生成了*.ipa
:
xcodebuild -project HelloWorld.xcodeproj -exportArchive -exportFormat ipa -archivePath $(pwd)/HelloWorld.xcarchive -exportPath $(pwd)/HelloWorld.ipa CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -alltargets -configuration Release
以为我们可以稍后签署我们的。 ipa :)
答案 3 :(得分:1)
您可以尝试http://fir.im中的新工具。
他们有一个用红宝石写的fir cli工具。您可以使用以下命令安装它:
sudo gem install fir-cli --no-ri --no-rdoc
注册一个帐户(所有免费的,如旧的testflight)并从您的个人资料中获取令牌。从命令提示符运行:
fir login
提供您的令牌。
CD到你的.xcodeproj所在的目录中。
fir build_ipa .
一段时间后(如果构建成功),您将在./build_ipa文件夹中找到您的ipa。
答案 4 :(得分:0)
其他所有方法都不适合我,但这对我有用
cordova build ios
然后
cordova run ios --device
.ipa文件位于
myPrject/platforms/ios/build/device/myProject.ipa
build.json(设置自动同步)
{
"ios": {
"debug": {
"codeSignIdentity": "iPhone Developer",
"developmentTeam": "FG35JLLMXX4A",
"packageType": "development",
"automaticProvisioning": true,
"buildFlag": [
"EMBEDDED_CONTENT_CONTAINS_SWIFT = YES",
"ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES=NO",
"LD_RUNPATH_SEARCH_PATHS = \"@executable_path/Frameworks\""
]
},
"release": {
"codeSignIdentity": "iPhone Developer",
"developmentTeam": "FG35JLLMXX4A",
"packageType": "app-store",
"automaticProvisioning": true,
"buildFlag": [
"EMBEDDED_CONTENT_CONTAINS_SWIFT = YES",
"ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES=NO",
"LD_RUNPATH_SEARCH_PATHS = \"@executable_path/Frameworks\""
]
}
}
}
参考docs
Voila!