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

问题描述 投票:2回答:1

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

Environment:

  • 操作系统:macOS High Sierra 10.13.2
  • 节点:9.3.0
  • 纱线:1.3.2
  • npm:5.6.0
  • 守望者:4.9.0
  • Xcode:Xcode 9.2构建版本9C40b
  • Android Studio:2.3 AI-162.3764568

包:(想要=>已安装)

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

What I already achieved:

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

  1. 重复配置“Release”=>命名分段
  2. 添加新的IconsSets => AppIconStaging和AppIconDebug
  3. 更改目标构建设置 ASSETCATALOG_COMPILER_APPICON_NAME 调试:AppIconDebug 暂存:AppIconStaging 发布:AppIconRelease PRODUCT_BUNDLE_IDENTIFIER 每种配置都不同 产品名称 每种配置都不同
  4. Duplicate Scheme => named:Project Debug和Project Staging
  5. 编辑方案 设置运行,配置文件和存档的构建设置 ProjectDebug => Debug ProjectStaging =>分段

此时尝试在模拟器上运行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已安装并运行良好(暂时无法找到任何错误)

建立档案始终有效。

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

Links I used

xcode react-native build configuration
1个回答
0
投票

我发现有时向React本机Xcode项目添加本机模块会导致该模块的项目没有为父项目中的所有配置设置。

因此,例如,如果我有一个Test1项目,其中添加了一个额外的“Staging”配置:

enter image description here

然后我可能需要为本机模块的项目匹配进行配置,因此其设置与父项兼容。从目标选择器中选择项目:

enter image description here

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

enter image description here

这不会持续发生。我已经通过添加本机模块项目的手动方法以及使用react-native link命令看到了这种行为。

它肯定会减慢开发速度,并且可以减少React Native工作的体验。它有助于对本机平台的环境,Xcode和Gradle进行故障排除。

© www.soinside.com 2019 - 2024. All rights reserved.