0

私はネイティブの Android アプリケーションを開発しています。サードパーティの API も使用しています。問題は、モバイル (S3) を自分のマシンに接続し、アプリケーションをモバイルで直接実行すると、正常に動作することです。しかし、APKをAndroidモバイルにコピーすると、APPをインストールして実行しました。次に、API呼び出しの1つで、「残念ながらAppNameが機能しなくなりました」と言ってクラッシュします。

何が問題で、何がアプリケーションのクラッシュの原因なのかを突き止める方法が見つかりませんでした。

誰でも問題を見つける方法や考えられる原因を提案してください。私はEclipseで開発しています。

4

3 に答える 3

1

アプリ内に実装することで、独自のログ書き込みシステムをセットアップできますjava.lang.Thread.UncaughtExceptionHandler

例えば

public class myExceptionHandler implements UncaughtExceptionHandler {

private UncaughtExceptionHandler defaultUEH;

private String localPath;



public myExceptionHandler(String localPath) {
    this.localPath = localPath;

    this.defaultUEH = Thread.getDefaultUncaughtExceptionHandler();
}

@Override
public void uncaughtException(Thread t, Throwable e) {
    final long ts = new Date().getTime();

    final Calendar cal = Calendar.getInstance();
    cal.setTimeInMillis(ts);

    final String timestamp = new SimpleDateFormat("HH_mm_ss_SSS")
            .format(cal.getTime());

    final Writer result = new StringWriter();
    final PrintWriter printWriter = new PrintWriter(result);
    e.printStackTrace(printWriter);
    String stacktrace = result.toString();
    printWriter.close();
    String filename = "logcat"+timestamp + ".txt";

    if (localPath != null) {

        writeToFile(stacktrace, filename);
    }

    defaultUEH.uncaughtException(t, e);

}

private void writeToFile(String stacktrace, String filename) {
    try {
        BufferedWriter bos = new BufferedWriter(new FileWriter(localPath
                + "/" + filename));
        bos.write(stacktrace);
        bos.flush();
        bos.close();
    } catch (Exception e) {
        e.printStackTrace();
    }
}

}

次のように MainActivity からこのハンドラーを呼び出します。

  Thread.setDefaultUncaughtExceptionHandler(new myExceptionHandler("Put your target directory/folder path where you would like to store the log file"));

これで、アプリがクラッシュするたびに、コードで使用したフォルダーにログファイルが書き込まれます。

于 2013-08-10T13:01:13.657 に答える
1

5 分のクイック BugSense ライブラリと無料アカウントをセットアップして、発生する例外を確認してみませんか? http://www.bugsense.com/

于 2013-08-10T12:31:22.683 に答える
0

デバイスを PC に接続し、Eclipse で LogCat ウィンドウを開くだけです。Logcat メッセージは、アプリを実際にデバッグしなくても LogCat に出力されます。

于 2013-08-10T13:24:03.820 に答える