cordova emulate ios
时,该应用程序可以成功运行。但是,在部署时运行cordova build --release
时,我无法生成任何.ipa
文件。我在PROJECT_ROOT/platforms/ios/build
目录中只能找到一个Helloworld.build
文件。我是否漏掉了什么?cordova emulate ios
时,该应用程序可以成功运行。但是,在部署时运行cordova build --release
时,我无法生成任何.ipa
文件。我在PROJECT_ROOT/platforms/ios/build
目录中只能找到一个Helloworld.build
文件。我是否漏掉了什么?我发现这个命令对我有用:
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中删除。有关更新过程,请参见问题:什么是替代Xcode's PackageApplication的方法?
根据评论添加了cordova build
命令以澄清流程。
.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
我最终通过使用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文件 :)
sudo gem install fir-cli --no-ri --no-rdoc
注册一个账户(所有免费,就像旧的TestFlight一样),并从您的个人资料中获取一个令牌。从您的命令提示符中运行:
fir login
fir build_ipa .
如果构建成功,过一段时间后您将在./build_ipa文件夹中找到ipa文件。
其他的方法对我都不起作用,但这个方法对我有效。
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!
cordova build ios --device
来生成应用程序,位于platforms/ios/build/device
目录下。 - M165437xcrun
命令似乎不是必需的。我正在使用 Cordova 6,它是否已经集成到cordova build ios --device
命令中了呢?当我运行该命令时,它似乎已经使用我的 XCode 设置生成了一个正确签名的 ipa 文件。 - Julian