giovedì, dicembre 13, 2007

Via libera - (symbian dll capabilities)

La situazione è questa:
una dll di terze parti
un certificato di sviluppo con le capabilities di default
un'applicazione da sviluppare.

Cosa diceva il security platform:
un'applicazione può caricare una dll solo se tale dll ha ha le stesse capabilities o superiori dell'applicazione che la chiama.

Perfetto, allora che faccio, chiamo la società che rilascia la dll e gli dico di compilare con tutte le capabilities cosi poi vado tranquillo per la mia strada sapendo che potrò inserire tutto quello che voglio senza essere vincolato.

Tuttto fantastico, a parte il fatto che quando metto l'applicazione sul dispositivo in fase di installazione mi esce il seguente errore:
"Required application access not granted"
e successivo fallimento dell'applicazione.

In tutto questo la dll di terze parti veniva installata direttamente dalla mia applicazione con l'aggiunta della seguente riga nel .pkg
"c:\path\dll\libraries.dll" -"!=\sys\bin\libraries.dll"


Una volta appurato che effettivamente le librerie dll si installano in quel modo, penso, vuoi vedere che mi serve la capabilities "allfiles" ... Ecco, questa è una cazzata bella e buona.
Il processo che si occupa di copiare la libreria nel path sys\bin non è la mia applicazione, ma bensi, il processo installer ... e quello le capabilities ce le ha tutte.

Facciamola breve.
La dichiarazione del security platform che ho riportato sopra vale solo se la dll è già installata nel sistema. In caso contrario, come nel mio, stavo cercando di installare un'applicazione che era stata certificata con le capabilities standard ma che all'interno conteneva una dll che di capabilities ne aveva molte di piu.

Una volta tolte le capabilities di troppo nella dll ... non solo l'installazione è andata a buon fine ... ma anche il programma ha ripreso a funzionare in maniera ottimale.

Per togliere le capabilities dall dll ho fatto ricompilare ... ma successivamente ho scoperto che non era necessario.
esiste un programmino che si esegue da shell (anzi dos ... insomma interfaccia a comandi )
che si chiama ELFTRAN.EXE.
Attraverso questo programma si possono modificare le capabilities all'interno di un programma .exe o anche .dll

link all'utilizzo di elftran.exe

giovedì, novembre 29, 2007

Fantastico Tutorial

Ci sono capitato per caso partendo dall nuova sezione della nokia (wiki.forum.nokia)
Ho cominciato a vedere l'applicazione di Andreas Jakl: utilizza l'n95 come radiocomando per una macchinetta telecomandata (fantastico).
... Insomma sono andato a vedere il suo sito e ho scoperto che fa l'assistente universitario ed insegna proprio la programmazione symbian.
Ovviamente sul sito ci sono tutte le slide delle varie lezioni ... ma la cosa piu bella è che sono fatte benissimo, sintetiche e molto dirette. Tutte composte da teoria ed esercitazione.

il sito è www.symbianresources.com

mercoledì, novembre 28, 2007

secutiry platform ... meglio conoscerlo

Dalla 3rd edition in poi il sistema operativo symbian si arricchisce del security platform.

Io ho letto e ho detto ... "per adesso non mi serve". ERRORE CLAMOROSO
Ho perso un sacco di tempo, non sapevo che gli errori che ricevevo erano dovuti proprio a questo layer di sicurezza.

Si tratta appunto di un layer tra il sistema operativo e l'applicazione sviluppata che si occupa di stabilire quali siano i permessi e le capacità della specifica applicazione installata. In particolare, si basa sul CAPABILITY MODEL.

Quando una applicazione viene installata gli vengono concesse alcune capabilities per svolgere particolari attività.
Le capabilities sono gestite dal kernel e non possono cambiare dopo che il sw è stato installato sul dispositivo
  • Definiscono limiti e permessi di un applicazione e allo stesso tempo
  • Esprimono il livello di fiducia dell'applicazione
Le capabilities di un processo vengono stabilite dal suo file .exe, non cambiano mai durante l'esecuzione ed il kernel ne mantiene la lista per ogni processo.

Una libreria puo essere caricata dinamicamente da un processo solo se ha un numero maggiore o uguale di capabilities del processo chiamante:
  • il livello di fiducia deve essere almeno dello stesso livello
  • le librerie sono eseguite dal processo in esecuzione quindi girano con le loro stesse capabilities
Le capabilities si stabiliscono direttamente dentro all'ide di programmazione attraverso un wizard apposito. Ci sono 4 diversi gruppi di capabilities che si occupano di stabilire diverse tipologie di permessi.

Le capabilities sono strettamente legate al discorso della firma delle applicazioni (sign dei file sis). A seconda della tipologia del certificato si possono ottenere piu o meno gruppi di capabilities

A questo link si puo trovare un lista di messaggi di errori, molti dei quali dovuti proprio al security platform, che si ricevono dal device/emultatore a run-time.

martedì, novembre 27, 2007

da dove si comincia?

In questi articoli cercherò di inserire esperienze personali che trattano problematiche e argomenti che difficilmente possono essere trovati in altri posti.

Quindi tutto quello che riguarda la messa a punto dell'environement di sviluppo vi propongo i siti dai quali sono partito

http://forum.nokia.com

bisogna essere iscritti per poter effettuare download sia delle applicazioni sia della documentazione.

Posso suggerire anche il forum di nokioteca. C'e una sezione dedicata alla programmazione del symbian . questo è il link diretto.

... non ci dimentichiamo di NEWLC ... ottimi articoli e tutorial

un blog ... perche ?

Bene, sto per cominciare la mia avventura nel mondo della telefonia mobile, più che altro nella programmazione di tali dispositivi.
In particolare mi concentrerò su dispositivi che montano sistemi operativi symbian.

Il motivo per il quale mi imbarco in questo mondo è dovuto allo sviluppo della mia tesi.
Il motivo per il quale sto scrivendo queste pagine è molteplice:
  1. Cercando documentazione, tutorial e altro non ho trovato molto. Non ho trovato molte esperienze dirette sul campo ... e soprattutto non ho trovato documentazione in italiano. Non è un problema studiare in inglese, ormai ci sono abituato, ma quando si va su i forum per capire le vere problematiche ... allora diventa una scocciatura.
  2. Studiando i vari pdf che mette a disposizione la nokia, ho cominciato a prendere appunti. Se li metto in rete sono sicuro che non li perdero
  3. Voglio tracciare tutte le varie problematiche che incontrerò, qualcuno ne trarrà sicuramente beneficio, io in primis, quando sarà il momento di andare a scrivere la tesi.
Ora che mi sono autogiustificato riguardo questa perdita di tempo, stabiliamo l'ambiente di lavoro.
Io sto sviluppando per:
  • l'sdk della nokia [3rd edition 9.1 me] con
  • ide vs2005 con
  • plug-in installato carbide.vs300
  • ed un nokia N80 per i test su campo
  • c++