以下のようなlogcat出力が表示されることがあります。
<3>[ 283.152845] init: untracked pid 4217 exited
<3>[ 283.162185] init: untracked pid 4078 exited
<3>[ 283.173691] init: untracked pid 1504 exited
<3>[ 283.177018] init: untracked pid 1468 exited
Initのログの意味は何ですか:untracked pid xxxx exited
?
logcatを使用して、巨大なログを注意深く読んでください。常にクラッシュするプログラムを見つけるかもしれません。
さまざまな理由が考えられますが、その1つは、init.rcで指定されたサービスを初期化しようとしたAndroidinitが失敗したことです。
最初にinit.rcから開始されたサービスを二分し、エラーのあるサービスを見つけたら、カーネルドライバーエラーまたはAndroidhalなどの特定のサービス起動エラーを修正してみてください。ドライバーエラー、ライブラリエラー、またはAndroidフレームワークエラー。
技術的には、このメッセージ(最新バージョンは「追跡されていないpid XXXがステータスYYで終了しました」)は、Android initが子プロセスの終了を確認する(つまり、SIGCHLDシグナルを受信してからそのpidを取得する)ことを意味しますwaitpid()
)を使用しますが、そのプロセスを構成済みのサービスに関連付けることはできません( この質問 on Android init service configurationを参照)。
これにより、Android環境で何がデーモン化できるのか、そしてそれを見つける方法がわかります。しかし、私はそれに答えることができないと思います。私が持っている唯一の提案は、ルートアクセスとチェックプロセス。