Autore Topic: Programmare per macchine Android Intel o ARM  (Letto 354 volte)

Offline Alexofalco

  • Nuovo arrivato
  • *
  • Post: 14
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S Advance
  • Sistema operativo:
    2.3.6
Programmare per macchine Android Intel o ARM
« il: 26 Gennaio 2015, 10:18:57 CET »
0
Buongiorno a tutti.

Spero di non urtare nessuno con questa domanda in questa zona del forum ma non sapevo a chi chiedere.

Per continuare a sviluppare su android e tenermi aggiornato volevo comprarmi un nuovo smartphone, un Asus ZenPhone 5 LTE. Monta un processore Intel Atom Z2560. Questa caratteristica mi ha lasciato molto di stucco, entusiasmandomi nel futuro acquisto. Però poi pensandoci mi è venuto il dubbio che nel mio specifico caso sia una pessima scelta: programmare su android con un processore buono si (a mio avviso è migliore rispetto ad un equivalente snapdragon) ma ancora poco comune non potrebbe essere una scelta azzardata per problemi di compatibilità software e compilazioni? Come si gestiscono le varie differenze di processore? Snapdragon e simili hanno base ARM, intel è tecnologia x86...


Grazie in anticipo  :-)

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Programmare per macchine Android Intel o ARM
« Risposta #1 il: 26 Gennaio 2015, 11:45:11 CET »
0
Se sviluppi usando solo SDK (semplificando molto: programmando le app in Java), non ci sono differenze.

Con NDK (programmando in C/C++ nativo), potresti dover tenere conto della specifica CPU, ma quello che so deriva da lettura su forum e articoli.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline undead

  • Utente senior
  • ****
  • Post: 666
  • Respect: +113
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S6
  • Play Store ID:
    DrKappa
  • Sistema operativo:
    Windows 10 64-bit, Windows 8.1 64-bit
Re:Programmare per macchine Android Intel o ARM
« Risposta #2 il: 26 Gennaio 2015, 11:59:32 CET »
0
Però solitamente si sviluppa su un PC o su un MAC (a scanso di equivoci per PC intendo la macchina fisica, indipendentemente dal SO Windows/Linux). Questo vuol dire che in pratica per vedere qualcosa su emulatore devi comunque compilare anche per x86.

Semmai il problema sarebbe opposto a quel punto.. cioè sviluppando su architettura x86 e facendo il deploy su emu x86 o device x86 non avresti la controprova che funziona su arm, che è una fetta significativa del mercato Android.

La mia esperienza (tutte le mie app usano NDK e sono compilate ARM/x86/MIPS) è positiva, non ho mai notato problemi di compatibilità tra versioni diverse. Se compila funziona, stiamo parlando comunque di codice C/C++.

Le eccezioni a quanto ho detto sono due.
Se oltre a usare C utilizzy assembly in quel caso devi scriverti una versione per ogni CPU.
Se fai operazioni C/C++ a basso livello e non stai attento la compatibilità 32/64 bit potrebbe essere compromessa, fondamentalmente perché in C la grandezza di un int cambia a seconda dell'architettura. Se non tieni conto di questo lo stesso codice C non può funzionare su due architetture diverse. Ma questo è un problema relativo ai 32/64 bit, non a arm/x86.

Diciamo che a livello di sviluppo non ci dovrebbero essere grossi problemi, a livello di compatibilità non gireranno quelle applicazioni sviluppate con NDK ma non compilate con target x86.