Les Ports de la STL sont officiellement disponible dans l'Android NDK à partir de la version r5sur.
Il peut être utilisé soit comme un statique ou la bibliothèque partagée. Les implémentations suivantes sont disponibles prêts à l'emploi avec le NDK :
-
STLport, basée sur la v5.2.0 :
- statique
stlport_static
: utiliser si vous avez seulement une bibliothèque dynamique dans votre projet.
- dynamiques
stlport_shared
: à utiliser si vous avez plus d'une bibliothèque dynamique dans votre projet.
- GNU libstdc++
system
(bibliothèque statique)
Le recommandé, facile à utiliser au moment de la construction est par définition APP_STL dans l'Application.mk, comme ceci :
APP_STL := stlport_static
Et si vous souhaitez reconstruire (ce n'est pas nécessaire), de définir STLPORT_FORCE_REBUILD dans votre Application.mk :
STLPORT_FORCE_REBUILD := true
Le toolkit unit test framework pour STLport est également disponible.
Les limitations actuelles pour STLport :
- Les Exceptions C++ non pris en charge
- RTTI pas pris en charge
- "Probable bugs" pour appuyer
wchar_t
et locales
Différents Liens :
La Documentation est disponible dans le NDK paquets dans les endroits suivants (peut être plus) :
- docsCPLUSPLUS-SUPPORT.html
- sources/cxx-stl/stlport
- sources/cxx-stl/gnu-libstdc++
Télécharger NDK + docs ici ; fichier bugs ici
Ci-dessous est un extrait de l'docs/CPLUSPLUS-SUPPORT.html (à partir de NDK docs, r5)
III. La sélection de la Norme C++ de la Bibliothèque de la mise en Œuvre:
Par défaut, les en-têtes et les bibliothèques pour les minimes C++ runtime système
bibliothèque (/system/lib/libstdc++.donc) sont utilisés lors de la construction de sources C++.
Vous pouvez cependant choisir une mise en œuvre différente en définissant la variable
APP_STL à quelque chose d'autre dans votre Application.mk, par exemple:
APP_STL := stlport_static
Pour sélectionner la statique STLport de mise en œuvre fournis avec le NDK.
Valeur APP_STL valeurs sont les suivantes:
système -> Utiliser la valeur par défaut minime C++ runtime library.
stlport_static -> Utiliser STLport construit comme une bibliothèque statique.
stlport_shared -> Utiliser STLport construit comme une bibliothèque partagée.
AVERTISSEMENT: MISE EN GARDE IMPORTANTE
AT THE MOMENT, OUR STLPORT IMPLEMENTATION DOES NOT SUPPORT EXCEPTIONS
AND RTTI. PLEASE BE SURE TO NOT USE -fexceptions OR -frtti IN ALL
MODULES THAT USE IT.
AVERTISSEMENT: FIN DE LA MISE EN GARDE IMPORTANTE
"stlport_shared" est préférable si vous avez plusieurs bibliothèques partagées dans votre
projet d'utiliser le C++ STL, car il évite la duplication des fonctions
et le plus important de variables globales (par exemple std::cout) dans chacun de
eux, ce qui peut avoir des résultats surprenants.
D'autre part, vous devez le charger explicitement lors du démarrage de votre
d'application, comme dans l'exemple suivant:
static {
System.loadLibrary("stlport_shared");
System.loadLibrary("foo");
System.loadLibrary("bar");
}
Où "libtruc.si" et "libbar.donc" dépendent "libstlport_shared.donc".
Notez que la bibliothèque partagée du nom si "libstlport_shared.donc," afin d'éviter
nom des conflits avec certains Android système d'images qui comprennent un
au niveau du système libstlport.(ce qui arrive à ne pas être ABI stable et
ne peut être utilisé à partir de NDK généré par le code machine).
"stlport_static" est préférable si vous n'avez qu'une bibliothèque partagée dans votre
projet: uniquement de la STL de variables et de fonctions dont vous avez réellement besoin sera
lié à votre code machine, réduire la taille du code, et vous n'aurez pas besoin
pour charger la dynamique stlport_shared au démarrage.
IV. STLport-questions spécifiques:
Cette NDK prêtes à l'emploi qui fournit les bibliothèques statiques et partagées pour STLport,
mais vous pouvez le forcer à être reconstruit à partir de sources en définissant les éléments suivants
dans votre environnement ou de votre Application.mk avant de construire:
STLPORT_FORCE_REBUILD := true
STLport est distribué sous une licence de type BSD licence open-source. Voir
sources/cxx-stl/stlport/README pour plus de détails au sujet de la bibliothèque.
V. Projets Pour L'Avenir:
- Faire STLport compatible avec les exceptions C++ et RTTI
- Plein GNU libstdc++ support
- uSTL en charge?