2

通常はマルウェアと見なされるアプリを開発しようとしていますが、顧客の要求は非常に具体的で論理的です。ボルトで固定され、接続された約50〜100台の安価なAndroidスマートフォンがあり、アプリはセンサーデータの一部をtcp経由でリモートサーバーに送信することになっています。簡単そうに聞こえますが、私が苦労している機能が2つあります(私は経験豊富なAndroid開発者ではなく、電話を根付かせたことがないため)。

#1アプリは常にオンになっている必要があります。クラッシュした場合、サーバーはエラーレポート(スタックトレース)を取得する必要があり、アプリは10分後にもう一度再起動してからあきらめる必要があります。また、OSは理論的にアプリを強制終了する可能性があります(ただし、メモリ使用量を最小限に抑えるために最善を尽くしました)。なんとかしてそれも処理したいです。

#2ユーザーの操作をまったく必要とせずに、アプリをリモートで更新または自動更新できれば素晴らしいと思います(従来のユーザーがいないため)。

#1を実装するには、電話をルート化する以外の解決策はありません(AlarmsManagerは期待どおりに機能していないようで、最初のアプリケーションを処理するために別のアプリケーションを追加すると、気分が悪くなります)。足りないものはありますか?

機能#2の実装にアプローチする方法がまったくわかりません。アプリを市場に出し、インストール時に[このアプリケーションを常に最新の状態に保つ]チェックボックスをオンにすると、機能しますか?サービスの実行中に自動更新が発生しないこと、および発生したとしても、更新のインストール後にOSがサービスを再起動しないことを恐れています(機能#1が実装されていない場合)。プログラムで最新の.apkをダウンロードして開く場合でも、ユーザーは[インストール]ボタンをクリックする必要があります。更新可能な部分をスクリプト言語で実装することも検討しています。

Android APIの範囲内でこれらの問題の解決策はありますか?

編集:あなたの答えをありがとうございました、あなたは非常に役に立ちました。Androidをユーザー以外のハードウェアとして動作させる唯一の方法は、Androidをルート化することだと思われます。これがサイレント自動更新を行う唯一の方法です。cronを有効にすることで、Always onを実装できます(AlarmManagerは、クラッシュによるサービス終了の場合にイベントを発生させないようですが、別の些細なクラッシュ不可能なサービスで使用して、最初のサービスを実行し続けることができます)。

4

2 に答える 2

1

#1の場合、フォアグラウンドサービスを使用できます。センサーデータを取得する必要がある頻度はわかりませんが、AlarmManagerの問題は何ですか?しかし、応援が#1にどのように役立つかはわかりません。ファームウェアをroot化またはビルドせずに#2を実行することはできません。アプリを(で)システムアプリとしてインストールする場合/system/appは、hiddenを使用しPackageManagerて新しいバージョンをサイレントインストールできます。Market / Play自動更新の使用も同様に機能するはずですが、更新スケジュールを制御する方法はありません。そして、はい、それはあなたのサービスを再起動しません、しかしあなたがAlaramManagerを使うならば、これは問題ではないはずです。

全体として、ストックAndroidは完全に制御できる組み込みシステムではないため、費やす時間/労力によっては、ある程度カスタマイズすることもできます(または、自分に近いカスタムROMを見つけることもできます)。要件)。

于 2012-06-18T14:10:19.273 に答える
0

Re:質問#2、いくつかopen-sourceの(Apache Software License 2.0でライセンスされている)オプションがあり、それがどのように機能するかを確認できます。

  1. http://code.google.com/p/auto-update-apk-client/は、自動更新サービス(私は提携しています)のAndroidクライアントです。これは、小さく、実装が簡単で、root化されたサイレント更新をサポートします。デバイス。

  2. https://github.com/commonsguy/cwac-updaterはMarkMurphyによって作成されていますが、独自の更新サーバーを実行する必要がある場合があり、サイレント更新についてはよくわかりません。

于 2012-06-19T00:58:37.840 に答える