Qualcuno può dare una sintesi su ciò utilizzando l'NDK fa per la mia applicazione in termini di quali dispositivi possono utilizzare l'applicazione
Solo i dispositivi in esecuzione su una CPU per il quale si dispone di un NDK .so
saranno in grado di eseguire la tua app.
e quali sono le implicazioni per il mantenimento della mia app?
Il test su più architetture CPU può richiedere hardware per ogni architettura. Dico "può" perché ...
Cosa succede quando vengono visualizzate nuove architetture per Android?
... non ne abbiamo idea. Oltre all'aggiunta del supporto ARM7, NDK non ha cambiato i suoi obiettivi.
In questo momento, ci sono due principali piattaforme non-ARM per Android che mi viene in mente:
- Intel Atom, di essere utilizzati dai dispositivi di Google TV. Al momento della stesura di questo, NDK non supporta questo. Tuttavia, non puoi ancora spedire app per Google TV. Pertanto, è possibile che NDK venga aggiornato non appena arriviamo a scrivere app di Google TV.
- MIPS. Al momento della stesura di questo, NDK non supporta questo. Non ho idea di quali potrebbero essere i piani in quest'area.
È concepibile che gli emulatori sembrino emulare tali CPU. Dopo tutto, l'emulatore Android esistente emula ARM5. Tuttavia, a meno che e fino a quando ciò non accada, avrai bisogno di hardware di test per ogni architettura che intendi supportare.
Devo aggiornare la mia app ogni volta che viene visualizzata una nuova architettura?
Solo se si desidera supportare la nuova architettura. Finché non ci sarà una massa critica di dispositivi che possono accedere alla tua app, qualsiasi nuova architettura non sarà molto importante. La "massa critica" potrebbe provenire dalle vendite generali di dispositivi, oppure potrebbe essere perché si ottiene un accordo OEM per far sì che l'app si impacchetta sul dispositivo di qualcuno.
Il codice è semplice e funzionerà su tutti gli arch.
Guarda la tua endianità.
Sì, è necessario un eseguibile per ogni architettura.Probabilmente puoi semplicemente includerli tutti e caricare quelli che ti servono, ma non ho mai usato l'NDK. Cosa stai facendo esattamente per i lunghi? Sei sicuro che questo è un collo di bottiglia nel tuo codice? Lo hai implementato e profilato? – Falmarri
La lunga operazione comporta il mascheramento dei primi 8 bit, l'esecuzione di alcune aggiunte e moltiplicazioni, il ripristino dei bit e il completamento dei bit rimanenti. È terribilmente lento in Java (e..g 1s da eseguire quando voglio circa 0,1 s) e sembra il candidato ideale per NDK. Il codice è semplice e funzionerà su tutti gli arch. – RichardNewton