Autore Topic: IllegalStateException con appcompat v7 e moduli (android-library)  (Letto 2211 volte)

Offline JD

  • Amministratore
  • Utente storico
  • *****
  • Post: 1600
  • Respect: +232
    • leinardi
    • Mostra profilo
  • Dispositivo Android:
    LG Nexus 5
  • Sistema operativo:
    L'ultima Ubuntu
0
Approfitto anch'io di questa nuova sezione per proporvi un problema che sto incontrando su Android Studio 0.3.1 e Gradle 1.8:
sto lavorando ad un progetto in cui ho necessità di avere un'applicazione principale, in questo esempio chiamata MyApp, che fa uso delle librerie appcompat v7 e support-v4.
L'applicazione, fintanto che si limita a queste due librerie, funziona correttamente e se ben ricordo l'unico accorgimento necessario per includerle è far ereditare il tema dell'app da Theme.AppCompat.

I problemi sorgono quando provo ad aggiungere un progetto libreria: se provo ad inserire un qualunque modulo android-library ottengo la seguente eccezione a runtime:

Codice: [Seleziona]
    10-28 12:22:36.761    1770-1770/? E/AndroidRuntime﹕ FATAL EXCEPTION: main
        java.lang.RuntimeException: Unable to start activity ComponentInfo{com.akhela.tekpea/com.akhela.tekpea.ui.OverviewActivity}: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.
                at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180)
                at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
                at android.app.ActivityThread.access$600(ActivityThread.java:141)
                at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
                at android.os.Handler.dispatchMessage(Handler.java:99)
                at android.os.Looper.loop(Looper.java:137)
                at android.app.ActivityThread.main(ActivityThread.java:5041)
                at java.lang.reflect.Method.invokeNative(Native Method)
                at java.lang.reflect.Method.invoke(Method.java:511)
                at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
                at dalvik.system.NativeStart.main(Native Method)
         Caused by: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.
                at android.support.v7.app.ActionBarActivityDelegate.onCreate(ActionBarActivityDelegate.java:102)
                at android.support.v7.app.ActionBarActivityDelegateICS.onCreate(ActionBarActivityDelegateICS.java:58)
                at android.support.v7.app.ActionBarActivity.onCreate(ActionBarActivity.java:98)
                at com.akhela.tekpea.ui.OverviewActivity.onCreate(OverviewActivity.java:39)
                at android.app.Activity.performCreate(Activity.java:5104)
                at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
                at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
                at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
                at android.app.ActivityThread.access$600(ActivityThread.java:141)
                at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
                at android.os.Handler.dispatchMessage(Handler.java:99)
                at android.os.Looper.loop(Looper.java:137)
                at android.app.ActivityThread.main(ActivityThread.java:5041)
                at java.lang.reflect.Method.invokeNative(Native Method)
                at java.lang.reflect.Method.invoke(Method.java:511)
                at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
                at dalvik.system.NativeStart.main(Native Method)

L'eccezione si presenta anche se il progetto libreria utilizza il tema Theme.AppCompat.

La mia necessità è di aggiungere a MyApp il progetto libreria ViewPagerIndicator, ma il problema si presenta anche con un progetto libreria completamente vuoto (niente classi Java o risorse XML ad eccezione del Manifest).

Questo è il manifest del progetto libreria di test che sto utilizzando (quello completamente vuoto):

MyLibrary AndroidManifest.xml

Codice (XML): [Seleziona]
    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
       package="com.viewpagerindicator"
       android:versionCode="1"
       android:versionName="1.0">
   
        <uses-sdk
           android:minSdkVersion="7"
           android:targetSdkVersion="18" />
        <application />
    </manifest>

L'applicazione va in eccezione anche se assegno Theme.AppCompat`` alla sezione Application del progetto MyLibrary:

Codice (XML): [Seleziona]
    <?xml version="1.0" encoding="utf-8"?>
    [...]
        <application android:theme="@style/Theme.AppCompat" />
    </manifest>

Di seguito i file di configurazione di gradle:

MyProject settings.gradle

Codice: [Seleziona]
    include ':MyApp', ':MyLibrary'
MyApp build.gradle

Codice: [Seleziona]
    buildscript {
        repositories {
            mavenCentral()
        }
        dependencies {
            classpath 'com.android.tools.build:gradle:0.6.+'
        }
    }
    apply plugin: 'android'
   
    repositories {
        mavenCentral()
    }
   
    android {
        compileSdkVersion 18
        buildToolsVersion "18.1.1"
   
        defaultConfig {
            minSdkVersion 7
            targetSdkVersion 18
        }
    }
   
    dependencies {
        compile 'com.android.support:appcompat-v7:+'
        compile 'com.android.support:support-v4:+'
        compile project(":MyLibrary")
    }

MyLibrary build.gradle

