monacaで「iosrtc」cordovaプラグインのビルドエラー – javascript html monaca

質問:


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

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
 ]

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

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

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

ご教授お願い致します。

質問者: sozo

KNaito

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">の配下に次を組み込む

    <preference name="ios-XCBuildConfiguration-SWIFT_VERSION" value="3.3"/>
    <hook type="after_prepare" src="res/after_prepare_ios.js"/>
    
  2. resフォルダの下に、after_prepare_ios.jsファイルを作り、次のコードを書き込む。

    // 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);
    
    };
    

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

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

出典

Related Posts:

2つあるHTML機能を一つにまとめたいです。 [クローズ済み] – javascript html ajax
質問: 失礼致します。 今それぞれ違う機能をもったHTMLファイル(JS機能含む)があります。 一つはサジェスト機能し検索することができます。2つ目はURL先で表示されているデータをテーブルに変換して表示する機能です。この二つを組み合わせていただけないでしょうか? 前者は検索してページを表示してもJSON形式のため見づらい 後者はテーブルに変換して見やすいがURL先をあらかじめ指定するため応用が利かない。 最終的に検索してテーブル表示させたいです。 画面遷移してもしなくても大丈夫です。 難しい部類に入るかと思いますがJavaScriptに詳しいかた何卒宜しく御願い致します。 初心者のため質問内容で分からない点があるかと思います。修正しますので遠慮なくおっしゃて下さい。 ---HTML--- <body> <form method="get"action="http://localhost:8180/api/stock/search?q=" Accept-charset="UTF-8"> <input type="text" id="ac2" name="car_name" > <input type="submit" value="検索"></form> </body> --javascript-- $(document).ready( function() { $("#ac2").autocomplete({ ...
amazonの価格取得 – javascript php api
質問: 、amazonの個別商品ページのURL(例)http://www.amazon.co.jp/dp/4822242633 を使って、商品価格だけを抜き出す場合、いろいろとやり方はあると思いますが、皆さんならどのように実現されますでしょうか。 教えて頂けますと、幸いです。 ※言語はPHPでお願いいたします。 ※amazon apiはリクエスト制限があるので、amazon api以外でお願いいたします。 ※商品価格とは以下のタグの部分です。 <span class="a-size-medium a-color-price offer-price a-text-normal">¥ 2,376</span> よろしくお願いいたします。 質問者: rei0328 <?php $html = file_get_contents("http://www.amazon.co.jp/dp/4822242633"); $dom = new DOMDocument(); @$dom->loadHTML($html); $xml = simplexml_import_dom($dom); $ret = $xml->xpath('//span[@class="a-size-medium a-color-price offer-price ...
目覚まし音も、“1分”遅れに鳴るのではなく、時間が来たら鳴るようにする方法について – javascript
質問: 下記のソースコードは、デジタルの目覚まし時計の目覚ましをセットして、時間が来るとデジタル時計は消え、目覚まし音とともに"アナログ時計"が現れるように設定したものですが、目覚まし音はアナログ時計が現れて"1分後"に鳴り始めます。セレクトの表示は、アナログ時計が現れるのと同時に切り替わります。どうすれば、目覚まし音も時間通りに切り替わるか、ご教示ください。 なお、音は出ないように設定しています。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> ...
デジタル時計は動いていないのに、更新される奇妙な現象 – javascript
質問: 下記のコードは、1分おきに"和暦"と"西暦"に切り替わる『(カレンダー機能付き)デジタル時計』で、 マウスポインターにくっついて来るものです。 しかし、問題があるのです。 デジタル時計は、一分ごとに更新されるのに秒針が動いていないのです。 このデジタル時計を動いている状態にするには、どうすればいいでしょうか。 <!DOCTYPE html> <html lang="ja"> <head> <meta http-equiv="Content-type" content="text/html; charset=UTF-8"> ...
Javascript超初心者です – javascript
質問: 初めまして、質問なんですが サイコロを振り、出た目を2x+5して結果が100以下の場合もう一度2x+5をし、 結果が100を超えたらその結果と何回計算したかを出力しろ という問題なんですがランダムな数字を生成することはできました。 しかしその先で躓いてしまい、中々うまくいきません。 どなたかアドバイスを下さい。 よろしくお願いします。 とりあえず書いてみたソースです。 <html> <head> <meta charset="UTF-8"> </head> <body> <script> function GetRandomNumber() { ...
javascriptに関する質問 – javascript
質問: 以下のようにCMSのようなものを作っているのですが、id="ul"の内部にある「消す」や「追加する」のところだけ、javascriptが効きません。どのようにしたら、動きますでしょうか。 詳しい方、ご教示頂けると幸いです。 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>記事投稿画面</title> </head> <body> <div ...
angular.jsと競合関係にあるフレームワーク [クローズ済み] – javascript
質問: フロントエンドの勉強をしようと思っていますが、angular.jsを学ぶか、他のものを学ぶか迷っています。 angular.jsと競合関係にあるフレームワークと、できればそのメリットや特徴などを教えていただけると助かります。 質問者: 0xfffffff7 ここにまとまっていると思われるURLを幾つか記載します。 いかにして我々はフロントエンドに秩序をもたらそうとしてきたか JavaScript フレームワーク - ペパボのフロントエンドスタンダード 【JavaScript】なんとか.jsのお話(backbone.js、angular.js、node.js、alt.js、unserscore.js、prototype.js....etc) 出典
javascriptでスロットマシン – javascript
質問: 自分は今、Javascriptでスロットマシンを作っています。 そこで質問なんですが、スタートボタンを連打しますとリールの回転が速くなってしまいます。 回転速度は一定のままにしたいです。 そしてアタリ、ハズレの判定が消えません。 どうしたらよろしいでしょうか。 よろしくお願いします。 Javascript //左リールの制御 function a1() { //aにHTMLから取得した数字を代入 var a=document.getElementById("su1").innerHTML; //文字列のiを数字に変換し1を足してxに代入 var x=parseInt(a)+1; ...
このコードを coffee script に変換していただきたいです – javascript coffeescript
質問: タイトルの通りです。このコードは coffee scriptでどう記述されるのでしょうか。 よろしくお願いいたします。 var app = angular.module('sampleApp', ); function MyController($scope) { $scope.foo = "" $scope.lastSubmitted = "" $scope.submit = function() { ...
「もっと使おうPhoneGap/Cordova 2.0.0 – 第8回 File APIを使ったiOS/Androidアプリケーション作成[その5]」 のサンプルで、アップロードができない – ios monaca cordova
質問: http://gihyo.jp/dev/serial/01/phonegap2/0008?page=2 上記のコードをもとにmonacaでiPadのアップロードアプリを作成中です。 現状は(一部抜粋)下記のとおりです、 uploadFileを実行することでgihyojp_logo2.pngをhttp://10.0.0.183/file/receive.phpに送るというものです。receive.phpは上のリンク先の内容と同一です。 function uploadFile(event) { // FileTransferオブジェクトを作成 var fileTransfer = new FileTransfer(); // アップロード先URIをencodeURIでエンコード ...
monacaのonsenUI上でのページ内遷移は可能ですか? – monaca onsen-ui
質問: 現在monacaとonsenUIを用いてアプリを作成中なのですが、ページ内遷移のやり方がどうしても分からず困っています。 やり方を知っている方、教えてください。 質問者: user13135 このようなやり方しか思いつきませんが・・・ <ons-scroller style="width:100%; height: 300px;"> <a name="top"></a> : : ...
Inappbrowserの表示について – javascript monaca html
質問: Inappbrowserを使う際、以下のような実装方法がわかりません。 是非、ご教授頂ければと思います。 ・下層面のヘッダー部分を残した表示方法 ・表示した後、アプリ側で用意したフッターを表示する方法 アプリ内ブラウザである事をユーザに伝えるには、上記のような工夫が不可欠かと思います。 例えば、リンク集の特定サイトをクリックした際、アプリ内ブラウザで表示する際、アプリ内で表示されている事が認識できませんので・・・。 また、Inappbrowserを使った際、location=yesを使うと、かなり見栄えの悪い<>と×が出てしまいます。 これを修正する方法も、ご教示頂けるとたすかります。 出来れば、実例があると助かります。 (どなたかのアプリで実装されていたら、インストールして確認させて頂ければと思います) よろしくお願い致します。 質問者: kenji ご利用されているプランなど、前提条件が分かりませんが2つほど…… InAppBrowserはMonacaが採用しているCordovaプラグインです。 Cordovaプラグインが提供しているUIが目的に沿わないのであればWebViewを表示するプラグインを自身で作るか、 sandbox属性を付与してiframe内で表示するかどちらかです。 アプリにもよると思いますが、 iframeであれば難しいことはありません。 ですが、あまり見知らぬWebページを徘徊させるのは危険です。 念のためsandboxを付けるのが無難かと思います。 プラグインを作成する方ですが、 MonacaでやるならGoldプラン以上のアカウントが必要です。 ……そもそもプラグインを作成できる能力があるのであれば 素直にCordovaで開発することをお勧めします。 追記 ちなみに採用しているcordovaプラグインはこちらになります Monacaのドキュメントはこちらです。 どういったWebページを表示するのか分かりませんが ご自身が管理されているWebページのみを見せるのであれば ツールバーを非表示にしてしまってWebページでUIを作り ハッシュやリクエストを付けてURLをアプリ側で読み取りながら制御することも可能です CordovaはMonacaに比べて更に敷居が高いと思いますし Cordovaプラグインを作成するとなるとJavaやObjective-C or Swift or Swift2の知識も必要です。 時間と手間暇との相談になるかと思いますが、 何を採用、優先して、どのように実現するかを明確にすると詳しくアドバイスなどを求められるかと思います 出典
多重プロジェクトの削除 – monaca
質問: monacaで3つのプロジェクトを作成  いらないものを削除するにはどうしたらよいですか? 質問者: 鈴木昭彦 プロジェクトを選択する場面で、アイコン(サムネイル)の左に小さいチェックボックスがあります。削除したいプロジェクトを選択すると、情報に削除ボタンが出現します。 出典
monaca クイズアプリについて – javascript monaca css
質問: http://matorel.com/archives/754 こちらのサイトも参考にしてクイズアプリを作ったのですが、いざandroidへダウンロードし試してみると、PC上だとできるのですが選択肢のボタンが改行されなくて横に伸びてしまいます。 よって選択肢のボタンが画面外へ行ってしまいます。 どうすればよろしいでしょうか? LGL23を使用しております。 質問者: 田中太郎 実装はGitからプロジェクトをインポートしたのでしょうか? リンクだけではなく問題のコードと、 スクショなどを質問文に記載なさると回答もつきやすいかと思います。 本題ですが、<ons-row>で<ons-col>とボタンを4つ纏めて括っているものを、2つずつで括ってはどうでしょうか? おそらくMETAの記述がリンク先と違うのでons-rowで指定した行が優先されて1行に纏められているものと思われます。 出典
変数の値が増えたか減ったかの判定方法 – javascript swift php
質問: Swiftで実装したいのですがロジックが応用できればどんな言語でも構いません。とある変数の値(数字)が動的に変わるのですが、その変数の値が増えたのか減ったのかで処理を分岐させたいと思っています。コードは下記のような感じです。 if(変数の値が増えた){ print("変数の値が増えた!") }esle if(いや、変数の値が減った){ print("変数の値が減った!") } 実装の方法が思いつきません。アドバイスいただければ幸いです 質問者: ryosuke-hujisawa 変更前の値と変更後の値を配列にとって配列の最初と最後を比較することで解決しました 出典

You Might Also Like

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です