【问题标题】:How to create .ipa file for testing from react-native app for IOS using command line如何使用命令行从 IOS 的 react-native 应用程序创建 .ipa 文件进行测试
【发布时间】:2019-05-04 19:57:26
【问题描述】:

我正在使用 react-native 版本 0.57.7如何创建react-native app创建.ipa文件使用命令行

我遵循了一些关于如何从 react-native 应用程序创建 .ipa 文件的堆栈溢出答案 (as an example),以便我可以将它安装在我的 Iphone 中并进行测试。

我找到的答案要么太旧,要么与我的 React Native 应用程序版本0.57.7 的目录结构不同。

您能告诉我如何在react-native 版本0.57.7 中生成.ipa 文件,以便在iphone 上进行测试。

【问题讨论】:

    标签: ios iphone reactjs react-native


    【解决方案1】:

    如果您对配置文件进行了排序,那么它就相当简单了。虽然要能够在设备上对其进行测试而不将其插入计算机,但您需要 ad-hocenterprise 配置文件。

    因此,您将需要配置文件和您希望在您的机器上安装的distribution certificate

    基本上,您需要运行两个命令来创建 ipa。

    1. 创建存档。
    2. 签署档案。 (这将从存档中创建 ipa)

    文件夹结构

    在我的应用程序的根目录中,我有以下文件夹

    • 机器人
    • 应用程序
    • ios
    • node_modules

    所以在应用的根目录下打开一个终端,我们就可以开始了:


    创建存档

    现在,无论您是否使用 cocoapods,都会有细微的差别。您可以在这里看到两个不同命令的区别,特别是 projectworkspace 替换,xcodeprojxcworkspace 替换。

    选择与您的设置最匹配的那个。结果将是应用程序根目录中名为 myawesomeapp.xcarchive 的文件。

    没有 Cocoapods/项目

    xcodebuild "-project" "ios/myawesomeapp.xcodeproj" "-scheme" "myawesomeapp" "-configuration" "Release" "DEVELOPMENT_TEAM=YOUR_TEAM_ID" "PROVISIONING_PROFILE_SPECIFIER=YOUR_TEAM_ID/myawesomeapp_profile_name" "archive" "-archivePath" "myawesomeapp.xcarchive"
    

    Cocoapods/工作区

    xcodebuild "-workspace" "ios/myawesomeapp.xcworkspace" "-scheme" "myawesomeapp" "-configuration" "Release" "DEVELOPMENT_TEAM=YOUR_TEAM_ID" "PROVISIONING_PROFILE_SPECIFIER=YOUR_TEAM_ID/myawesomeapp_profile_name" "archive" "-archivePath" "myawesomeapp.xcarchive"
    

    我喜欢指定DEVELOPMENT_TEAMPROVISIONING_PROFILE_SPECIFIER,以便为应用使用正确的配置文件。

    我选择Release的配置选项,因为我个人使用分发配置文件,这样我就可以将构建的ipa传递给测试团队。

    如果您没有对设置进行任何花哨的设置,那么您可能只需将单词 myaewsomeapp 替换为您的应用程序的名称,并将 myawesomeapp_profile_name 替换为您的配置文件的名称。


    签署存档

    您必须对存档进行签名才能使其成为 ipa。为此,您需要export_options.plist

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
        <dict>
            <key>compileBitcode</key>
            <false/>
            <key>method</key>
            <string>ad-hoc</string>
            <key>provisioningProfiles</key>
            <dict>
                <key>com.myawesomeapp</key>
                <string>myawesomeapp_profile_name</string>
            </dict>
            <key>signingCertificate</key>
            <string>iPhone Distribution: NAME_OF_YOUR_SIGNING_CERTIFICATE (YOUR_TEAM_ID)</string>
            <key>teamID</key>
            <string>YOUR_TEAM_ID</string>
        </dict>
    </plist>
    

    所以这里有几个关键点:

    设置方法以匹配您的配置文件的用途。如果它是一个 ad-hoc 配置文件,那么 ad-hoc 应该去那里。选项是应用商店、临时、企业或开发。

    com.myawesomeapp 更改为应用程序的包标识符。将 my_awesomeapp_profile_name 更改为您的配置文件的名称。添加您正在使用的签名证书的名称。最后加上YOUR_TEAM_ID

    一旦您创建了 export_options.plist 并将其保存在应用程序的根目录中,您就可以在终端中运行下一个命令:

    xcodebuild "-exportArchive" "-archivePath" "myawesomeapp.xcarchive" "-exportPath" "./" "-exportOptionsPlist" "export_options.plist"

    这将为您签署 ipa 并生成一些其他文件,您可能更喜欢写入应用程序目录中的子目录而不是根目录。

    拥有 ipa 后,您可以使用 Xcode 将其安装到 iPhone 上。


    与所有内容一样,您的设置可能与我的不同。话虽如此,这是我在本地使用的方法,也是我在 CI 上使用的方法。它对我们有用,希望它能帮助您创建您的 ipa。

    更多关于建筑的信息可以在https://developer.apple.com/library/archive/technotes/tn2339/_index.html找到。

    虽然不再更新,但他们会更详细地了解所有内容,查看官方文档是一个不错的起点。

    【讨论】:

    • 是否可以在不签名的情况下生成.ipa。我需要它仅用于测试目的
    • 没有 ipa 仅来自签署导出的存档。您可以在手机上安装,但它需要手机连接到开发服务器,这样一旦您的手机失去连接,应用程序就会停止运行。 facebook.github.io/react-native/docs/running-on-device这个链接告诉你如何在设备上运行。
    【解决方案2】:

    Andrew 有正确的答案,但如果您最终要进行大量部署,我强烈建议您使用 Fastlane。一旦你学会了 fastlane,它将从 ios 部署过程中摆脱很多令人头疼的问题。我为此创建了一个youtube video,讨论了手动过程以及 fastlane 如何为您自动执行每个步骤。

    我希望这会有所帮助!

    【讨论】:

      猜你喜欢
      • 2020-08-26
      • 1970-01-01
      • 2015-12-29
      • 2012-01-21
      • 1970-01-01
      • 1970-01-01
      • 2022-10-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多