2012-12-09 22 views
0

我知道android提供對ARMv5TEARMv7a CPU的支持。 (armeabiareabi-v7a文件夾) 大部分Android手機的CPU的現在ARMv6沒有VFPARMv6VFPARMv7VFPAndroid NDK:ARMv6的硬件浮點數

我的應用程序有物理模擬,我希望僅針對具有硬件浮點數的設備。 (VFP)。我不希望支持沒有VFP的設備。

如何配置NDK項目編譯ARMEABI代碼爲ARMv6VFP而不是ARVv5TE

當APK上傳時,我可以通過Google Play界面阻止舊的ARMv6沒有VFPARmv5設備。

+0

如何通過Google Play阻止不帶VFP和ARMv5的舊版ARMv6? (因處理器型號而一個接一個排除?) – Raykud

+0

我們沒有。如果你喜歡,你可以阻止每個設備,但是沒有這樣的設備。 HTC Hero還有什麼? 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指令的要求來編譯單臂模式(不是拇指)你的代碼。爲Android.mk中的每個目標指定LOCAL_ARM_MODE := arm即可實現此目的。

順便說一句,我認爲你不會滿足於armv6設備的性能。即使是最新的hi-end armv7處理器也比現代英特爾酷睿CPU慢大約10倍。

+1

你能提供一些有關Intel與ARM性能爭論的報告嗎? – auselen

+0

ARMv7的速度並不比Intel Core 2低10倍。ARM帶VFP的浮點運行速度比運行VFP的ARM低10+。 – Max