Android NDK- und LOCAL_ARM_MODE-Flag

8

In meinem aktuellen Setup-Build für Builds von Android-Native-Code ist APP_ABI für armeabi-v7a in Application.mk definiert. Für einige der Bibliotheken, die ich baue, sehe ich, dass LOCAL_ARM_MODE als Arm in Android.mk definiert ist.

Ich muss dieses Setup erweitern, um auch für x86 zu bauen. Von einem anderen Beitrag scheint es mit "APP_ABI = alle" eine bessere Lösung zu sein. Ich frage mich nur, ob LOCAL_ARM_MODE auch geändert werden muss. Was macht diese Flagge überhaupt?

    
Peter 14.02.2014, 22:03
quelle

2 Antworten

6

Der LOCAL_ARM_MODE kann verwendet werden, um die Plattform zu definieren, auf die Ihre Anwendung ausgerichtet ist. Um Ihr Android.mk-Setup auch für x86 einzurichten, fügen Sie einfach die erforderlichen Informationen in Ihre Android.mk-Datei ein - z. B .:

%Vor%

Weitere Informationen über verschiedene Optionen zum Definieren Ihres Anwendungsziels finden Sie in / docs / Android-mk .

Quelle: Kompilierungscode für ARM und X86

    
Avanz 01.03.2014, 22:58
quelle
2

Obwohl dies ein alter Beitrag ist, möchte ich nur darauf hinweisen, dass die angenommene Antwort nicht korrekt ist.

LOCAL_ARM_MODE kann entweder auf "Arm" oder "Daumen" eingestellt werden und ist standardmäßig auf "Daumen" eingestellt. "Daumen" verwendet 16-Bit-Anweisungen, während "Arm" 32-Bit-Anweisungen verwendet. Die 16-Bit-Anweisungen sind zwar kleiner, können aber bei einigen leistungskritischen Anwendungen zu langsam sein. Aus diesem Grund wurde in einigen Bibliotheken das Flag "arm" gesetzt, um den Build mit 32-Bit-Anweisungen sicherzustellen. Natürlich ist dieses Flag nur dann sinnvoll, wenn Sie für die Armarchitekturen bauen.

Andererseits ist APP_ABI das richtige Flag, mit dem Sie umschalten können, wenn Sie für verschiedene Architekturen wie armeabi- * oder x86 und viele mehr erstellen möchten.

Weitere Informationen finden Sie in der Dokumentation zu Android.mk

    
projectcs2103t 14.07.2017 10:05
quelle

Tags und Links