Google fixar en bugg
Som jag rapporterade, skulle Google Analytics för Android kastar ibland en SQLiteException. Naturligtvis den stora G fick on-line flack över det och har nu lagt ut en ny version av sin JAR-fil. Version 1.1 hävdar att åtgärda problemet. Du kan kolla upp det på code.google.com / mobile / analytics / docs / android längst ner på sidan.
Man skulle kunna tro om någon skulle veta hur man skriver Android-koden skulle 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ändningen av din Android-applikation, men bör Google Analytics någonsin få din app att krascha?
Google Analytics vållade en av mina appar till kraschen och stackspårningen såg ut:
android.database.sqlite.SQLiteException: kunde 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 att ö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 rätta var att linda öppna Google Analytics i en try-catch blocket 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 koden 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-appen, annars en av dina användare kan titta på din app krasch. Hur tror du att de kommer att bedöma din app då?
Android App Store brister
Google Market har varit det enda spelet runt för Android-appar, men 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.

















































