48970


monacaを利用しているものですが、IOSでWebRTCを使ったアプリ作成を行いたいと思っています。  
しかし内部ブラウザであるWKWebViewでは使えないことがわかり、別途cordovaプラグインを使用することにしました。  
見つけたものが「iosrtc(<https://github.com/BasqueVoIPMafia/cordova-plugin-iosrtc>)」  
というもので、プラグインをアップロード、有効化して試しにカスタムデバッカーでビルドしようとしました。  
しかしここでエラーが出てしまい、先に進めない状況になってしまっています。

[code]

    Remove DerivedData files...
    
    Remove IB Support files...
    Change Xcode Version to 9
    Build Error: Error: Sandbox Exec Error: [ ** ARCHIVE FAILED **
    
    
    The following build commands failed:
        CompileSwift normal arm64 /tmp/monaca/5bb44c3ee788859048201c66/project/platforms/ios/testcamera/Plugins/cordova-plugin-iosrtc/iosrtcPlugin.swift
        CompileSwift normal arm64 /tmp/monaca/5bb44c3ee788859048201c66/project/platforms/ios/testcamera/Plugins/cordova-plugin-iosrtc/PluginRTCTypes.swift
        CompileSwiftSources normal arm64 com.apple.xcode.tools.swift.compiler
    (3 failures)
    Error: Error code 65 for command: xcodebuild with args: -xcconfig,/private/tmp/monaca/5bb44c3ee788859048201c66/project/platforms/ios/cordova/build-debug.xcconfig,-workspace,testcamera.xcworkspace,-scheme,testcamera,-configuration,Debug,-destination,generic/platform=iOS,-archivePath,testcamera.xcarchive,archive,CONFIGURATION_BUILD_DIR=/private/tmp/monaca/5bb44c3ee788859048201c66/project/platforms/ios/build/device,SHARED_PRECOMPS_DIR=/private/tmp/monaca/5bb44c3ee788859048201c66/project/platforms/ios/build/sharedpch
     ]
    
[/code]

swiftを使用しているようなので,config.xmlに

[code]

    <platform name="ios">
      <preference name="ios-XCBuildConfiguration-SWIFT_VERSION" value="4"/>
    </platform>
    
[/code]

を追記しました。  
とりあえず、「iosrtc」cordovaプラグイン無しでビルドをしてみたところ成功したため、証明書関係は問題ないようです。  
(それなのにエラーコード 65 が出ているのが気になりますが...)

ご教授お願い致します。


CC BY-SA 4.0
2018-10-03T07:13:55.593
48924
2018-10-05T01:27:25.043
26628
question
javascript html monaca cordova
monacaで「iosrtc」cordovaプラグインのビルドエラー


cordova-plugin-iosrtcのドキュメント

<https://github.com/BasqueVoIPMafia/cordova-plugin-
iosrtc/blob/master/docs/Building.md>

を読むと書いてありますが、このプラグインはただ組み込んだだけでは動作せず、その後、手動でXcodeに設定を行う必要があるとされています。

このドキュメントも、どうも古くて不十分のようなのですが、自分が手元で確認した限りでは、

  1. Swiftのバージョンを3.0にする
  2. Bridgingヘッダーを設定する

の2つが必要のようです。

基本的に、Monacaでは、手動で設定が必要なプラグインは正式な対応はしていないため、このプラグインは利用することが出来ません。

そのため、プラグインを改修するか、もしくは、補助スクリプト（フックスクリプト）を利用してなんとかするしかないと思います。

ここでは、試しに補助スクリプトを使って次の方法を行ってみました。一応、ビルドには成功しました。

  1. Swiftのバージョンについては、質問者さんの方法で設定しますが、Monacaでは内部でXcode 9系が利用されているため、3.0は使えないので、3.3とします。

  2. Bridging-Header.hは、Cordova 7系では変更出来ないため、フックスクリプトで対応します。(なお、Cordova 9系から、これらの設定が出来るように予定されています）

具体的には、次の1.2.を行います。

  1. config.xmlを編集し、`<platform name="ios">`の配下に次を組み込む
[code]     <preference name="ios-XCBuildConfiguration-SWIFT_VERSION"
value="3.3"/>

    <hook type="after_prepare" src="res/after_prepare_ios.js"/>
    
[/code]

  2. resフォルダの下に、`after_prepare_ios.js`ファイルを作り、次のコードを書き込む。
[code]     // This is a JavaScript file

    var path = require('path');
    var fs = require('fs');
    module.exports = function(context) {
      var projectRoot = context.opts.projectRoot;
      var pathAPI = path.resolve(projectRoot, 'platforms', 'ios', 'cordova', 'Api.js');
      var API = require(pathAPI);
      var api = new API('ios');
    
      var src = path.resolve(projectRoot, 'plugins', 'cordova-plugin-iosrtc', 'src', 'cordova-plugin-iosrtc-Bridging-Header.h');
      var dist = path.resolve(api.locations.xcodeCordovaProj, 'Bridging-Header.h');
    
      console.log('-- copy file ' + src + ' to ' + dist);
      fs.copyFileSync(src, dist);
    
    };
    
[/code]

この2. については、何をしているのかよくわからないかも知れませんが、要は、プラグインが内包している`cordova-plugin-iosrtc-
Bridging-Header.h`ファイルを強制的にコピーして、Cordovaのブリッジングヘッダーである`Bridging-
Header.h`に上書きしています。

組み込んだプラグインは、やや古いもののようなので、ビルドが成功したとしても、期待された動作をするかどうかまでは分かりませんが、ご参考になれば幸いです。


CC BY-SA 4.0
2018-10-04T12:16:25.867
48970
2018-10-04T12:16:25.867
8848
48924
answer