Codice: [Seleziona]
    buildscript {
        repositories {
            mavenCentral()
        }
        dependencies {
            classpath 'com.android.tools.build:gradle:0.6.+'
        }
    }
    apply plugin: 'android-library'
   
    repositories {
        mavenCentral()
    }
   
    android {
        compileSdkVersion 18
        buildToolsVersion "18.1.1"
   
        defaultConfig {
            minSdkVersion 7
            targetSdkVersion 18
        }
    }
   
    dependencies {
            compile 'com.android.support:appcompat-v7:+'
        compile 'com.android.support:support-v4:+'
    }

Altri si trovano in questa situazione o sono riusciti a includere moduli android-library all'interno di progetti che fanno uso della :appcompat-v7?
« Ultima modifica: 31 Ottobre 2013, 15:11:17 CET da JD »
È stata trovata una soluzione al tuo problema?
Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato ;).
E se hai aperto tu il thread marcalo come risolto cliccando !

Offline Nicola_D

  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:IllegalStateException con appcompat v7 e moduli (android-library)
« Risposta #1 il: 31 Ottobre 2013, 16:57:47 CET »
0
io ho appcompat, supportlibrary, cardslib e crouton e vanno "quasi" egregiamente.
Ogni tanto l'appcompat mi da problemi in fase di clean (chissà perchè), ma per il resto funziona tutto bene! se hai voglia girami il progetto (puliscilo da ciò che non posso vedere) che lo provo.

AS 0.3.1 e win7 64bit
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3487
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:IllegalStateException con appcompat v7 e moduli (android-library)
« Risposta #2 il: 31 Ottobre 2013, 18:23:05 CET »
+1
Molto probabilmente gradle fa un po' i capricci e non riesce a fare il corretto merge delle risorse.
Prova a dichiarare la dipendenza alla supportlib e appcompat solo nel build.gradle della libreria.

Offline JD

  • Amministratore
  • Utente storico
  • *****
  • Post: 1600
  • Respect: +232
    • leinardi
    • Mostra profilo
  • Dispositivo Android:
    LG Nexus 5
  • Sistema operativo:
    L'ultima Ubuntu
Re:IllegalStateException con appcompat v7 e moduli (android-library)
« Risposta #3 il: 31 Ottobre 2013, 18:26:08 CET »
0
Prova a dichiarare la dipendenza alla supportlib e appcompat solo nel build.gradle della libreria.

Sembra funzionare :D

Grazie mille


io ho appcompat, supportlibrary, cardslib e crouton e vanno "quasi" egregiamente.
Ogni tanto l'appcompat mi da problemi in fase di clean (chissà perchè), ma per il resto funziona tutto bene! se hai voglia girami il progetto (puliscilo da ciò che non posso vedere) che lo provo.

AS 0.3.1 e win7 64bit
Grazie per la disponibilità, per curiosità potresti postare il build.gradle di applicazione e moduli?
« Ultima modifica: 31 Ottobre 2013, 18:37:46 CET da JD »
È stata trovata una soluzione al tuo problema?
Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato ;).
E se hai aperto tu il thread marcalo come risolto cliccando !

Offline GabMarioPower

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 606
  • Respect: +152
    • Github
    • Google+
    • gabrielemariotti
    • GabMarioPower
    • Mostra profilo
  • Play Store ID:
    GAB+MARIO+DEV
  • Sistema operativo:
    Ubuntu 14.04 , Win 10
Re:IllegalStateException con appcompat v7 e moduli (android-library)
« Risposta #4 il: 31 Ottobre 2013, 18:39:31 CET »
0
Però il discorso non mi torna tanto....

Io ho una situazione simile ma non ho lo stesso tipo di problema.

app:
 - appcompat v7 e support-v4.
 - library

lib:
 
(per esempio questa https://github.com/gabrielemariotti/changeloglib).


Ad ogni modo, per situazioni veramente strane come questa ti consiglio la community g+ ufficiale di android per i tool di sviluppo: https://plus.google.com/u/0/communities/114791428968349268860.
In genere sono molto gentili e ti rispondono direttamente loro di google.
-
« Ultima modifica: 31 Ottobre 2013, 18:45:50 CET da GabMarioPower »

Offline JD

  • Amministratore
  • Utente storico
  • *****
  • Post: 1600
  • Respect: +232
    • leinardi
    • Mostra profilo
  • Dispositivo Android:
    LG Nexus 5
  • Sistema operativo:
    L'ultima Ubuntu
Re:IllegalStateException con appcompat v7 e moduli (android-library)
« Risposta #5 il: 31 Ottobre 2013, 18:44:49 CET »
0
I moduli sono tutti prelevati da Maven o ce n'è qualcuno incluso tramite compile project(":MyLibrary")?
È stata trovata una soluzione al tuo problema?
Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato ;).
E se hai aperto tu il thread marcalo come risolto cliccando !

