2012-12-09 3 views
0

나는 android가 ARMv5TEARMv7a CPU를 지원합니다. (armeabiareabi-v7a 폴더) 대부분의 안드로이드 폰의 CPU는 지금 VFPVFPARMv7VFP없이 ARMv6, ARMv6 있습니다.Android NDK : ARMv6 용 하드웨어 부동 소수점

내 앱에 물리 시뮬레이션이 있으며 하드웨어 부동 소수점으로 만 기기를 타겟팅하고 싶습니다. (VFP). VFP 없이는 장치를 지원하고 싶지 않습니다.

ARVv5TE 대신 ARMv6VFP이되도록 ARMEABI 코드를 컴파일하도록 NDK 프로젝트를 구성하려면 어떻게해야합니까?

APK를 업로드 할 때 Google Play 인터페이스를 통해 ARMv6 기기를 VFPARmv5 기기없이 차단할 수 있습니다.

+0

Google Play를 통해 VFP 및 ARMv5가없는 기존 ARMv6를 차단하는 방법은 무엇입니까? (프로세서 모델 때문에 하나씩 제외) – Raykud

+0

우리는하지 않습니다. 원하는 경우 장치별로 차단할 수 있지만 그러한 장치는 없습니다. HTC 영웅 그 밖에? HTC 여기에 OpenGL ES 2.0이 없습니다. OpenGL ES 2.0을 사용합니다. OpenGL ES 2.0에 의해 이미 차단되었습니다. – Max

답변

2

NDK는 기본 빌드 옵션을 변경하는 편리한 방법을 제공하지 않습니다. 추가 플래그 만 추가 할 수 있지만 표준 옵션을 대체 할 수는 없습니다.

기본값은 LOCAL_CFLAGS이며 다른 옵션은 대부분 작동하지 않습니다. 왜냐하면 NDK가 옵션을 지정하고 플래그를 덮어 쓰기 때문입니다. 내가 아는 유일한 해결책은 Application.mk에 글로벌 APP_CFLAGS을 정의하는 것입니다. 그래서 ARMv6에 가진 VFPv2에 최적화 된 바이너리 발생한다 다음

APP_CFALGS += -march=armv6 -mno-soft-float -mfloat-abi=softfp -mfpu=vfp 

를 또한 내가 정확히 기억한다면, ARMv6에 하드웨어 VFP 명령어는 ARM 모드 (하지 엄지 손가락)에 코드를 컴파일 할 필요합니다. 이를 달성하려면 모든 대상에 대해 을 Android.mk으로 지정하십시오.

그런데 저는 armv6 장치의 성능에 만족하지 않을 것이라고 생각합니다. 최신 하이 엔드 armv7 프로세서도 최신 Intel Core CPU보다 약 10 배 더 느립니다.

+1

인텔 대 ARM 성능 토론에 대한 보고서를 제공 할 수 있습니까? – auselen

+0

ARMv7은 Intel Core 2보다 10 배 느리지 않습니다. 소프트웨어에서 ARM 부동 소수점은 VFP가있는 ARM보다 느리게 실행됩니다. – Max

관련 문제