クロスコンパイルプラットフォーム

NaseemMahasneh

JVM、Scala Native、Android、scalajsを含むsbtクロスプラットフォーム(Hello world app)を作成したかったのですが、androidを除くすべてをコンパイルすることに成功しました。これが私のbuild.sbtです。

name := "Cross-Platforms-ScalaNative-JVM"

import sbtcrossproject.CrossPlugin.autoImport.{crossProject, CrossType}

val sharedSettings = Seq(scalaVersion := "2.11.12")

lazy val bar =
// select supported platforms
  crossProject(JSPlatform, JVMPlatform, NativePlatform)
    .crossType(CrossType.Full)
    .settings(sharedSettings)
    .jsSettings(
      libraryDependencies += "org.querki" %%% "jquery-facade" % "1.2") 
    .jvmSettings(/* ... */)
    .nativeSettings(/* ... */)

lazy val barJS     = bar.js
lazy val barJVM    = bar.jvm
lazy val barNative = bar.native

これが私のプロジェクトの様子です

このプロジェクトでAndroidプラットフォームを作成する方法についての私の質問。SBTにどのような変更を加える必要がありますか?

Mateusz Kubuszok

Androidビルドは基本的にJVMビルドであり、追加の手順があります。JVMバイトコードを取得し、オプションでproguardを実行してコードを最小化し、Android形式にコンパイルします。

ここに、sbtで通常のAndroidビルドをセットアップする方法に関する多くの情報があります:https//scala-android.org/quickstart/

違いはandroidBuild、JVMプロジェクトにのみ(およびすべてのAndroid関連の設定)を適用することです。

val myProjectJVM = myProject.jvm
  .settings(androidBuild: _*)

ただし、Androidビルドと通常のScalaビルドの外観が異なることを考慮すると(通常のJVMアプリケーションはAndroidアプリとアーキテクチャ的にほとんど関係がないため(Main.main(Array[String])Androidフラグメントやサービスなど))、共有JVMコード用のモジュールを用意することをお勧めします。プラットフォーム固有のパーツ専用のプロジェクト:

val commonJVM = myProject.jvm
val myProjectJVM = project.in(file("java-specific"))
  .dependsOn(commonJVM)
val myProjectAndroid = project.in(file("android-specific"))
  .settings(androidBuild)
  .dependsOn(commonJVM)

そのアーキテクチャの違いが、クロスプロジェクトでAndroidを4番目のオプションにすることを誰も考えていない理由である可能性が最も高いです-ランタイムの依存関係が異なり、アプリケーションを起動する方法が異なるため、コードのより多くの部分が異なることになります一般。共通の依存関係に依存するプラットフォーム専用のコードを持つサブモジュール(クロスコンパイルされたものでも)はより良い考えです。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

クロスプラットフォームのコンパイルとインストーラー

分類Dev

C ++ / Qtプロジェクトのクロスプラットフォームコンパイル

分類Dev

HaxeDevelop:デフォルトのプロジェクトテンプレートを介したクロスプラットフォームコンパイル

分類Dev

クロスコンパイル-プラットフォームとアーキテクチャ

分類Dev

MSBuild-クロスプラットフォームコンパイラをビルドに統合する

分類Dev

ローカルのbrew式を使用してクロスプラットフォームのgccコンパイラをインストールする

分類Dev

クロスプラットフォームコンソールのクリア?

分類Dev

QMAKE。QTプロジェクトをクロスコンパイルするときにホストプラットフォームとターゲットプラットフォームを把握する方法

分類Dev

LinuxでクロスプラットフォームのGo言語プロジェクトをコンパイルする方法は?

分類Dev

ツールチェーンをARMv5プラットフォームにクロスコンパイルする方法は?

分類Dev

クロスプラットフォームcmakeプロジェクトでコンパイラフラグを設定する最新の方法

分類Dev

クロスプラットフォームcmakeプロジェクトでコンパイラフラグを設定する最新の方法

分類Dev

クロスプラットフォームcmakeプロジェクトでコンパイラフラグを設定する最新の方法

分類Dev

プラットフォームのデフォルトの文字エンコーディングはクロスプラットフォームのパフォーマンスにどのように影響しますか

分類Dev

symfonyブートストラップフォームコントロールクラスを追加

分類Dev

symfonyブートストラップフォームコントロールクラスを追加

分類Dev

ブートストラップ3フォームコントロールがスタックしない

