6

私はAndroidのバックエンドとしてOpenMRSを使用して医療記録システムの開発に取り組んでいます。OpenMRSは、HibernateやSpringなどのいくつかの非常に重いライブラリに依存しています。

OpenMRSアプリケーション全体を「デキシング」すると、Androidのclasses.dexファイル形式でも大きすぎるファイルが生成されます(このサイズ制限はすでに十分に文書化されています)。これを回避するために、私は現在、依存関係から複数のdexファイルを作成し、Androidのdexクラスローダーを使用して実行時にそれらをロードする作業を行っています。

サーバーのモバイルバージョンが実際に使用される方法のため、実際の処理要求は、大きな依存関係にもかかわらず非常に低くなります。ここでは、自分の電話でエンタープライズサーバーを実行しようとはしていません。

これを設計するために何週間も時間を費やす前に、開発者コミュニティに質問したかっただけです。この戦略は単なる夢のようなものですか?これらすべてのライブラリをロードすると、バイナリ全体がRAMにロードされ、システムが壊れますか?そのようなアプリケーションを最適化する良い方法はありますか?私がここで見逃している明らかな問題や解決策はありますか?

4

1 に答える 1

1

簡単な答えは:しないでください。

長い答えは、ほとんどのデバイスはまだ比較的少量(40〜128メガのRAM)のメモリを各ヒープに割り当てるだけであるということです。ロジックの大部分、つまりライブラリとヘビーウェイトコードがサーバー上に存在し、モバイルアプリがサーバーから軽量データ(JSON?)を読み取って表示するように、アプリの設計について本当に考える必要があります。デバイスは、実際には位置データなどのネイティブアイテムのみを利用し、Androidユニバースの他の部分と一貫性のあるインターフェースをユーザーに提供する必要があります。それを超えて、ネイティブアプリからできるだけ多くのロジックを排除する方法を探す必要があります。それをより安全に保つ以外の理由がない場合。Androidアプリケーションのリバースエンジニアリングは簡単であり、サーバー側に保持すればするほど、安全性が高まります。

于 2011-09-12T20:53:55.173 に答える