在错误的Build / Products文件夹中将本机构建与自己的配置进行反应

时间:2018-01-18 10:01:35

标签: xcode react-native build configuration

我尝试使用单独的配置进行开发,暂存和生产,只使用一个存储库构建三个应用程序。 我正在使用本机反应,并希望有可能只在Xcode中更改方案,以便为每个应用程序设置不同的应用程序名称和不同的app-id。 也可以从控制台构建,因为我使用CI / CD

环境:

  • OS:macOS High Sierra 10.13.2
  • 节点:9.3.0
  • 纱线:1.3.2
  • npm:5.6.0
  • 守望者:4.9.0
  • Xcode:Xcode 9.2 Build版本9C40b
  • Android Studio:2.3 AI-162.3764568

包:(想要=>已安装)

  • 反应:16.0.0 => 16.0.0
  • 反应原生:0.50.3 => 0.50.3
  • 目标平台:iOS(8.0)

我已经取得的成就:

使用自己的图标,名称和app-ID在Xcode中创建新的配置和方案。更改调试配置。

  1. Dublicate configuration" Release" =>命名暂存
  2. 添加新的IconsSets => AppIconStaging和AppIconDebug
  3. 更改目标构建设置
    1. ASSETCATALOG_COMPILER_APPICON_NAME
      • 调试:AppIconDebug
      • 暂存:AppIconStaging
      • 发布:AppIconRelease
    2. PRODUCT_BUNDLE_IDENTIFIER
      • 每个配置都不同
    3. PRODUCT_NAME
      • 每个配置都不同
  4. Dublicate Scheme =>命名:ProjectDebug和ProjectStaging
  5. 编辑方案
    1. 设置运行,配置文件和存档的构建设置
      • ProjectDebug =>调试
      • ProjectStaging =>分段
  6. 此时尝试在模拟器上运行ProjectStaging失败,因为构建失败。 我注意到,在我的项目的新git克隆上使用Staging配置构建ProjectStaging时,一些文件是在 ios / build / Build / Products / Release-iphonesimulator 中构建的。

    由于此文件构建失败,无法在 Staging-iphonesimulator 文件夹中找到它们。

    通过更改Staging配置的一些构建设置,可以找到解决方案的一些链接,这可以告诉您更改其他一些配置:

    更改:标头搜索路径框架搜索路径图书馆搜索路径用户标题搜索路径

    `$(BUILD_DIR)/Release$(EFFECTIVE_PLATFORM_NAME)`
    

    现在,当尝试从Xcode运行时,所有方案构建都失败了:

    `/Volumes/Workspace/Projects/Project/ios/ProjectTests/ProjectTests.m:11:9: 'XCTest/XCTest.h' file not found`
    

    从控制台运行:

    `node node_modules/react-native/local-cli/cli.js run-ios --device --scheme ProjectStaging --configuration Staging`
    

    由于同样的问题,构建失败,但App已安装且运行良好(暂时无法找到任何错误)

    构建档案始终有效。

    我认为这是一个反应原生的问题,但也许我做错了。

    我用过的链接

1 个答案:

答案 0 :(得分:0)

我发现有时有时将本机模块添加到React本机Xcode项目中,导致该模块的项目未针对父项目中的所有配置进行设置。

例如,如果我有这个Test1项目,其中添加了附加的“ Staging”配置:

enter image description here

然后,我可能需要使本机模块的项目的配置匹配,以便其设置与父级兼容。从目标选择器中选择项目:

enter image description here

并在这种情况下添加相应命名的配置“ Staging”:

enter image description here

这并非始终如一。我已经通过添加本地模块项目的手动方法以及使用react-native link命令看到了此行为。

它肯定会减慢开发速度,并使从做React Native工作的经历中脱颖而出。有助于对本地平台环境Xcode和Gradle进行故障排除。