0

네이티브 C++ 엔진을 Android NDK로 포팅했습니다. 몇 가지 환경과 도구를 사용해 본 후, 가장 편안한 vs-android (0.9)를 찾았습니다. 몇 가지 문제가 있습니다. (향후 질문에서 물어야 할 수도 있습니다.)하지만 현재는 여기에 있습니다.vs-android를 사용하여 여러 Android 플랫폼 (및 가능한 경우 ABI)을 구축하려면 어떻게해야합니까?

네이티브 엔진이 네이티브 공유 라이브러리로 컴파일됩니다. 우리는 엔진이 android-8 API 호환 (android 2.2)이되기를 바랍니다.

우리는 우리가 내부적으로 사용하는 몇 가지 테스터 응용 프로그램을 가지고 있습니다. 나는 그것들 중 하나를 안드로이드에도 이식했지만 네이티브 액티비티 (그리고 네이티브 앱 풀을 사용하고 있기 때문에)는 안드로이드 -9 (2.3)가 필요합니다.

저는 엔진 프로젝트와 테스터 앱에 사용되는 정적 라이브러리 인 모듈 프로젝트가 있습니다. 엔진 용으로 안드로이드 -8을, 테스터 용으로 안드로이드 -9를 컴파일하려면이 파일이 필요합니다. 그 외에도 arm5와 arm7을 모두 지원하고자합니다.

ndk 빌드 스크립트를 사용하면이 작업을 매우 쉽게 처리 할 수 ​​있습니다. MS-Build (vs-android 사용)에서는 기하 급수적 인 구성 (디버그/프로필/릴리스를 잊지 말 것)이 필요합니다.

이러한 구성을 모두 작성하지 않고이를 수행 할 수있는 방법이 있습니까? 예를 들어 엔진을 만들면 android-8 용 모듈을 컴파일하고 arm5와 arm7 용 모듈을 컴파일하고 테스터를 빌드하면 안드로이드 9 용 모듈과 arm5 및 arm7 용 모듈을 컴파일합니다. 각 프로젝트와 디버그, 프로파일, 릴리즈에 거의 동일한 4 개의 구성을 생성합니까?

나는 this을 찾았지만 사용 방법과 부모/자식 프로젝트의 기술을 여기에 적용 할 수 있는지는 잘 모르겠습니다.

(내가 '게으르다가 멈추고 모든 구성에서 매개 변수를 변경해야 할 때마다 언제든지 구성을 만들 수 있습니다'라고 알려주는 것은 의견으로 받아 들일 만하지만 부탁하지 말라. 'vs-android를 사용하는 대신 ndk-build를 사용하고 수동으로 apk를 빌드하십시오.').

감사합니다.

(BTW, 누군가가 대 - 안드로이드 태그를 추가하시기 바랍니다 수 있습니까?)

편집 : 나는 부분적인 해결책을 온 - 전용 API 수준 문제로. 아래 내 대답을 참조하십시오.

+0

태그가 추가되었습니다. 그리고 기하 급수적 인 구성 문제에 대해서 : 한번에 여러 구성에서 빌드 매개 변수를 변경할 수는 있지만, 매번 설정 매개 변수를 켜야한다는 것을 기억해야합니다. – liori

+0

감사합니다. API 레벨 문제 (솔루션 당 하나만 있다고 가정 할 때)에 대해 다소 해결책을 찾았으며 곧 게시 할 예정입니다. 하지만 "한 번에 여러 구성의 매개 변수 변경"에 관심이 있습니다 ... – Asaf

답변

0

좋아요, 여기에 내가 찾은 부분적인 해결책이 있습니다 (아무도 다른 답변을 찾지 못했기 때문입니다).

이것은 API 수준 문제와 관련이 있습니다. 또한 솔루션에 특화된 모든 것을 처리 할 수 ​​있습니다. - 은 특히 내 문제에 대한 각 프로젝트 (모든 정적 libs와, 엔진 공유 LIB 및 테스터 공유 LIB)의 경우, 나는이 프로젝트 파일에 다음을 추가 :

<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를 실행하기 전에 여러 번 호출되는) 짧은 스크립트를 사용