1

React Native に 2 つの異なるビルド スキームがあり、cocoapod を使用するプロジェクトがあります。それをコンパイルするには、次を実行します。

react-native run-ios --scheme="RNProject-(SCHEME_NAME)"

結果として得られるアプリは、たとえば次のとおりです。

./build/Build/Products/Debug/iphonesimulator/RNProject-customer1.app
./build/Build/Products/Debug/iphonesimulator/RNProject-customer2.app
  • コマンドを使用して、ビルド スキームの 1 つに対してビルドしますが、他のスキームに対してはビルドしません。
  • Xcode は常に両方のビルド スキームのプロジェクトをビルドします。
  • さらに、build/Build/Products/Debug-iphonesimulator/RNProject-customer1.app/Info.plistそのパスに存在し、ファイルに有効なものが含まれています ( 2 つのビルド スキームのそれぞれにCFBundleIdentifier一致します)。General > Identity > Bundle Identifier
  • プロジェクト設定は両方のスキームで正しいようです (確認後ios/RNProject.xcodeproj/project.pbxproj)
  • スキーマ固有の設定は、ios/Pods/Target Support Files/Pods-RNProject-customer1およびios/Pods/Target Support Files/Pods-RNProject-customer2

私はそれを解決するためにさまざまな方法を試しました:

  • ランニングsudo react-native
  • RN パッケージャーの再起動
  • 手動編集Info.plist
  • ビルド場所の変更

コンソール:

** BUILD SUCCEEDED **

Installing build/Build/Products/Debug-iphonesimulator/RNProject.app
An error was encountered processing the command (domain=NSPOSIXErrorDomain, code=2):
Failed to install the requested application
An application bundle was not found at the provided path.
Provide a valid path to the desired application bundle.
Print: Entry, ":CFBundleIdentifier", Does Not Exist
child_process.js:509
    throw err;
    ^

Error: Command failed: /usr/libexec/PlistBuddy -c Print:CFBundleIdentifier build/Build/Products/Debug-iphonesimulator/RNProject.app/Info.plist
Print: Entry, ":CFBundleIdentifier", Does Not Exist

    at checkExecSyncError (child_process.js:486:13)
    at Object.execFileSync (child_process.js:506:13)
    at ChildProcess.xcodeBuildProcess.on.code (node_modules/react-native/local-cli/runIOS/runIOS.js:109:36)
    at emitTwo (events.js:106:13)
    at ChildProcess.emit (events.js:191:7)
    at maybeClose (internal/child_process.js:852:16)
    at Process.ChildProcess._handle.onexit (internal/child_process.js:215:5)
4

2 に答える 2

0

私の解決策は似ています:

  1. ./node_modules/react-native/local-cli/runIOS.js ファイルを開く
  2. ビルド パスを次のように変更します。

    const getBuildPath = function(configuration = 'Debug', appName, isDevice) {  
      return `build/Build/Products/${configuration}-${isDevice ? 'iphoneos' : 'iphonesimulator'}/${appName}.app`;
    };
    

    const getBuildPath = function(configuration = 'Debug', appName, isDevice) {  
      return `build/Build/Products/${configuration}-${isDevice ? 'iphoneos' : 'iphonesimulator'}/${appName}.app`;
    };
  • パスの「ビルド」を削除します。

Xcode-beta 8.2 を使用しています

于 2016-12-09T04:58:43.093 に答える