2

HTC タブレットで Android アプリをデバッグしていますが、アプリをアンインストールするたびにデバイスが再起動します。アンインストールも新しいビルドの試行の一環として行われるため、アプリに変更を加えると、テストの前に再起動が必要になります。これは、開発にとって予想通り悪化しています。

問題はここで説明されている問題と似ているように聞こえますが、私の場合は謎ではありません。アンインストール=>再起動。アプリを変更し、Eclipse & adb => 再起動でデバッグします。同様の問題に対する唯一の回答で提案されているように、デバイス上のすべてのデータを消去することは望ましくありません.

なぜこれが起こっているのか、それを防ぐ方法を誰か教えてもらえますか?

4

1 に答える 1

1

私はこれを答えとして提供していませんが(少なくともまだ)、これを調査する方法についてブレインストーミングするためにコメントが提供するよりも多くのスペースが必要です

安全な「hello world」タイプのアプリを、独自のアクティビティとしてプロジェクトにマージしたくなるでしょう。次に、マニフェスト ファイルと Java ファイルからすべての実際の機能をコメント アウトします。これで、hello world とリソースだけが残るはずです。実行後にデバイスをアンインストールしても存続するかどうかを確認します。そうでない場合は、リソースを疑う必要があると思います。

これでコメントを行う必要があります-または、ツリーからファイルを大規模に削除することもできます

find  . -name "*.java" | xargs -I f sed -i 's/^/\/\//' f

(一部のエディターはブロック コメント/コメント解除を行いますが、emacs はファイルの列に対して任意の操作を行います。)

次に、実際のアクティビティのスケルトン (操作を含まない onCreate、onStart などのすべてのメソッド) のコメントを外し、そのアクティビティをマニフェストに復元します。または、機能する Java コードを復元しますが、マニフェストからアクティビティを除外します。その後、クラッシュが発生するまで、機能を段階的に追加できます。

ndk ライブラリや Java ライブラリさえあれば、それらを使って同様のゲームをプレイできます。

アンインストール中に logcat を実行して、デバイスがハングアップする前にメッセージが表示されるかどうかを確認することもできます。

ああ、大きな質問ですが、これはカーネルの再起動ですか、それとも Android ランタイムの再起動ですか? 後者の場合、adb と logcat はおそらく存続するはずであり、/proc/uptime は小さな数値にリセットされません。

疑わしい操作を突き止めた場合は、その説明を投稿していただければ幸いです。テスト コレクションに同様のデバイスがあり、同じ明らかなバグがあるかどうかを知りたいと思っています。また、HTC には連絡先となる「開発者エバンジェリスト」が多数います。

于 2012-05-04T02:44:57.627 に答える