Autore Topic: Errore APP pubblicata  (Letto 673 volte)

Offline piterpaolo

  • Nuovo arrivato
  • *
  • Post: 39
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Sony Xperia V
  • Play Store ID:
    Piterpaolo
  • Sistema operativo:
    Windows 7
Errore APP pubblicata
« il: 30 Agosto 2014, 17:22:19 CEST »
0
Salve a tutti,
è da qualche mese che sviluppo app e ho già all'attivo 4 app pubblicate, lo so non sono molte però...
Ho cercato a lungo nel forum ma non sono riuscito a trovare la soluzione al mio problema, che tra l'altro è strano in quanto su alcuni dispositivi si presenta e su altri no (anche con la stessa versione di Android).
Bando alle chiacchiere la APP che ho pubblicato è stata creata in modo che risultasse compatibile dalla versione 2 alla 4.x (almeno spero) ne è prova le righe presenti nel file manifest.xml che vi riporto
<uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="18" />
Gli errori che mi sono stati segnalati (uno tra l'altro sul tl di mia figlia) sono i seguenti :
java.lang.RuntimeException: Unable to start activity ComponentInfo{it.ppp.followme/it.ppp.followme.FollowMe}: java.lang.NullPointerException
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2114)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2139)
at android.app.ActivityThread.access$700(ActivityThread.java:143)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1241)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4963)
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:1038)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:805)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at it.ppp.followme.FollowMe.onCreate(FollowMe.java:155)
at android.app.Activity.performCreate(Activity.java:5184)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1094)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2078)
... 11 more

Dove nella linea 155 del file FollowMe. java c'è:

if(isOnline()){
            map = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();   //LINEA 155
           //Imposta la posizione rilevata sulla mappa
           map.setMyLocationEnabled(true);
           
           //Personalizzo la visualizzazione della mappa
           map.setMapType(GoogleMap.MAP_TYPE_NORMAL);
           map.getUiSettings().setMyLocationButtonEnabled(true);
           map.getUiSettings().setRotateGesturesEnabled(true);
           map.getUiSettings().setCompassEnabled(true); //visualizzo la bussola
         }else{
             //Toast.makeText(this, "Connessione NON disponibile", Toast.LENGTH_LONG).show();
             AlertDialog.Builder builder=new AlertDialog.Builder(this);           
             builder.setTitle("Attenzione");
             builder.setMessage("Errore di rete");
             builder.setCancelable(false); //Disabilito il tasto back del telefono in modo che  l'utente deva premere per forza OK; true se lo voglio abilitare
            
             builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
                  public void onClick(DialogInterface dialog, int id) {
                    //tv.setText("Ho cliccato il tasto SI");
                  }
                });
             AlertDialog alert=builder.create();
             alert.show();
         }
 Questo messaggio mi arriva da un tl con Android 4.1

L'altro messaggio, ricevuto da un sistema con versione Android 2.3 è invece

java.lang.RuntimeException: Unable to start activity ComponentInfo{it.ppp.followme/it.ppp.followme.FollowMe}: android.view.InflateException: Binary XML file line #9: Error inflating class fragment
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1651)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667)
at android.app.ActivityThread.access$1500(ActivityThread.java:117)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:130)
at android.app.ActivityThread.main(ActivityThread.java:3687)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625)
at dalvik.system.NativeStart.main(Native Method)
Caused by: android.view.InflateException: Binary XML file line #9: Error inflating class fragment
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:581)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:623)
at android.view.LayoutInflater.inflate(LayoutInflater.java:408)
at android.view.LayoutInflater.inflate(LayoutInflater.java:320)
at android.view.LayoutInflater.inflate(LayoutInflater.java:276)
at android.support.v7.app.ActionBarActivityDelegateBase.setContentView(ActionBarActivityDelegateBase.java:128)
at android.support.v7.app.ActionBarActivity.setContentView(ActionBarActivity.java:77)
at it.ppp.followme.FollowMe.onCreate(FollowMe.java:143)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615)
... 11 more
Caused by: java.lang.ClassNotFoundException: android.view.fragment in loader dalvik.system.PathClassLoader[/data/app/it.ppp.followme-1.apk]
at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:240)
at java.lang.ClassLoader.loadClass(ClassLoader.java:551)
at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
at android.view.LayoutInflater.createView(LayoutInflater.java:471)
at android.view.LayoutInflater.onCreateView(LayoutInflater.java:549)
at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:66)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:568)
... 20 more

