Autore Topic: crash solo in tablet  (Letto 1310 volte)

Offline gabric

  • Utente senior
  • ****
  • Post: 615
  • Respect: +18
    • Google+
    • Mostra profilo
    • Brancato's site
  • Dispositivo Android:
    Nexus 5 / Tablet mediacom s4
  • Play Store ID:
    Brancato's+app
  • Sistema operativo:
    window7. ubuntu
crash solo in tablet
« il: 26 Giugno 2012, 19:18:43 CEST »
0
Salve, la mia applicazione è ormai testata e consolidata in molti telefonini.
Essendoci alcuni metodi che richiamano il tel_State e le chiamate, il market non me la fa visualizzare per i tablet, ho quindi deciso di creare una versione per tablet, rimuovendo tutte le chiamate a chiamata (scusate il gioco di parole)
ho installato l'app sul mio mediacom 715i e funziona tutto.. ma appena vado per aprire l'intent che contiene la mappa, l'app crascha...
Premetto che non psso visualizzare il log cat perchè non riesco a configurare i driver del tablet per usarlo come device fisico.

Non posto il codice, perchè è funzionante su i telefonini e l'errore non credo dipenda da quello, ma da qualcosa nel manifest magari... boh!
vi è mai capitata qualcosa del genere?

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
R: crash solo in tablet
« Risposta #1 il: 26 Giugno 2012, 19:29:13 CEST »
0
Prova ad usare alogcat, è un comodo programma per visualizzare il logcat direttamente dal dispositivo.
Senza logcat è difficile capire perché crasha.

Inviato dal mio Galaxy Nexus con Tapatalk 2

Offline gabric

  • Utente senior
  • ****
  • Post: 615
  • Respect: +18
    • Google+
    • Mostra profilo
    • Brancato's site
  • Dispositivo Android:
    Nexus 5 / Tablet mediacom s4
  • Play Store ID:
    Brancato's+app
  • Sistema operativo:
    window7. ubuntu
Re:crash solo in tablet
« Risposta #2 il: 26 Giugno 2012, 19:35:55 CEST »
0
nel frattempo mi scuso con i mod, perchè avrei dovuto aprire nella sezione mappe. chiedo di spostarla

Offline gabric

  • Utente senior
  • ****
  • Post: 615
  • Respect: +18
    • Google+
    • Mostra profilo
    • Brancato's site
  • Dispositivo Android:
    Nexus 5 / Tablet mediacom s4
  • Play Store ID:
    Brancato's+app
  • Sistema operativo:
    window7. ubuntu
Re:crash solo in tablet
« Risposta #3 il: 26 Giugno 2012, 19:56:06 CEST »
0
Wow utilissima applicazione, grazie!
comunque ecco il logcat direttamente dal dispositivo


D/AndroidRuntime( 2281): Shutting down VM
W/dalvikvm( 2281): threadid=1: thread exiting with uncaught exception (group=0x40a561f8)
E/AndroidRuntime( 2281): FATAL EXCEPTION: main
E/AndroidRuntime( 2281): java.lang.NoClassDefFoundError: android.security.MessageDigest
E/AndroidRuntime( 2281):    at com.google.android.maps.KeyHelper.getSignatureFingerprint(KeyHelper.java:60)
E/AndroidRuntime( 2281):    at com.google.android.maps.MapActivity.createMap(MapActivity.java:552)
E/AndroidRuntime( 2281):    at com.google.android.maps.MapActivity.onCreate(MapActivity.java:422)
E/AndroidRuntime( 2281):    at unikore.it.DoveSiamo_Inge.onCreate(DoveSiamo_Inge.java:34)
E/AndroidRuntime( 2281):    at android.app.Activity.performCreate(Activity.java:4465)
E/AndroidRuntime( 2281):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
E/AndroidRuntime( 2281):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)
E/AndroidRuntime( 2281):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
E/AndroidRuntime( 2281):    at android.app.ActivityThread.access$600(ActivityThread.java:123)
E/AndroidRuntime( 2281):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
E/AndroidRuntime( 2281):    at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime( 2281):    at android.os.Looper.loop(Looper.java:137)
E/AndroidRuntime( 2281):    at android.app.ActivityThread.main(ActivityThread.java:4424)
E/AndroidRuntime( 2281):    at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime( 2281):    at java.lang.reflect.Method.invoke(Method.java:511)
E/AndroidRuntime( 2281):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
E/AndroidRuntime( 2281):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
E/AndroidRuntime( 2281):    at dalvik.system.NativeStart.main(Native Method)
W/ActivityManager(  124):   Force finishing activity unikore.it/.DoveSiamo_Inge
W/ActivityManager(  124):   Force finishing activity unikore.it/.Inge
D/gralloc (   76): alloc_buffer: Successfully allocated 0x38000 bytes, mIonFd=22, SharedFd=26

