0

私はネイティブC++エンジンをAndroid NDKに移植しています。 いくつかの環境やツールを試した結果、最新のvs-android(0.9)が最も快適であることがわかりました。 私はそれにいくつかの問題があります(将来の質問では質問する必要があるかもしれません)が、今のところ -vs-androidを使用して複数のアンドロイドプラットフォーム(場合によってはABI)を構築するにはどうすればよいですか?

ネイティブエンジンはネイティブ共有ライブラリにコンパイルされます。我々はエンジンがアンドロイド8 API互換(アンドロイド2.2)であることを望んでいます。

私たちは内部的に使用するテスターアプリケーションをいくつか持っています。私はAndroidにもその1つを移植しましたが、ネイティブのアクティビティ(およびその上にネイティブアプリの接着剤)を使用しているので、アンドロイド9(2.3)が必要です。

私はいくつかのモジュールプロジェクトを持っています - スタティックライブラリ - エンジンとテスターの両方のアプリケーションで使用されています。私はエンジンのアンドロイド8、そしてテスターのアンドロイド9にコンパイルするのに必要です。 それに加えて、arm5とarm7の両方をサポートしたいと考えています。

ndkビルドスクリプトでは、これをかなり簡単に行うことができます。 MS-Build(vs-android使用)では指数関数的な数の設定が必要なようです(デバッグ/プロファイル/リリースについて忘れないでください)。

これらの設定をすべて作成せずにこれを行う方法はありますか?たとえば、私がエンジンをビルドすると、アンドロイド8とアーム5とアーム7の両方のモジュールがコンパイルされ、テスト担当者がアンドロイド9とアーム5とアーム7のモジュールをコンパイルします各プロジェクトとデバッグ、プロファイル、リリースの4つのほぼ同じ構成を作成しますか?

私はthisを見つけましたが、それを使用する方法や親子プロジェクトの手法を適用することが可能かどうかはわかりません。

(パラメータを変更したいときはいつでも、すべての設定で変更する必要があるという事実にもかかわらず、設定を作成することは怠け者ではなく、同じように 'vs-androidを使うのではなく、ndk-buildを使い、apkを手作業でビルドする')。

ありがとうございます!

(?ところで、誰かがVS-アンドロイドタグを追加してくださいすることができます)

EDIT: 私は部分的な解決策を思い付いた - 唯一のAPIレベルの問題に。下の私の答えを見てください。

+0

タグを追加しました。指数関数的な構成の問題については、一度にいくつかの構成でビルド・パラメーターを変更することは可能ですが、毎回オンにすることを忘れないようにしてください。 – liori

+0

ありがとうございます。私はAPIレベルの問題のためのちょっとした解決策を見つけました(あなたはソリューションごとに1つしかないと仮定するとすぐに)、私はすぐに投稿します。しかし、私は "一度にいくつかの設定でパラメータを変更する"に興味があります... – Asaf

答えて

0

OK、これは私が見つけた部分的な解決方法です(誰も他の回答を得ていないので)。

これはAPIレベルの問題に関するものです。また、ソリューション固有のものについても機能します。 - は具体的に私の問題のため 各プロジェクト(すべての静的LIBSに、エンジン共有ライブラリとテスター共有ライブラリ)のために、私はプロジェクトファイルに以下を追加:

<Import Condition="Exists('$(SolutionDir)AndroidSolution.props')" Project="$(SolutionDir)AndroidSolution.props" /> 

そして、それぞれの溶液を判断することができますソリューションファイルと同じフォルダに 'AndroidSolution.props'というファイルを追加して、すべてのプロジェクトに必要なパラメータを設定します。 サンプル小道具ファイル:

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
    <PropertyGroup> 
    <AndroidAPILevel>android-8</AndroidAPILevel> 
    <!-- <AndroidArch>armv7-a</AndroidArch> --> 
    </PropertyGroup> 
</Project> 

APIレベルは、溶液中のすべてのプロジェクトのために決定され、そして、彼らはさまざまなソリューションのために変更することができますこの方法。複数のABIのためとして

、私はXMLに次を追加しました:

<AndroidArch>__ANDROID_ARCHITECTURE__</AndroidArch> 
<PlatformToolset>__PLATFORM_TOOLSET__</PlatformToolset> 

をし、ビルドスクリプトで両方のパラメータを置き換えるために(それぞれのMSBuild実行前に複数回呼び出される)短いスクリプトを使用

関連する問題