Il titolo si riferisce a un file di sistema che definisce la maggior parte delle caratteristiche di un dispositivo ANDROID. Grazie al file build.pro si può fare tranquillamente riconoscere al market di google un dispositivo per un altro o fingere di disporre di una risoluzione diversa da quella reale. Si possono 'tweakare' veramente molte cose.
Il problema è che non ho trovato una guida specifica per tutte le voci, quindi proverò a testare le varie voci e cercare di capire a cosa servono.
Build.pro è un file di testo e si trova nella cartella system di ogni dispositivo android. Può essere modificato tranquillamente con il blocco note su un PC e poi riversato nuovamente sul dispositivo. E' meglio non fare troppe modifiche in una volta per evitare di dover riflashare tutto perché si è bloccato il dispositivo.
Innanzitutto vediamo alcuni build.pro a confronto. Concentriamoci sulla prima parte del file al momento.
Questo è il build.pro di un LG-P500 Optimus One
Code: Select all
# begin build properties
# autogenerated by buildinfo.sh
ro.build.id=IMM76D
ro.build.display.id=ICS_DYNAMITE_V2.0ro.build.version.incremental=eng.mint.20120503.165310
ro.build.version.sdk=15
ro.build.version.codename=REL
ro.build.version.release=4.0.4
ro.build.date=Thu May 3 16:55:28 EEST 2012
ro.build.date.utc=1336053328
ro.build.type=user
ro.build.user=mint
ro.build.host=androidmeda
ro.build.tags=test-keys
ro.product.model=LG-P500
ro.product.brand=lge
ro.product.name=lge_p500
ro.product.device=p500
ro.product.board=p500
ro.product.cpu.abi=armeabi-v6l
ro.product.cpu.abi2=armeabi
ro.product.manufacturer=LGE
ro.product.locale.language=en
ro.product.locale.region=US
ro.wifi.channels=
ro.board.platform=msm7x27
# ro.build.product is obsolete; use ro.product.device
ro.build.product=p500
# Do not try to parse ro.build.description or .fingerprint
ro.build.description=thunderg-user 2.3.3 GRI40 LG-P500-V20g.19C11F164C release-keys
ro.build.fingerprint=lge/thunderg/thunderg:2.3.3/GRI40/LG-P500-V20g.19C11F164C:user/release-keys
ro.build.characteristics=default
ro.cm.device=p500
# end build properties
#
# system.prop for p500
#
Code: Select all
# begin build properties
# autogenerated by buildinfo.sh
ro.build.id=Skelrom v1
ro.build.display.id=Skelrom v1
ro.build.version.incremental=esp.skelton.20120418.192622
ro.build.version.sdk=10
ro.build.version.codename=REL
ro.build.version.release=2.3.4
ro.build.date=Wed Feb 29 17:39:04 HKT 2012
ro.build.date.utc=1326112012
ro.build.type=user
ro.build.user=skelROM
ro.build.host=Android
ro.build.tags=test-keys
ro.product.model=R800i
ro.product.brand=SEMC
ro.product.name=Play
ro.product.device=zeus
ro.product.board=zeus
ro.product.cpu.abi=armeabi-v7a
ro.product.cpu.abi2=armeabi
ro.product.manufacturer=Sony Ericsson
ro.product.locale.language=es
ro.product.locale.region=ES
ro.wifi.channels=14
ro.board.platform=
# ro.build.product is obsolete; use ro.product.device
ro.build.product=zeus
# Do not try to parse ro.build.description or .fingerprint
ro.build.description=esp.skelton.20120418.192622
ro.build.fingerprint=XPERIAMOD/f02ref/f02ref:2.3.4/esp.skelton.20120418.192622/test-keys
# end build properties
Code: Select all
# begin build properties
# autogenerated by buildinfo.sh
ro.build.id=MID_PSP.wifi.20120109-Unoffice
ro.build.display.id=MID_PSP.wifi.20120109-Unoffice
ro.build.version.incremental=eng.samty.20120109.202612
ro.build.version.sdk=10
ro.build.version.codename=REL
ro.build.version.release=2.3.4
ro.build.date=Mon Jan 9 20:26:52 HKT 2012
ro.build.date.utc=1326112012
ro.build.type=user
ro.build.user=samty
ro.build.host=samty
ro.build.tags=test-keys
ro.product.model=R800i
ro.product.brand=SEMC
ro.product.name=Play
ro.product.device=zeus
ro.product.board=zeus
ro.product.cpu.abi=armeabi-v7a
ro.product.cpu.abi2=armeabi
ro.product.manufacturer=Sony Ericsson
ro.product.locale.language=it
ro.product.locale.region=IT
ro.wifi.channels=14
ro.board.platform=
# ro.build.product is obsolete; use ro.product.device
ro.build.product=zeus
# Do not try to parse ro.build.description or .fingerprint
ro.build.description=f02ref-user 2.3.4 MID_PSP.wifi.20120109 eng.samty.20120109.202612 test-keys
ro.build.fingerprint=GAME_SYSTEM/f02ref/f02ref:2.3.4/MID_PSP.wifi.20120109/eng.samty.20120109.202612:user/test-keys
# end build properties
Tutte le proprietà sono di tipo ro o rw, cioè read only o read write. Il sistema può modificare quelle di tipo read write (per esempio lo stato del wifi), ma non quelle di tipo ro (per esempio il nome della ROM).
Le prime righe contengono informazioni del tutto personalizzabili
ro.build.id contiene il nome interno della ROM
ro.build.display.id contiene il nome che viene mostrato vedendo le proprietà del sistema
ro.build.version.incremental è il numero di versione
ro.build.version.sdk il numero della sdk con cui è stata sviluppata la ROM (credo che in realtà sia importante solo se testate la rom sull'emulatore android)
ro.build.version.codename il nome in codice? (non so quando venga visualizzato)
ro.build.version.release il numero di versione della releaase
ro.build.date la data di rilascio (va scritta in inglese con il giorno mese numerogiorno ora:minuti:secondi fascia fusio orario anno)
ro.build.date.utc stessa cosa scritta in coordinated universal time (che è un po' complesso... per qualche informazione vedi http://www.dxing.com/utcgmt.htm#utc altrimenti puoi lasciare anche come è)
ro.build.type io ho visto sempre user, sospetto che ci possano essere altri tipi di build
ro.build.user il nome dell'autore
ro.build.host il sistema operativo su cui funziona (Android nel nostro caso)
E veniamo ora alla parte importante del build.pro, la parte che definisce come si chiamerà il nostro dispositivo e come sarà riconosciuto dal sistema (e dal market).
ro.build.tags la funzione di questa linea mi è un po' oscura. E' sempre impostata come test-keys
ro.product.model quì mettiamo il modello del dispositivo. Per fare riconoscere al market il nostro dispositivo come un Sony Ericsson Experia (che dispone dei tastini per giocare e quindi è quello che dà la migliore compatibilità per esempio con una JXD S601) inseriremo le informazioni copiate dal build.pro del Sony (importante modificare questi campi e anche description e fingerprint). Alcuni giochi, per esempio i vari Dungeon Defenders, non sembrano supportati come si deve dall'Experia e non si lanciano. In quel caso basta sostituire le caratteristiche con quelle dell'LG indicato nel primo build.pro e tutto funziona!
ro.product.brand
ro.product.name
ro.product.device
ro.product.board
Inutile testare questi quattro campi, copiateli da un build.pro di qualcosa che volete simulare e inserite i nomi corretti.
ro.product.cpu.abi quì si sceglie la tipologia di processore, non utilizzare build.pro di modelli con processori a tecnologia diversa, niente mips al posto di arm o viceversa
ro.product.cpu.abi2 stessa cosa
ro.product.manufacturer quì va inserito il nome della ditta che ha fatto il dispositivo.
ro.product.locale.language la siglia del linguaggio installato di default. Consiglio è prima verificare cosa è supportato dalla ROM. Non importa se poi nella ROM non è possibile cambiare il linguaggio al proprio. Questa riga serve a specificare al market in che linguaggio scaricare un applicativo (almeno credo, non ho conferme in merito).
ro.product.locale.region stessa cosa di cui sopra?
ro.wifi.channels il numero di canali wifi attivi (per l'europa è 14, in altre nazioni può essere meno, lasciare 14 permette uno spettro maggiore di possibilità di connessione
ro.build.product di nuovo il modello per prodotto da copiare da un altro build.pro
# Do not try to parse ro.build.description or .fingerprint
ro.build.description la descrizione della build
ro.build.fingerprint e il fingerprint sono quelle che vengono lette direttamente dal google Market