Offline DarnellNajanReed

  • Utente normale
  • ***
  • Post: 359
  • Respect: +49
    • Google+
    • Mostra profilo
  • Dispositivo Android:
    LG Optimus One, Acer Iconia A500/501, Asus Transformer Prime, Galaxy ACE, Galaxy S Plus, Galaxy S Advance P, Galaxy Tab 2 7.0, Google Nexus 7
  • Play Store ID:
    Luigi Notaro
  • Sistema operativo:
    OS X 10.8.3
Re:crash solo in tablet
« Risposta #4 il: 26 Giugno 2012, 20:32:23 CEST »
0
Googolando, pare che da HC in poi la classe android.security.MessageDigest sia stata rimossa, e va sostituita con java.security.MessageDigest.
Prova a seguire questa pista su Google, io mi sono limitato ad aprire i primi link.

Offline gabric

  • Utente senior
  • ****
  • Post: 615
  • Respect: +18
    • Google+
    • Mostra profilo
    • Brancato's site
  • Dispositivo Android:
    Nexus 5 / Tablet mediacom s4
  • Play Store ID:
    Brancato's+app
  • Sistema operativo:
    window7. ubuntu
Re:crash solo in tablet
« Risposta #5 il: 26 Giugno 2012, 21:03:38 CEST »
0
ma in tutto il file non faccio riferimento alla classe android.security...

Codice (Java): [Seleziona]
package unikore.it;

import java.util.ArrayList;
import java.util.List;

import android.os.Bundle;
import android.view.MenuItem;
import android.webkit.WebView;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.os.Bundle;


import com.google.android.maps.GeoPoint;
import com.google.android.maps.ItemizedOverlay;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapController;
import com.google.android.maps.MapView;
import com.google.android.maps.Overlay;
import com.google.android.maps.OverlayItem;

public class DoveSiamo_Giuri extends MapActivity {

                 private MapView map;
                private MapController controller;
                @Override
                public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.dovesiamoingr);
                map = (MapView)this.findViewById(R.id.mapview1);
                controller = map.getController();
                map.setSatellite(true);
                map.setStreetView(false);
                map.displayZoomControls(true);
                controller.setZoom(20);
                Double lat = 37.5******1E6;
                Double lng = 14.2****1E6;
                GeoPoint point = new GeoPoint(lat.intValue(), lng.intValue());
                controller.setCenter(point);
                controller.animateTo(point);
               
                Drawable drawable = this.getResources().getDrawable(R.drawable.marker);
                List<Overlay> overlays = map.getOverlays();
                AItemizedOverlay itemizedoverlay = new AItemizedOverlay(drawable, this);
                //setto il geo point con tutti i metodi e le opzioni
               
                OverlayItem overlayitem = new OverlayItem(point, "Scienze economiche e Giuridiche ", "bla bla");
                itemizedoverlay.addOverlay(overlayitem);
                overlays.add(itemizedoverlay);
                /*gestisto le opzioni in più*/
                map.setClickable(true);
                map.setBuiltInZoomControls(true);
                }
                @Override
                protected boolean isRouteDisplayed() {
                return false;
                }
               
               
               
               
        public boolean onOptionsItemSelected(MenuItem item) {
                  int id = item.getItemId();    
                  switch (id) {
                    case 1:
                        Intent facolta = new Intent (getBaseContext(), Koreapp1Activity.class);
                   startActivity(facolta);
                   break;
                     
                   
                    case 2: /** News */
                        Intent News = new Intent (getBaseContext(), News.class);
                    startActivity(News);
                   break;
                     
                     
                    case 3: /** Esami */
                        Intent esami = new Intent (getBaseContext(), esami.class);
                        startActivity(esami);
                        break;
                       
                    case 4: /** Contatti */
                        Intent contatti = new Intent (getBaseContext(), contatti.class);
                        startActivity(contatti);
                        break;
                  }
                  return true;
                }
       
public class AItemizedOverlay extends ItemizedOverlay<OverlayItem> {
       
        //Gli OverlayItem sono oggetti posizionabili sulla mappa
        private ArrayList<OverlayItem> mOverlays = new ArrayList<OverlayItem>();
        private Context mContext = null;
       
