2013-04-22 10 views
6

Ho già modificato con successo alcune applicazioni (Launcher, SMS, Gallery, E-mail, calendario) di AOSP ma mi trovo ad affrontare problemi per modificare le applicazioni Phone,Contacts.Modifica dell'interfaccia utente di singole applicazioni (telefono, contatti) in ICS AOSP

Ho passato con le seguenti operazioni per modificare Launcher,SMS,Gallery,Email,Calendar applicazioni:

  1. Ho scaricato AOSP ICS e importati singola applicazione in Eclipse.
  2. Ho cambiato il pacchetto names.i.e. com.android.launcher2 a com.test.launcher2
  3. Dopo Step 1 e Step 2, ho riscontrato errori nelle singole applicazioni a causa delle classi di framework mancanti. Li ho risolti importando le classi mancanti nella mia applicazione.
  4. Ho modificato l'interfaccia utente della mia applicazione.
  5. Ho eseguito l'applicazione su emulator.and sta funzionando bene.

Ora, io sto affrontando problema durante la modifica contatti, le applicazioni del telefono all'interno Step 3:

-> Quando importo classi del framework mancanti di java.* o javax.* nella mia applicazione, la console mi informa dall'errore come Ill-advised or mistaken usage of a core class (java.* or javax.*) when not building a core library.

-> Per risolvere i problemi, ho provato ad includere alcune librerie jar specificate nel file Android.mk e sono state generate durante la creazione di AOSP (ICS) scaricato. Ma non ha risolto il problema.

-> Immagino che il file jar com.android.phone.common possa risolvere il problema ma non sono in grado di risolverlo poiché sospetto che le classi siano mancanti in quel file che ho ottenuto dalla build. Così sto cercando di trovarlo su internet da pochi giorni, ma non sono riuscito a trovarlo.so se qualcuno ha la versione completa (funzionante) di questo file jar, si prega di condividerlo.

NOTA: La mia macchina di sviluppo ha Windows 7. e il mio obiettivo a breve termine è modificare l'interfaccia utente del contatto, le applicazioni del telefono ed eseguirlo.

EDIT: Screenshots di Buildpath enter image description here enter image description here

EDIT Dopo aver messo TimSort.java nel pacchetto di default,

enter image description here

Ho descritto questo passo a github demo anche da dicendo "quando importare TimSort.java, prova ad accedere ad alcuni metodi nascosti della classe Arrays.java, quindi ho bisogno per importare quella classe ".questo errore è la ragione per cui ho creato il pacchetto java.util per includere la classe Arrays.java.altrimenti sono felice di importare solo TimSort.java.by il modo in cui, nello screenshot, possiamo vedere lo comment che dice qualcosa specialmente sui prossimi 2 metodi

+1

Puoi descrivere il tuo 3 ° gradino in dettaglio in modo da poter riprodurre ciò che si 'hai fatto? Soprattutto come hai aggiunto quelle classi di framework mancanti e quali sono? – StarPinkER

+0

Ho trovato le classi mancanti dal sorgente AOSP cercandole con il nome della classe mancante. Dopo il passaggio 2 nell'applicazione 'Calendar' mi mancava la classe' AsYouTypeFormatter.java', quindi l'ho trovata da AOSP scaricato e inclusa nella mia applicazione all'interno del nome del pacchetto che è stato menzionato in quella particolare classe che ho trovato, e in questo caso il nome del pacchetto era 'com.android.i18n.phonenumbers'.so ho creato tale pacchetto nella mia applicazione e metto quella classe al suo interno .Errore risolto. –

+0

@JermaineXu: Ciao, puoi darmi qualche suggerimento o ipotesi per risolvere il mio problema? –

risposta

5

Come ho detto nell'ultimo commento, il problema principale è includere java. * e javax. *, che già esiste in android.jar. Quindi il costruttore pensava che tu stessi costruendo la libreria principale mentre non lo facevi.

Ho semplicemente eliminato il pacchetto java.util. * Nel progetto. E nessun errore. Android.jar ha già incluso molti pacchetti tra cui java.xxx e javax.xxx. Se c'è davvero una libreria java mancante che devi usare, prova il refactoring.

Eclipse Snapshot

Ho controllato il source Android, il dx controllerà il nome della sorgente prima chiamando:

private static void checkClassName(String name) { 
    boolean bogus = false; 

    if (name.startsWith("java/")) { 
     bogus = true; 
    } else if (name.startsWith("javax/")) { 
     int slashAt = name.indexOf('/', 6); 
     if (slashAt == -1) { 
      // Top-level javax classes are verboten. 
      bogus = true; 
     } else { 
      String pkg = name.substring(6, slashAt); 
      bogus = (Arrays.binarySearch(JAVAX_CORE, pkg) >= 0); 
     } 
    } 

    if (! bogus) { 
     return; 
    } 

    /* 
    * The user is probably trying to include an entire desktop 
    * core library in a misguided attempt to get their application 
    * working. Try to help them understand what's happening. 
    */ 

    DxConsole.err.println("\ntrouble processing \"" + name + "\":\n\n" + 
      IN_RE_CORE_CLASSES); 
    errors++; 
    throw new StopProcessing(); 
} 

Il IN_RE_CORE_CLASSES è la stringa di errore che si vede nella console. Questo spiega perché mostra questo errore.

UPDATE:

Schermata dopo l'aggiunta TimSort.java.

Screenshot after adding TimSort.java

+0

Nel progetto demo ho già descritto che ho bisogno di usare molte classi mancanti, ad es. 'TimSort.java' che non sono incluse in android.jar .e provando a usarlo creando un pacchetto, sto affrontando problemi dovuti a quelli esistenti classi cioè 'Arrays.java'. Insort, conosco il problema, sto cercando una soluzione. Rimuovere i pacchetti java. * Non è una soluzione perché contiene anche classi mancanti. –

+0

#PS: All'interno di 'MainActivity.java' del progetto dimostrativo, se si tenta di utilizzare i metodi di TimSort, mostrerà errore. Perché' TimSort' non è incluso in android.jar –

+0

Sì, TimSort non è incluso in Android .jar, ma Arrays.java è. Per utilizzare TimSort, non è necessario creare un pacchetto denominato "java. *" O "javax. *", Basta aggiungere al pacchetto esistente. Complessivamente, è necessario evitare di creare qualsiasi pacchetto denominato java. * O javax. *. Metti tutto ciò che vuoi usare in altri pacchetti e modifica la clausola "pacchetto java ..." nel file corrispondente. @MehulJoisar – StarPinkER