Hoppa till innehåll
8 jan 11

Google fixar en bugg

av admin

Som jag rapporterade, skulle Google Analytics för Android ibland kasta en SQLiteException. Naturligtvis den stora G var att få på nätet flack över det och har nu lagt ut en ny version av deras JAR-fil. Version 1.1 anspråk för att åtgärda problemet. Du kan kolla upp det på code.google.com/mobile/analytics/docs/android längst ner på sidan.

1 januari 11

Kan Google programmerare koda Android?

av admin

Man skulle kunna tro, om någon skulle veta hur man skriver Android kod skulle det vara kodare på Google. Men om du använder Google Analytics biblioteket tillgängligt för Android, kanske du stöter på problem. Google Analytics är bra att spåra användning av din Android-applikation, men bör Google Analytics någonsin orsaka din app att krascha?

Google Analytics orsakade en av mina appar att krascha och stackspårningen såg ut:

android.database.sqlite.SQLiteException: inte öppna databasfilen
vid android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2787)
vid android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2803)
på android.app.ActivityThread.access $ 2300 (ActivityThread.java:135)
vid android.app.ActivityThread $ H.handleMessage (ActivityThread.java:2136)
vid android.os.Handler.dispatchMessage (Handler.java:99)
vid android.os.Looper.loop (Looper.java:144)
vid android.app.ActivityThread.main (ActivityThread.java:4937)
vid java.lang.reflect.Method.invokeNative (Native Method)
vid java.lang.reflect.Method.invoke (Method.java:521)
vid com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:868)
vid com.android.internal.os.ZygoteInit.main (ZygoteInit.java:626)
vid dalvik.system.NativeStart.main (Native Method)
Orsakas av: android.database.sqlite.SQLiteException: inte öppna databasfilen
vid android.database.sqlite.SQLiteDatabase.dbopen (Native Method)
vid android.database.sqlite.SQLiteDatabase. <init> (SQLiteDatabase.java:1899)
vid android.database.sqlite.SQLiteDatabase.openDatabase (SQLiteDatabase.java:881)
vid android.database.sqlite.SQLiteOpenHelper.getReadableDatabase (SQLiteOpenHelper.java:168)
vid com.google.android.apps.analytics.PersistentEventStore.getNumStoredEvents (Okänd källa)
vid com.google.android.apps.analytics.PersistentEventStore.startNewVisit (Okänd källa)
vid com.google.android.apps.analytics.GoogleAnalyticsTracker.start (Okänd källa)
vid com.google.android.apps.analytics.GoogleAnalyticsTracker.start (Okänd källa)

Så Google Analytics försökte använda SQLite för att öppna databasen, men misslyckades med att fånga en SQLiteException. Den fix var att linda öppna Google Analytics i en try-catch-block och fånga detta undantag. Här är de relevanta kodfragment att fixa kraschen genom att fånga undantaget Google Analytics inte:


import com.google.android.apps.analytics.GoogleAnalyticsTracker;
GoogleAnalyticsTracker tracker = null;
try {
tracker = GoogleAnalyticsTracker.getInstance();
tracker.start("UA-123456-78", 20, this);
}
catch (android.database.sqlite.SQLiteException sqle)
{
Log.d(SUBSYSTEM_TAG, "Google Analytics SQLite exception: "+sqle);
tracker = null;
}
catch (Exception e)
{
Log.d(SUBSYSTEM_TAG, "Google Analytics exception: "+e);
tracker = null;
}
if (tracker != null)
tracker.trackEvent("Android", action, label, val);

Den OnDestroy () metoden kod ser ut:

if (tracker != null) {
tracker.stop();
tracker = null;
}

Kom ihåg att du måste fånga dessa undantag om du använder Google Analytics i din Android-app, annars en av dina användare kan titta på din app krasch. Hur tror du att de kommer att betygsätta din app då?

8 jun 10

Android App Store brister

av admin

Google marknaden har varit det enda spelet runt för Android Apps, även om det kan förändras. Några av marknadens brister inkluderar:

  • Inga skärmdumpar av din ansökan.
  • 325 tecken på beskrivningar.
  • Google Checkout är det enda betalningsalternativet.
  • Apps är svårt för användarna att hitta.
  • Inget sätt att ladda ner ett program via webben via en webblänk.

Vissa förbättringar kan vara på väg, men dessa är gotchas för utvecklare idag.