1

私はアンドロイドがCPUのサポートARMv5TEを提供していることを知っています。ARMv7aarmeabiおよびareabi-v7aフォルダ)現在、ほとんどのAndroid PhoneのCPUには、ARMv6なしVFPARMv6あり、VFPありARMv7がありVFPます。

私のアプリには物理シミュレーションがあり、ハードウェア浮動小数点のみを使用してデバイスをターゲットにしたいと考えています。(VFP)。なしのデバイスはサポートしたくありませんVFP

代わりにARMEABIコードをARMv6コンパイルするようにNDKプロジェクトを構成するにはどうすればよいですか?VFPARVv5TE

APKがアップロードされたときに、GooglePlayインターフェースを介してデバイスARMv6なしVFPで古いものをブロックできます。ARmv5

4

1 に答える 1

3

NDKは、デフォルトのビルドオプションを変更する便利な方法を実際には提供していません。フラグを追加することはできますが、標準オプションを上書きすることはできません。

LOCAL_CFLAGSNDKはオプションをユーザーの後に置き、フラグを上書きするため、デフォルトおよび他のほとんどのオプションは機能しません。私が知っている唯一の解決策は、でグローバルを定義することAPP_CFLAGSですApplication.mk。したがって、次の結果、VFPv2を持つarmv6用に最適化されたバイナリが生成されます。

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

また、私が正しく覚えていれば、armv6ハードウェアのvfp命令では、コードをarmモード(thumbではない)でコンパイルする必要があります。これを達成するLOCAL_ARM_MODE := armために、のすべてのターゲットに指定します。Android.mk

ちなみに、armv6デバイスの性能には満足できないと思います。最新のハイエンドarmv7プロセッサでさえ、最新のIntelCoreCPUよりも約10倍低速です。

于 2012-12-09T22:27:38.987 に答える