分類Dev

クロスコンパイルプラットフォームアプリケーション上のGoogleクラッシュパッド。Ubuntuでdmpファイルを読み取れません

分類Dev

assimp(assert importer)をps4やXBox1などのプラットフォームにクロスコンパイルする方法

分類Dev

C ++のクロスプラットフォームコンパイルを設定する方法(win7のNetBeansおよびLinuxのmake)

分類Dev

gccを使用してLinux用のWindowsでクロスプラットフォームコンパイルする方法は?

分類Dev

WinFormsデザイナのカスタムコントロールのフォーマットプロパティ

分類Dev

Asp.netMVCマルチラインフォームコントロール/テキストボックス

分類Dev

Linux C++ の ARM プロセッサ + zynq-7000 コンパイル プラットフォーム?

分類Dev

#errorディレクティブはクロスプラットフォームとクロスコンパイラです

分類Dev

クロスプラットフォーム/コンパイラの浮動小数点数の一貫したスプリント

分類Dev

フォームコントロールの整列ブートストラップ

分類Dev

スプレークライアントアップロードフォームとファイル

分類Dev

Linuxでのクロスプラットフォームコンパイルの問題:エラー:new_allocator.h:93:7:エラー:「アドレス」の複数のオーバーロードが同じ署名にインスタンス化

Related 関連記事

  1. 1

    クロスプラットフォームのコンパイルとインストーラー

  2. 2

    C ++ / Qtプロジェクトのクロスプラットフォームコンパイル

  3. 3

    HaxeDevelop:デフォルトのプロジェクトテンプレートを介したクロスプラットフォームコンパイル

  4. 4

    クロスコンパイル-プラットフォームとアーキテクチャ

  5. 5

    MSBuild-クロスプラットフォームコンパイラをビルドに統合する

  6. 6

    ローカルのbrew式を使用してクロスプラットフォームのgccコンパイラをインストールする

  7. 7

    クロスプラットフォームコンソールのクリア?

  8. 8

    QMAKE。QTプロジェクトをクロスコンパイルするときにホストプラットフォームとターゲットプラットフォームを把握する方法

  9. 9

    LinuxでクロスプラットフォームのGo言語プロジェクトをコンパイルする方法は?

  10. 10

    ツールチェーンをARMv5プラットフォームにクロスコンパイルする方法は?

  11. 11

    クロスプラットフォームcmakeプロジェクトでコンパイラフラグを設定する最新の方法

  12. 12

    クロスプラットフォームcmakeプロジェクトでコンパイラフラグを設定する最新の方法

  13. 13

    クロスプラットフォームcmakeプロジェクトでコンパイラフラグを設定する最新の方法

  14. 14

    プラットフォームのデフォルトの文字エンコーディングはクロスプラットフォームのパフォーマンスにどのように影響しますか

  15. 15

    symfonyブートストラップフォームコントロールクラスを追加

  16. 16

    symfonyブートストラップフォームコントロールクラスを追加

  17. 17

    ブートストラップ3フォームコントロールがスタックしない

  18. 18

    クロスコンパイルプラットフォームアプリケーション上のGoogleクラッシュパッド。Ubuntuでdmpファイルを読み取れません

  19. 19

    assimp(assert importer)をps4やXBox1などのプラットフォームにクロスコンパイルする方法

  20. 20

    C ++のクロスプラットフォームコンパイルを設定する方法(win7のNetBeansおよびLinuxのmake)

  21. 21

    gccを使用してLinux用のWindowsでクロスプラットフォームコンパイルする方法は?

  22. 22

    WinFormsデザイナのカスタムコントロールのフォーマットプロパティ

  23. 23

    Asp.netMVCマルチラインフォームコントロール/テキストボックス

  24. 24

    Linux C++ の ARM プロセッサ + zynq-7000 コンパイル プラットフォーム?

  25. 25

    #errorディレクティブはクロスプラットフォームとクロスコンパイラです

  26. 26

    クロスプラットフォーム/コンパイラの浮動小数点数の一貫したスプリント

  27. 27

    フォームコントロールの整列ブートストラップ

  28. 28

    スプレークライアントアップロードフォームとファイル

  29. 29

    Linuxでのクロスプラットフォームコンパイルの問題:エラー:new_allocator.h:93:7:エラー:「アドレス」の複数のオーバーロードが同じ署名にインスタンス化

ホットタグ

アーカイブ