Nella linea 143 del file FollowMe.java ho
protected void onCreate(Bundle savedInstanceState) {  //LINEA 143
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_follow_me);
      
      //Personalizzazione intestazione ActionBar
        ActionBar actionBar = getActionBar(); 
        actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_HOME
                | ActionBar.DISPLAY_SHOW_TITLE | ActionBar.DISPLAY_SHOW_CUSTOM);
        actionBar.setTitle("Follow Me ...");

Da cosa può dipendere la cosa? Non riesco proprio a capire.

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:Errore APP pubblicata
« Risposta #1 il: 31 Agosto 2014, 19:06:20 CEST »
+1
Ciao, sono al telefono quindi vedo il codice male ma penso che
1 il tablet di tua figlia non abbia i playservices installati perché non riesce a prendere il mapfragment
2 il disp 2.3 da quell'errore perché non ha i fragment,devi usare la support library

Inviato dal mio Nexus 4 utilizzando Tapatalk

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 piterpaolo

  • Nuovo arrivato
  • *
  • Post: 39
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Sony Xperia V
  • Play Store ID:
    Piterpaolo
  • Sistema operativo:
    Windows 7
Re:Errore APP pubblicata
« Risposta #2 il: 01 Settembre 2014, 09:37:47 CEST »
0
Ciao Nicola_D e grazie per la risposta.
Potresti gentilmente spiegarmi meglio nel senso che , da quello che ho capito:
1. I playservices non sono legati al playstore , che tra l'altro è già presente sul dispositivo?
2. come faccio ad usare i support library per la versione 2.3?

Scusami forse faccio domande banali

Offline tonno16

  • Utente storico
  • *****
  • Post: 1197
  • Respect: +58
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:Errore APP pubblicata
« Risposta #3 il: 01 Settembre 2014, 09:47:59 CEST »
0
Citazione
I playservices non sono legati al playstore , che tra l'altro è già presente sul dispositivo?

In teoria sono già installati. Prova ad andare in impostazioni->applicazioni->tutte. Dovrebbe esserci anche Play Services.

Citazione
il disp 2.3 da quell'errore perché non ha i fragment,devi usare la support library
dovresti vedere le support library tipo android.support.v4....etc
Però guardando il tuo codice nel momento che usi getFragmentManager non dai il supporto alle vecchi versioni.
Prova a intergare questa support.v4 e poi usa getSupportFragmentManager()



Offline piterpaolo

  • Nuovo arrivato
  • *
  • Post: 39
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Sony Xperia V
  • Play Store ID:
    Piterpaolo
  • Sistema operativo:
    Windows 7
Re:Errore APP pubblicata
« Risposta #4 il: 01 Settembre 2014, 09:52:05 CEST »
0
Aggiungendo il support.v4 devo levare il v7? Perdo la compatibilità con le versioni successive?
Dimenticavo nel codice importo già:
import android.support.v4.app.Fragment;

è sufficente?
« Ultima modifica: 01 Settembre 2014, 10:01:41 CEST da piterpaolo »

Offline tonno16

  • Utente storico
  • *****
  • Post: 1197
  • Respect: +58
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:Errore APP pubblicata
« Risposta #5 il: 01 Settembre 2014, 10:08:01 CEST »
0
si ma fai getSupportFragmentManager()

Offline piterpaolo

  • Nuovo arrivato
  • *
  • Post: 39
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Sony Xperia V
  • Play Store ID:
    Piterpaolo
  • Sistema operativo:
    Windows 7
