2011-07-27 47 views
0

我正在將本機C++引擎移植到Android NDK。 嘗試一些環境和工具後,我發現最新的vs-android(0.9)是最舒服的。 我確實有一些問題(有些我可能需要在將來的問題中提出),但現在 - 這是一個:如何使用vs-android構建多個Android平臺(可能還有ABI)?

本地引擎編譯爲本地共享庫。我們希望引擎能夠兼容android-8 API(android 2.2)。

我們有一些內部使用的測試儀應用程序。我也將其中的一個移植到了Android,但由於我使用的是本機活動(並且在本機應用程序膠水之上),它需要android-9(2.3)。

我有一些模塊項目 - 靜態庫 - 在引擎和測試應用程序中都使用。我需要這些編譯到android-8的引擎,以及android-9的測試。除了所有這些,我們還想支持arm5和arm7。

使用ndk構建腳本,我可以很容易地做到這一點。在MS-Build(vs-android使用)中,它似乎需要指數級的配置(不要忘記調試/配置文件/版本)。

有沒有辦法做到這一點,而無需創建所有這些配置?例如,當我構建引擎時,它將編譯android-8的模塊,以及arm5和arm7的模塊,並且當我構建測試器時,它將編譯android-9和arm5和arm7的模塊,而無需爲每個項目創建4個幾乎相同的配置以及調試,配置文件和發行版?

我發現this,但我不知道如何使用它,如果可以在這裏應用父/子項目的技術。

(告訴我'停止懶惰,只是創建配置,儘管事實上,無論何時您想更改參數,您都必須在所有配置中更改它'作爲評論可接受,但請 - 不 - 作爲答案。'使用ndk-build並手動構建你的apk而不是使用vs-android')也是如此。

謝謝!

(順便說一句,有人可以添加VS-Android的標籤?)

編輯: 我想出了一個部分解決方案 - 只對API級別問題。請參閱下面的答案。

+0

添加標籤。對於指數配置問題:可以一次更改多個配置中的構建參數,但每次記住開啓它都是一件痛苦的事情。 – liori

+0

謝謝。我發現了API級別問題的一種解決方案(假設您每個解決方案只有一個解決方案),我將很快發佈。但我對「一次更改幾個配置的參數」感興趣...... – Asaf

回答

0

好的,這是我找到的部分解決方案(因爲沒有其他人提出了另一個答案)。

這是關於API級別問題。它也適用於特定於解決方案的任何事情。 專門針對我的問題 - 對於每一個項目(所有靜態庫,引擎共享庫和測試共享庫),我增加了以下的項目文件:

<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執行之前多次調用)在構建腳本

來代替這兩個參數
相關問題