gpt4 book ai didi

xcode - 使用Cordova CLI构建和打包iOS应用程序时遇到麻烦

转载 作者:行者123 更新时间:2023-12-04 17:35:09 25 4
gpt4 key购买 nike

到目前为止,我在编译PhoneGap应用程序方面的所有经验都是通过出色的PhoneGap:Build服务实现的。但是,现在我处于需要本地编译的情况,因为我需要使用包含二进制文件which precludes it from being included for use with PG:B的插件。

因此,由于这些原因,我需要在本地进行编译。 “伟大的!”我以为,我只会使用新的CLI ...

我已经开发了我的应用程序,我可以通过从Xcode通过USB部署在设备上对其进行测试,但是试图获得一个发布版本并对其进行签名,并在其中嵌入配置文件,这一直是一场噩梦。

为了完整起见,这是我所做的所有工作的基本概述,除了应用程序开发本身。

$ pwd
/users/adam/dev/myapp/mobile/
$ cordova create build_local com.foo.bar MyApp
Creating a new cordova project with name "MyApp" and id "com.foo.bar" at location "/Users/adam/DEV/myapp/build_local"
$ cd build_local
$ cordova platform add ios
Creating ios project...
$ cordova platform add android
Creating android project...
Creating Cordova project for the Android platform:
Path: platforms/android
Package: com.foo.bar
Name: MyApp
Android target: android-19
Copying template files...
<snip>
Project successfully created.
$ cordova plugin add https://github.com/hazemhagrass/BackgroundJS
Fetching plugin "https://github.com/hazemhagrass/BackgroundJS" via git clone
Installing com.badrit.BackgroundJS (android)
Fetching plugin "https://github.com/apache/cordova-plugin-device.git" via git clone
Installing org.apache.cordova.device (android)
Installing com.badrit.BackgroundJS (ios)
Installing org.apache.cordova.device (ios)
$ cordova plugin add de.appplant.cordova.plugin.local-notification
Fetching plugin "de.appplant.cordova.plugin.local-notification" via plugin registry
Installing de.appplant.cordova.plugin.local-notification (android)
Installing de.appplant.cordova.plugin.local-notification (ios)
$ cordova plugin add https://github.com/kdzwinel/phonegap-estimotebeacons
Fetching plugin "https://github.com/kdzwinel/phonegap-estimotebeacons" via git clone
Installing pl.makingwaves.estimotebeacons (android)
Installing pl.makingwaves.estimotebeacons (ios)

对于它的值(value),最后一个插件是我必须在本地编译的原因。

现在,这是另一个潜在的事件 Spanner :这个应用程序实际上是两个应用程序。它是相同的核心代码库,已合并到存储库的两个不同的部署分支中,每个客户端一个。因此,每个应用程序都有其自己的ID,名称和配置内容。因此,我实际上有一个以上的cordova项目文件夹(每个最终应用程序1个),并通过上述步骤创建了每个项目之后,我删除了生成的 www文件夹,并用符号链接(symbolic link)替换了外部存在的共享www文件夹这些phonegap项目目录。

这是受支持的行为; CLI允许您通过 --link-to标志使用符号链接(symbolic link)生成您的应用程序(有关详细信息,请参见 cordova help create)。但是,这样做 seems to have issues;因此,我要先进行所有应用程序配置,然后在一切准备好编译后,用符号链接(symbolic link)替换生成的 www文件夹。

此时,我可以部署到iOS模拟器或Android模拟器,也可以通过USB部署到设备,一切正常。我所有的插件都可用,并且功能正常。因此,我准备编译一个发布版本。 Android很简单。 iOS,不是很多。
$ cordova build ios
<snip>
** BUILD SUCCEEDED **

但是,这是一个DEV版本。生成的文件位于 build/emulator/文件夹中,当我尝试对其进行签名时,由于I386体系结构(表明它是开发版本),我被告知未签名。
$ xcrun -sdk iphoneos PackageApplication -v "platforms/ios/build/emulator/MyApp.app" -o "/users/adam/dev/myapp/MyApp.ipa" --sign "iPhone Distribution: {our cert name} ({our cert id})"
<snip>
Codesign check fails : platforms/ios/build/emulator/MyApp.app: code object is not signed at all
In architecture: i386
<snip>

我试图从cordova CLI生成发行版本。我无法在任何地方找到记录的 --release标志,但是CLI不会提示,并且通常在无法识别标志的情况下也可以。
$ cordova build ios --release
<same result as previously>

尝试对此构建进行签名会导致相同的问题。

至此,我开始尝试直接在Xcode中工作。据我所知,我已经适当设置了 .mobileprovision文件和签名凭证:

设置了这些值之后,Xcode不再允许我构建:

所以我被困住了:我别无选择,只能在本地构建,而且我不知道如何获取它以进行发布和签名!请帮忙!

此外,如果我尝试嵌入配置文件,则由于权利问题而失败。我不确定这意味着什么,但我希望这是与开发版本一起工作并解决该问题的结果。
$ test -e ~/.ios/DEV.mobileprovision && echo exists
exists
$ xcrun -sdk iphoneos PackageApplication -v "platforms/ios/build/emulator/MyApp.app" -o "/users/adam/dev/myapp/MyApp.ipa" --embed "~/.ios/DEV.mobileprovision"
<snip>
error: Failed to read entitlements from '/var/folders/zs/j2hmt69n12sbjm6gyn0m_q4c0000gn/T/tyYvYPQKf3/Payload/MyApp.app'

更新1:

This SO question在一方面方面有所帮助。我不知道事件方案(我不确定是什么意思,但这是我将鼠标悬停在控件上时的工具提示)作为指定键/等的一部分而改变的方法,但显然确实如此。将其更改回iOS设备(如iPhone)后,我可以构建项目,甚至可以创建 存档(据我所知,这意味着它正在创建 .ipa 文件,我需要将该文件提交至App Store ),但找不到存档文件。应该在哪里?我可以在Xcode中的某个位置定义它吗?

更新2:

通过摆弄证书和供应配置文件,我终于能够从Xcode创建一个文件,我被告知这是一个发行版本(是吗?)。理想情况下,我希望能够从命令行进行构建,以便可以使它尽可能自动化,因此我将在早晨上类。在这方面的任何建议都将受到欢迎!

最佳答案

如果您设法在Xcode中创建文件,那么Xcode就会知道您的签名证书和配置文件,因此 cordova build ios --release --device 应该可以做到。

这些步骤是:

1)通过下载并双击Finder中的证书,将您的iOS开发人员证书用于生产导入到钥匙串(keychain)中(或通过Xcode获取)

2)下载您的配置文件(将应用程序ID设置为config.xml中的widget元素的id属性),然后在Finder上双击它,以转到Xcode的配置文件存储

3)cordova构建ios --release --device

关于xcode - 使用Cordova CLI构建和打包iOS应用程序时遇到麻烦,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22639577/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com