Re:Errore APP pubblicata
« Risposta #6 il: 01 Settembre 2014, 10:12:25 CEST »
0
Se faccio:
map = ((MapFragment) getSupportFragmentManager().findFragmentById(R.id.map)).getMap();

mi da:

cannot cast fragment to mapfragment

Ho fatto anche questa modifica rispetto al codice precedente per utilizzare getSupportFragmentManager() e cioè:
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
// Getting GoogleMap object from the fragment
map = mapFragment.getMap();

invece di :
map = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();

ma l'app ora continua a craschare all'avvio, cosa che non succedeva con il metodo MapFragment.


Premesso che nel Manifest è presente sia:
<meta-data
            android:name="com.google.android.gms.version"
            android:value="@integer/google_play_services_version" />
       

che

<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />

Oltre tutti i permessi necessari.


Post unito: [time]01 Settembre 2014, 14:35:03 CEST[/time]
Dovrei aver risolto il problema nell'utilizzo del SupportMapFragment.
Praticamente nell'xml continuavo ad usare erroneamente  :
<fragment
        android:id="@+id/map"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        class="com.google.android.gms.maps.MapFragment" />

l'ho sostituito con :
<fragment
        android:id="@+id/map"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        class="com.google.android.gms.maps.SupportMapFragment" />

 e il problema del cast è scomparso.
Ora mi resta da provare il tutto sui dispositivi incriminati e vedere cosa succede.


Post unito: [time]01 Settembre 2014, 19:11:24 CEST[/time]
Ragazzi purtroppo nemmeno con le modifiche apportate i problemi si risolvono.
Infatti sia al dispositivo con Android 2.x che a quello con 4.1 continuano a manifestarsi gli stessi problemi.
L'APP crasha all'avvio!!!

Quale altra soluzione posso provare?

Post unito: [time]01 Settembre 2014, 19:20:53 CEST[/time]
Dimenticavo, sul dispositivo di mia figlia sono attivi i play services :-(

Post unito: 02 Settembre 2014, 09:05:18 CEST
NESSUN SUGGERIMENTO.

Pensavo, visto che devo fare degli aggiornamenti all'app, di pubblicarla con gli aggiornamenti e le modifiche da voi consigliate e farmi inviare i log di errori dei dispositivi incriminati.
Che ne dite?
« Ultima modifica: 02 Settembre 2014, 09:05:18 CEST da piterpaolo, Reason: Merged DoublePost »

Offline piterpaolo

  • Nuovo arrivato
  • *
  • Post: 39
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Sony Xperia V
  • Play Store ID:
    Piterpaolo
  • Sistema operativo:
    Windows 7
Re:Errore APP pubblicata
« Risposta #7 il: 04 Settembre 2014, 08:36:47 CEST »
0
Mi rispondo in parte da solo (forse può servire a qualcuno).
Per quanto riguarda il problema dei PlayServices ho risolto in questo modo (trattandosi del telefono di mia figlia):
- ho levato gli aggiornamenti del PlayServices;
- avviato le google maps (che mi segnalavano la presenza degli aggiornamenti del Play);
- ho aggiornato il Play dallo store;
- ho installato l'APP
E TUTTO FUNZIONA CORRETTAMENTE.
Dunque il problema presumo era negli aggiornamenti del PlayServices.
Per l'altro dispositivo, visto che ho apportato delle modifiche all'APP pubblicata, aspetto di ricevere la segnalazione.


Offline piterpaolo

  • Nuovo arrivato
  • *
  • Post: 39
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Sony Xperia V
  • Play Store ID:
    Piterpaolo
  • Sistema operativo:
    Windows 7
Re:Errore APP pubblicata
« Risposta #8 il: 06 Settembre 2014, 11:17:56 CEST »
0
Risolto anche l'arcano problema per l'altro dispositivo.
In pratica il codice che generava l'errore era:
/Personalizzazione intestazione ActionBar
        ActionBar actionBar = getActionBar();
        actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_HOME
              | ActionBar.DISPLAY_SHOW_TITLE | ActionBar.DISPLAY_SHOW_CUSTOM);
              actionBar.setSubtitle("Sottotitolo");
                actionBar.setTitle("Titolo");

