2011-11-08 5 views
0

私は時折クラッシュするライブ壁紙を持っており、Googleスプレッドシートにcrashreportsを生成して収集するためにACRA(http://code.google.com/p/acra/)を統合するメリットを享受したいと考えています。ライブ壁紙からACRAを使用するにはどうすればいいですか?

しかし、ACRAを私のライブ壁紙に統合することはできませんでした。ここで私はこれまで試したものです:私が構築し、展開すると

  1. @ReportsCrashes(formKey = "dFhXY3Y4N2NXXXXXXXXwM1g3Z1FZUVE6MQ", mode = ReportingInteractionMode.TOAST, forceCloseDialogAfterToast = false, resToastText = R.string.crash_text_toast)

WallpaperService.onCreate()

  • 注釈付きWallpaperServiceでACRA.init(WallpaperService.getApplication());との基本的なセットアップガイド(http://code.google.com/p/acra/wiki/BasicSetup
  • 初期化ACRAに従っアプリでは、以前と同じようにクラッシュし、ACRAは有効になっていません。

    ACRAは、アプリケーションのサブクラスに注釈を付けることを期待していることが原因です。

    私はアンドロイド2.1アップデート用のアプリケーションをコンパイルしており、最新バージョンのACRA(現在は4.23)を使用していて、アンドロイド2.3.4を搭載した携帯電話で動作しています。

    どのようなヘルプも歓迎です!

  • +0

    私はすでに解決策がありますが、私はstackoverflowで新しくなって以来、私は5時間後に私のソリューションを提出することはできません! :-/ しかたがない。以下は、私の最小限のパッチが動作するためのリンクです:http://groups.google.com/group/acra-discuss/browse_thread/thread/752d9318d44795ca –

    答えて

    1

    Android Live WallpapersにAndroidManifest.xmlから参照されるandroid.app.Applicationを拡張するオプションのクラスを持つことができるという基本的な事実は忘れました。

    このクラスを使用すると、壁紙のライフサイクルでACRAをできるだけ早く開始できるため、壁紙にACRAを含めるための最良の方法です。

    プロジェクトでandroid.app.Applicationを拡張したクラスを作成し、マニフェストのapplication要素のandroid:name属性から名前を付けます。例。マニフェストで

    :MyApplicationをで

    <application 
    android:debuggable="true" 
    android:icon="@drawable/icon" 
    android:label="@string/app_name" 
    android:name=".MyApplication" > 
    

    。java:

    package com.mycompany.myapp; 
    
    import org.acra.ACRA; 
    import org.acra.ReportingInteractionMode; 
    import org.acra.annotation.ReportsCrashes; 
    
    @ReportsCrashes(resDialogIcon = R.drawable.icon, resToastText = R.string.crash_text_toast, formKey = "dFhXY3YXXXXXXXXXXXXXXZUVE6MQ", mode = ReportingInteractionMode.TOAST, forceCloseDialogAfterToast = false) 
    public class MyApplication extends android.app.Application { 
        @Override 
        public void onCreate() { 
         ACRA.init(this); 
         super.onCreate(); 
        } 
    } 
    
    0

    これをさらに調査したところ、バージョン4.2.3あたりのACRAはライブ壁紙をサポートしていないことが判明しました。私はこのサポートを追加するためにパッチを適用することに決めました。パッチはthis threadにあります。

    1. パッチACRAはリンクスレッドごとなどのinit()の第2引数をサポートする:ここ

      は小さくまとめたものです。

    2. ACRA documentationごとにApplicationクラスに注釈を付けるように、WallpaperServiceクラスに注釈を付けます。このようなWallpaperServiceのonCreate()方法で新しいinit()機能付き
    3. 初期化ACRA:ACRA.init(getApplication(),this);

    私はまだexhastivelyこれをテストしていない、とバグの多くがあるかもしれません。しかし、少なくともこれはスタートです。私は今、トーストをやめた厄介な力の代わりに、スプレッドシートにトーストといくつかのデータを入れます。

    関連する問題