使用 Fastlane(或任何其他方法)构建从 Expo 导出的 iPhone 应用程序

Building an iPhone app exported from Expo using Fastlane (or any other method)

我有一个要从 Expo 导出的 iPhone 应用程序,因此我可以使用自己的硬件进行构建。

简单地说,我先调用 exp detach 然后再调用

cert
sigh
gym

使用 fastlane beta

构建失败,因为它无法签署我的申请。错误是

[15:27:30]: ▸ === BUILD TARGET appname OF PROJECT appname WITH CONFIGURATION Release ===
[15:27:30]: ▸ Check dependencies
[15:27:30]: ▸ No profiles for 'com.getexponent.appname' were found:  Xcode couldn't find a provisioning profile matching 'com.getexponent.appname'.
[15:27:30]: ▸ Code signing is required for product type 'Application' in SDK 'iOS 10.3'

很明显它正在从某处获取 com.getexponent.。我在 app.json.

中设置了正确的包名称

我也更新了我的 Fastfile

lane :beta do    
    update_app_identifier(
      xcodeproj: '../ios/appname.xcodeproj',
      plist_path:'./appname/Supporting/Info.plist',
      app_identifier: "com.mycompany.appname"
    )  
    cert
    sigh
    gym( 
      scheme: "appname",
      workspace: '../ios/appname.xcworkspace'
      )
  end

但是我得到了同样的错误信息。

Expo detach 中有什么我可以更改的,或者我需要在 fastlane 中更改什么?

我已经在 Expo 存储库 here 上打开了一个关于此的问题。似乎 exp detach 命令并不是真正的部署友好...

我正在使用 Bitrise 进行部署,它包括一个修改 PROJECT_BUNDLE_IDENTIFIER 的步骤。您可以执行以下操作:

NEW_BUNDLE_IDENTIFIER="com.mynewbundle.identifier
PBXPROJ_FILE="path/to/project.pbxproj"

sed -i "" "s/\(PRODUCT_BUNDLE_IDENTIFIER = \).*\(;\)/${NEW_BUNDLE_IDENTIFIER}/" $PBXPROJ_FILE

(基于 this Bitrise step)。

最后,我将其添加到 Fastfile 步骤的开头

sh "sed -i '' 's/com.getexponent.allotmentlab/com.foam.allotmentlab/g' '../../ios/allotmentlab.xcodeproj/project.pbxproj'"

这是一个糟糕的解决方案,因为您必须知道错误的字符串是什么。您还需要知道从 Fastfileproject.pbxproj 的路线。但这是我能想到的最好的解决办法。