        //Costruttore che garantisce l'onTap(int)
        public AItemizedOverlay(Drawable marker, Context context) {
                super(boundCenterBottom(marker));
                mContext = context;
        }

        @Override
        protected OverlayItem createItem(int i) {
                return mOverlays.get(i);
        }

        @Override
        public int size() {
                return mOverlays.size();
        }
       
        public void remove(int i) {
                this.mOverlays.remove(i);
                populate();
        }
       
        @Override
        protected boolean onTap(int index) {
          OverlayItem item = mOverlays.get(index);
          final String nome = item.getTitle();
          // Costruisco un alert dialog
          AlertDialog.Builder dialog = new AlertDialog.Builder(mContext);
          dialog.setTitle(item.getTitle());
          dialog.setMessage(item.getSnippet());
          dialog.setIcon(item.getMarker(R.drawable.marker));
         
          dialog.setPositiveButton("Chiudi", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {
                     dialog.dismiss();
                }
        });
         
          dialog.show();
          return true;
        }
       
        public void addOverlay(OverlayItem overlay) {
            this.mOverlays.add(overlay);
            populate();
        }
       
        public void clear() {
                mOverlays.clear();
                populate();
        }

}

}

Offline DarnellNajanReed

  • Utente normale
  • ***
  • Post: 359
  • Respect: +49
    • Google+
    • Mostra profilo
  • Dispositivo Android:
    LG Optimus One, Acer Iconia A500/501, Asus Transformer Prime, Galaxy ACE, Galaxy S Plus, Galaxy S Advance P, Galaxy Tab 2 7.0, Google Nexus 7
  • Play Store ID:
    Luigi Notaro
  • Sistema operativo:
    OS X 10.8.3
Re:crash solo in tablet
« Risposta #6 il: 26 Giugno 2012, 21:06:37 CEST »
0
Ripeto, prova a googolare: il secondo link cercando semplicemente l'eccezione suggerisce che la chiamata venga fatta dalla libreria Google APIs v. 3.2.
Prova ad approfondire, google è una miniera.

Offline gabric

  • Utente senior
  • ****
  • Post: 615
  • Respect: +18
    • Google+
    • Mostra profilo
    • Brancato's site
  • Dispositivo Android:
    Nexus 5 / Tablet mediacom s4
  • Play Store ID:
    Brancato's+app
  • Sistema operativo:
    window7. ubuntu
Re:crash solo in tablet
« Risposta #7 il: 26 Giugno 2012, 21:17:16 CEST »
0
ho googlato parecchio ma non ho trovato risposte... invee ho trovato un topic su un altro famosissimo forum italiano su android (non un forum tecnico come questo) (non so se posso postareil link)
dove è spiegato che l'errore è dato dal mio tablet e non dall'app -.-

Offline DarnellNajanReed

  • Utente normale
  • ***
  • Post: 359
  • Respect: +49
    • Google+
    • Mostra profilo
  • Dispositivo Android:
    LG Optimus One, Acer Iconia A500/501, Asus Transformer Prime, Galaxy ACE, Galaxy S Plus, Galaxy S Advance P, Galaxy Tab 2 7.0, Google Nexus 7
  • Play Store ID:
    Luigi Notaro
  • Sistema operativo:
    OS X 10.8.3
Re:crash solo in tablet
« Risposta #8 il: 26 Giugno 2012, 21:22:01 CEST »
0
Se la cosa dipende da una classe non presente dove ci si aspetta che sia...è possibile che sia colpa della versione di Android che monta uno specifico device. Se la classe fa parte di una libreria caricata dall'app ovviamente non può essere il caso.

Offline gabric

  • Utente senior
  • ****
  • Post: 615
  • Respect: +18
    • Google+
    • Mostra profilo
    • Brancato's site
  • Dispositivo Android:
    Nexus 5 / Tablet mediacom s4
  • Play Store ID:
    Brancato's+app
  • Sistema operativo:
    window7. ubuntu
Re:crash solo in tablet
« Risposta #9 il: 26 Giugno 2012, 21:50:01 CEST »
0
il tab monta icecream... è strano.. ora ho anche sostituito il file google.android.maps.jar che è quello dentro al quale dovrebbe esserci il riferimento al file errato, e funziona tutto perfettamente -.-
e ho tempo di rimescolare il codice quando il problema è dato dal device XD  :-X
« Ultima modifica: 26 Giugno 2012, 23:13:38 CEST da gabric »