Android non è completamente POSIX compatibile. Innanzitutto quello che posso notare è la libreria c predefinita. Come forse saprai, si chiama glibc. Ma Android ha la sua libreria c - bionica. Ecco alcune note.
Alcune funzioni all'interno intestazioni POSIX e il sistema di chiamata di Bionic sono stub o involucri per il comportamento Android-specifica, causando un comportamento intenzionale in alcuni casi.
Android utilizza il kernel basato su Linux, quindi si può dire che è POSIX compatibile. Ma in generale Android non è conforme alle specifiche Unix come POSIX. Inoltre si può leggere qualcosa di simile
Bionic non include C++ gestione delle eccezioni, forse come Google non non utilizzare le eccezioni C++ e eccezioni Java sono disponibili una volta che la macchina virtuale Java viene avviato
Bionic fa non includere la standard Template Library, e gli sviluppatori devono includere manualmente se ne hanno bisogno
C'è costruito su misura grande NDK - CrystaX NDK
Le caratteristiche principali del CrystaX NDK:
caratteri estesi. NDK di Google non supporta caratteri wide in modo corretto in C o C++. Con CrystaX NDK, è possibile ottenere il supporto completo dei caratteri ampio. È possibile effettuare facilmente il porting del codice esistente che utilizza ampi caratteri/stringhe/stream o scrivere un nuovo codice.
I toolchain più recenti CrystaX NDK include le più recenti versioni di compilatori GCC e Clang oltre a stalle. Ciò consente agli sviluppatori di di utilizzare nuove funzionalità di lingua (come le nuove funzionalità di C++ 11 ). Tutti i compilatori sono costruiti con ottimizzazioni di livello alto e basso che consentono la generazione del codice più efficiente per l'hardware di destinazione .
C++ 11 Dal momento che il sostegno CrystaX NDK include le versioni più recenti di GCC e Clang, supporta molte nuove funzionalità C++ 11 quotate in C++ 0x/C++ 11 Supporto nella GCC e C++ Supporto 98 e C++ 11 in Clang. Nell'aggiunta , l'NDK di CrystaX offre classi C++ 11 pienamente funzionanti std :: thread, std :: mutex, std :: chrono ecc. Queste classi non sono disponibili nel NDK di Google a causa della mancanza di funzionalità in Android Bionic libc . Abbiamo esaminato questo problema e risolto il problema, quindi nel CrystaX NDK puoi semplicemente usarli e dimenticare ifdefs.
Supporto Objective-C Le uniche lingue supportate da Google NDK sono C e C++. CrystaX NDK aggiunge il supporto di Objective-C oltre a C e C++. Solo il linguaggio principale è supportato fin d'ora; funziona su Le librerie simili al cacao sono in corso. Per iniziare a utilizzare Objective-C nel progetto , è sufficiente aggiungere i file di origine con l'estensione .m (Objective-C) o .mm (Objective-C++) e specificarli in LOCAL_SRC_FILES in Android.mk.
Per continuare ... Se non si vede qualche grande funzionalità qui, non esitate a contattarci e chiedere per esso. Puoi anche utilizzare il nostro tracker bug/bug per segnalare bug o richieste di funzionalità. E, naturalmente, i contributi sono i benvenuti!
È possibile trovare ulteriori informazioni su Official CrystaX NDK site
Anche Linux non è completamente compatibile POSIX :) –
@ShmilTheCat Ho pensato che non è certificato perché costa? – sashoalm
IMO è più che problemi di costo, vedere https://personal.opengroup.org/~ajosey/tr28-07-2003.txt –