Che evidentemente nelle versioni precedenti di Android non viene ben interpretato.
Per cui mi chiedo se uno sbaglia a scrivere l'intestazione della ActionBar in fase di creazione del progetto, oltre al codice su scritto, esiste un altro modo (magari agendo su qualche xml) per cambiare l'intestazione della Action ?

Offline tonno16

  • Utente storico
  • *****
  • Post: 1197
  • Respect: +58
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:Errore APP pubblicata
« Risposta #9 il: 06 Settembre 2014, 11:46:45 CEST »
0
Fare un controllo che verifica che versione hai. Se <3.0 fai qualcosa altrimenti fai qualcos'altro

Offline piterpaolo

  • Nuovo arrivato
  • *
  • Post: 39
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Sony Xperia V
  • Play Store ID:
    Piterpaolo
  • Sistema operativo:
    Windows 7
Re:Errore APP pubblicata
« Risposta #10 il: 07 Settembre 2014, 10:07:55 CEST »
0
Avevo pensato al controllo sulla versione, ma come ???

Offline tonno16

  • Utente storico
  • *****
  • Post: 1197
  • Respect: +58
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:Errore APP pubblicata
« Risposta #11 il: 07 Settembre 2014, 10:13:02 CEST »
0
Non ricordo...era un semplice if

Offline piterpaolo

  • Nuovo arrivato
  • *
  • Post: 39
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Sony Xperia V
  • Play Store ID:
    Piterpaolo
  • Sistema operativo:
    Windows 7
Re:Errore APP pubblicata
« Risposta #12 il: 07 Settembre 2014, 10:19:10 CEST »
0
E se modifico
android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >

la label del manifest?

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:Errore APP pubblicata
« Risposta #13 il: 07 Settembre 2014, 13:33:56 CEST »
0
Risolto anche l'arcano problema per l'altro dispositivo.
In pratica il codice che generava l'errore era:
/Personalizzazione intestazione ActionBar
        ActionBar actionBar = getActionBar();
        actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_HOME
              | ActionBar.DISPLAY_SHOW_TITLE | ActionBar.DISPLAY_SHOW_CUSTOM);
              actionBar.setSubtitle("Sottotitolo");
                actionBar.setTitle("Titolo");

Che evidentemente nelle versioni precedenti di Android non viene ben interpretato.
Per cui mi chiedo se uno sbaglia a scrivere l'intestazione della ActionBar in fase di creazione del progetto, oltre al codice su scritto, esiste un altro modo (magari agendo su qualche xml) per cambiare l'intestazione della Action ?

L'ActionBar non esiste nei dispositivi 2.3.
Devi usare la ActionBarCompat o la SherlockActionBar se vuoi l'ActionBar anche su dispositivi 2.3 e adeguare il codice richiesto.

Offline piterpaolo

  • Nuovo arrivato
  • *
  • Post: 39
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Sony Xperia V
  • Play Store ID:
    Piterpaolo
  • Sistema operativo:
    Windows 7
Re:Errore APP pubblicata
« Risposta #14 il: 08 Settembre 2014, 08:27:06 CEST »
0
Purtroppo l'ho scoperto a mie spese.
Vedo ora quale soluzione prendere.
Se volessi controllare la versione di OS e comportarmi di conseguenza, come suggerito da tonno16, come faccio?

Post unito: 08 Settembre 2014, 10:03:38 CEST
Mi rispondo da solo ...
è sufficiente modificare il file strings.xml ed inserire in

<string name="app_name">quello che vuoi visualizzare nella action bar</string>

in questo modo non si dovrebbero avere problemi con il codice relativo all'actionbar scritto in precedenza in quanto RIMOSSO e con i dispositivi con android 2.x!!!

Correggetemi se sbaglio ;-)
« Ultima modifica: 08 Settembre 2014, 10:03:38 CEST da piterpaolo, Reason: Merged DoublePost »