質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
DLL

DLL(Dynamic Link Library)とは、他のモジュールからも使用する事が出来る、関数とデータが格納されているモジュールのことです。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

Q&A

解決済

1回答

1939閲覧

V8 JavaScriptエンジンのiOS向けビルドの仕方を教えてください!

Futahei

総合スコア80

DLL

DLL(Dynamic Link Library)とは、他のモジュールからも使用する事が出来る、関数とデータが格納されているモジュールのことです。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

3グッド

5クリップ

投稿2018/12/10 06:14

編集2018/12/17 09:42

前提・実現したいこと

Googleが提供している高性能なJavaScriptエンジンのV8をiOSで動作するようにしたいです。
具体的にはV8をiOS向けにビルドした後、C#のプロジェクトに組み込んでUnityで製作するアプリで利用したいです。

発生している問題・エラーメッセージ

こちらにある手順通りにV8のビルドを行っていたのですが、iOSに向けた特別な手順の説明がありませんでした。なので独自に調べたところGNを用いたビルド時にいくつかの引数を設定するのですが、そこで以下のように設定しました。

gn

1is_component_build = false 2is_debug = false 3v8_monolithic = true 4v8_static_library = true 5target_os = "ios" 6target_cpu = "arm64" 7v8_use_snapshot = false 8# is_clang = false 9v8_use_external_startup_data = false

ですがビルド時にいくつものエラーが発生してしまいます。
主に、Undefined symbols for architecture arm64というエラーが多発していて、無視してビルドを続けさせることはできるのですが少し不安です。

また、生成されたいくつかの.aファイルをC#のプロジェクトに組み込む方法もわかりません。

試したこと

GNビルドの引数は出したり消したりでいくつも試しました。サンプルの手順に従ってやったものは特にエラーが出ません。
Cコンパイラの問題も疑ってgccのバージョンアップも行いました。

補足情報(FW/ツールのバージョンなど)

開発環境 MacOS
ターミナルはZshを使ってます。

そもそもの話ですが、知りたいことはマルチプラットフォームで動作するJavaScriptエンジンです。もし、他の方法をご存知の方がいらっしゃったら教えていただけると嬉しいです
試したもの
Jint (Unityで使えるC#のバージョンでは動作しない。ECMA5.1までしか対応していない。)
ClearScript (.NET Frameworkに依存していてWindowsでしか動作しない。)
ChakraCore (MicrosoftがEdgeでV8を使用することを発表するなど、将来性がないので使用を控えたい)
追記(2018/12/15):このIssueに寄ればこれからも更新されるそうなので検討の余地があった。
追記(2018/12/17):
BaristaCore (ChakraCoreを用いた.NET Standard準拠のライブラリ。)

Koopa, okumurakengo, set0gut1👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/12/30 05:53 編集

サポート環境に iOS は入ってません。 LINUX(組み込み系除く)、MAC OS X、 Winodows なので ios はサポートするプラットフォームではないです。 ソースをもらってカスタマイズしてからビルドしてください。
Futahei

2018/12/30 05:46

V8に関することでよろしいでしょうか? gn args --listで使うことのできる引数の一覧を見ることができるのですが、その中にtarget_osがあり、有効な値に"ios"があるのですがこれはどういうことでしょうか?
Futahei

2018/12/30 05:51

また、この質問はV8のソースからiOS向けに動作する静的なライブラリをビルドする作業の途中に発生した問題なので「ソースをもらってビルドしてください」では意図をはかりかねますので、具体的になんのソースなのか教えていただけると嬉しいです。
oikashinoa

2019/07/25 04:44

https://www.publickey1.jp/blog/19/javascripthermesfacebook.html モバイルアプリに最適化した軽量JavaScriptエンジン「Hermes」、Facebookがオープンソースで公開。低スペックのスマートフォンでの実行速度を重視 解決済かつ質問者の意図とはズレますが、js のエンジン集として上記を上げておきます
guest

回答1

0

自己解決

お世話になっております。
stackoverflowの方で同様の質問をしていたのですが、解決?したのでここにも記しておきます。

まずiOSに関して、Appleのデベロッパーライセンス契約に寄れば、アプリに埋め込みでないスクリプトやインタープリタ機構を搭載することを禁じられていることがわかりました。
読みたい方は公式サイトからどうぞ。

なのでV8はもちろんのこと通常のJsエンジンをアプリに組み込むことは叶わないということです。
ちなみにChromeなどもこれに縛られているのでiOS版ではV8を使えておりません。

代わりにiOSではJavaScriptCoreというエンジンが提供されています。
なので今回の開発ではこちらを使用していく予定です。

ありがとうございました。

投稿2019/02/14 06:14

Futahei

総合スコア80

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問