Offline GabMarioPower

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 606
  • Respect: +152
    • Github
    • Google+
    • gabrielemariotti
    • GabMarioPower
    • Mostra profilo
  • Play Store ID:
    GAB+MARIO+DEV
  • Sistema operativo:
    Ubuntu 14.04 , Win 10
Re:IllegalStateException con appcompat v7 e moduli (android-library)
« Risposta #6 il: 31 Ottobre 2013, 18:46:43 CET »
0
I moduli sono tutti prelevati da Maven o ce n'è qualcuno incluso tramite compile project(":MyLibrary")?

Quello su github è da :MyLibrary.
Ma in locale ho anche la library presa da Maven

Offline JD

  • Amministratore
  • Utente storico
  • *****
  • Post: 1600
  • Respect: +232
    • leinardi
    • Mostra profilo
  • Dispositivo Android:
    LG Nexus 5
  • Sistema operativo:
    L'ultima Ubuntu
Re:IllegalStateException con appcompat v7 e moduli (android-library)
« Risposta #7 il: 31 Ottobre 2013, 18:54:55 CET »
0
Questo comportamento sembra strano anche a me, se vuoi posso inviarti un link dove scaricare l'archivio dell'intero progetto così da provare tu stesso.
È stata trovata una soluzione al tuo problema?
Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato ;).
E se hai aperto tu il thread marcalo come risolto cliccando !

Offline GabMarioPower

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 606
  • Respect: +152
    • Github
    • Google+
    • gabrielemariotti
    • GabMarioPower
    • Mostra profilo
  • Play Store ID:
    GAB+MARIO+DEV
  • Sistema operativo:
    Ubuntu 14.04 , Win 10
Re:IllegalStateException con appcompat v7 e moduli (android-library)
« Risposta #8 il: 01 Novembre 2013, 00:51:26 CET »
0
Se vuoi, posso verificarlo.
Tieni presente però che ora ho android studio 0.3.2 (...)

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3487
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:IllegalStateException con appcompat v7 e moduli (android-library)
« Risposta #9 il: 01 Novembre 2013, 07:17:38 CET »
0
Se vuoi, posso verificarlo.
Tieni presente però che ora ho android studio 0.3.2 (...)

Basta che dici a gradle di usare la versione del plugin che usa/stava usando JD :P
Non credo che il problema che lamenta si di AS ma di gradle proprio.

Inviato dal mio Galaxy Nexus utilizzando Tapatalk


Offline GabMarioPower

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 606
  • Respect: +152
    • Github
    • Google+
    • gabrielemariotti
    • GabMarioPower
    • Mostra profilo
  • Play Store ID:
    GAB+MARIO+DEV
  • Sistema operativo:
    Ubuntu 14.04 , Win 10
Re:IllegalStateException con appcompat v7 e moduli (android-library)
« Risposta #10 il: 01 Novembre 2013, 11:10:21 CET »
0
Basta che dici a gradle di usare la versione del plugin che usa/stava usando JD :P
Non credo che il problema che lamenta si di AS ma di gradle proprio.

Inviato dal mio Galaxy Nexus utilizzando Tapatalk

Si questo lo so, però essendo un errore strano non dirti da cosa dipende.

Offline JD

  • Amministratore
  • Utente storico
  • *****
  • Post: 1600
  • Respect: +232
    • leinardi
    • Mostra profilo
  • Dispositivo Android:
    LG Nexus 5
  • Sistema operativo:
    L'ultima Ubuntu
Re:IllegalStateException con appcompat v7 e moduli (android-library)
« Risposta #11 il: 01 Novembre 2013, 14:58:10 CET »
0
Sapete una cosa veramente strana? Se ora reinserisco le dipendenze nel build.gradle dell'app il tutto continua a funzionare, anche dopo aver ribuildato l'intero progetto e averlo reimportato su AS (e quando l'ho fatto ero ancora su AS 0.3.1).

Ricky se non hai già buttato via il progetto, giusto per curiosità, potresti provare anche tu a ripristinare le dependencies?
È stata trovata una soluzione al tuo problema?
Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato ;).
E se hai aperto tu il thread marcalo come risolto cliccando !

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3487
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:IllegalStateException con appcompat v7 e moduli (android-library)
« Risposta #12 il: 01 Novembre 2013, 16:54:11 CET »
0
Sapete una cosa veramente strana? Se ora reinserisco le dipendenze nel build.gradle dell'app il tutto continua a funzionare, anche dopo aver ribuildato l'intero progetto e averlo reimportato su AS (e quando l'ho fatto ero ancora su AS 0.3.1).

Ricky se non hai già buttato via il progetto, giusto per curiosità, potresti provare anche tu a ripristinare le dependencies?

Anche facendo un clean del progetto? Comunque lunedì provo.

Inviato dal mio Galaxy Nexus utilizzando Tapatalk