Androidの開発者 - 素早く設計し、Androidのアプリケーションを開発する方法

この記事では、開発ツール、UIインターフェイスのいくつかの側面、画像モジュール、ネットワークモジュール、データベース製品の選択、性能、セキュリティから選択し、Androidアプリケーションを開発する場合には伝えます。今のAndroidプログラマー兄弟の過半数のシェアを整理。

開発ツールの選択

開発ツールは、私はそれがGoogleの公式のAndroid開発ツールで、Androidのメーカーを選択します。jarファイルを提供していないときは、Android Studioを使用、、、また、最大のAndroid Studioに移行GitHubの上でAndroidのオープンソースライブラリのほとんどを言う必要はありませんアンドロイドスタジオ利点は、非常に簡単に、オープンソースのライブラリを統合することができます。最も重要なのは、Googleは今年の終わりまでに(GoogleがAndroidのEclipseツールのサポートを終了します)EclipseのAndroidの開発ツールのすべてのサポートを中止するので、Androidのメーカーを考え出すために、できるだけ早く転送を行うことを発表しました。

アプリのデザイン

これは何の決定、製品部門の手の中に最終決定がないように見えます、開発者のためです。それにもかかわらず、私は財部門は、材料設計のAppスタイルに設計される説得しようとします。

それは、iOSのAppのスタイルを開発するAndroidの開発者として、それはより多くの涙ああ、言ったが、一日中、私はコストと時間を節約するために、AndroidとiOSのUIのセットを共有し、多くの企業がこのようであると考えています。

iOS版では必須ですが、AndroidはAndroidが完全に不必要であるために設計されたリターンキーああ、持っているタイトルバーのAndroidアプリのバックボタンに入れて、各ページの左上隅、私は一つの共通の例を挙げてみましょう。

敬具各オペレーティングシステムのプロダクトデザイナーのスタイルや習慣を尊重するが、目立たない製品を設計していないことを願っています。材料設計は、MD仕様がリリースされて以来、そのエレガントなデザインと新鮮なスタイルは、MDを、既存の(公式のライブラリのサポートAndroid上で設計MDよりも今より多くのデザイナーや開発者の多数を集めている、まさにそのような仕様を提供しますでもCSS、HTML、JavaScriptのウェブデザインのスタイル)が、より多くの火災です。このため、アプリケーションの設計スタイル、私の部分をやって材料設計のために、多分あなたは、Androidのデザインは、素材・デザインを逃さないでください逃しました。

いくつかの関連リンク:

  • 材料設計公式サイト
  • マテリアルデザインのカラーテンプレート
  • MDウェブサイトのデザインケース
  • MD-スタイルAndorid引き出し出典:アンドロイド-MaterialDesign-NavigationDrawer
  • MD-スタイルアプリのソース(そこ姉妹オハイオ州):Androidの-MaterialDesign-DBMZ

バージョンのサポート

アンドロイドの最低バージョンがサポートされるようにするには、市場シェアのさまざまなバージョンを参照して、実際には、自分のアプリケーションを決定する可能性が最も高いの統計によると、私たちの最低限のアプリケーションサポート2.2現時点では。個人ビューは、いくつかのバージョン2.xユーザーがまだありますが、ということですが、実際には、携帯電話の交換素早く、より優れたユーザーエクスペリエンスのために、そして(バージョンが必要な多くのサードパーティのライブラリを持っている)APIのアップデートを適用するために、すべきサポートされる最小バージョン、約3.0適切な、そのAPIレベル11を上げます。

アプリケーションの設計フレームワーク

私は良いアーキテクチャが存在しない場合、コードは機能モジュールの結合度が高くなります維持が肥大化し、困難となり、アプリケーションが成長し、機能モジュールの増加に伴って、私たちは経験を持っていると信じています。アプリは、それがモジュール間の結合は、また多重化を容易に低減することができるように、完全なアプリは、いくつかの独立したモジュールに分割し、モジュール式であるようにすることができます。

1.ネットワークモジュール

そこのアプリケーションの非常に少数のスタンドアロンバージョンは、それらのほとんどはネットワーキングを必要とし、あるサーバーからデータを要求するので、ネットワークモジュールモジュールが不可欠です。あなたは今、私はokHttpやボレーを選ぶだろう、オープンソースのフレームワークを使用することができ、個々の、特に多数のGitHubのオープンソースのWebフレームワークは、多分私はより良いネットワークフレームが表示されています。バグが発生したとき、彼らは何もしないように、それを制御することができなければならない、あなたはオープンソースのフレームワークを使用している場合、あなたがソースコードを読まなければならないことに注意してください。もちろん、あなたはまた、独自のネットワークモジュールを書くことができ、私たちの現在のAppネットワークモジュールは、完全に自分の書き込みになるようにバグが早くネットワーキング・プロセスの詳細に対処するために世話をして、問題を見つけることができたときに書かれたコードに精通メリット自身、例えば:

HTTPS、HTTPS証明書の検証のための(1)のサポート(現在の慣行の多くは、すべてのHTTPS証明書デフォルトで許可され、実際には、そうすることは安全ではないと本当に証明書の検証を行う必要があります)

(2)サポートのWAPアップインターネットアクセス、モバイル、チャイナユニコム、テレコムのプロキシ設定

(3)リダイレクション、データ圧縮との伝送をサポート

(4)その他の注目すべき問題

独自のネットワークフレームワークは完全にこれらの詳細を扱うことができます書くが、時間コストは比較的大きいです。あなたは、オープンソースのフレームワークを使用する場合は、一般的にこれらの詳細に対処していないので、我々は、サードパーティ製のフレームワークにいくつかの変更を行うことができ、そのような費用は、多くの時間を節約します。

2.画像​​管理モジュール

絵も不可欠な要素でアプリが、大きな絵がメモリによって占有され、画像管理フレームワークは、そのため、特に重要なのは、悪い額縁も、クラッシュを引き起こすメモリリークが発生するのは簡単です。もちろん、あなたがダウンロード写真、デコード、キャッシングや他の重要な側面を達成するために、独自の額縁(私たちは現在、そうしている)を実装することができます。個人的な推奨事項がいくつかの良い素材を使用することができ、それは私たち自身の音と映像管理よりも効率的かもしれません。私は、次のいくつかの写真ギャラリーをお勧めします:

(1)グライド、グーグルは、Googleの写真のように公式のAppの一部は、使用するだけでなく、より多くを説明していますか?

(2)フレスコ、Facebookのオープンソースのライブラリ関数を超強力な、WEBP、GIF、JPEG、プログレッシブ表示をサポートし、キーは画像メモリのオーバーヘッドが大幅に削減されながら、画像メモリの設計です。

(3)Androidのユニバーサル・画像・ローダーは、上記のギャラリーが表示されます前に、個人的なアプリケーションはまた、それを使用する前に、最もホットなように見えます。

(4)ピカソは、スクエア、オープンソースのライブラリーは、グライドはピカソデザインを参照すると言われています。

3.ローカルデータベースモジュール

たぶん、あなたのアプリケーションは、ローカルデータベースを使用する必要があり、個人的に私たちが使用してマルチスレッドのデータベースのアップグレードに注意を払う必要があると考えて、大幅にsqliteの上のあなたの操作を容易にします、サードパーティのライブラリを使用して、あなたは、このようなActiveAndroidやgreenDAOとして人気のORMフレームワークを使用することをお勧めしますデータベースの同時実行性の問題。

4.ファイル管理モジュール

アプリケーションは、確かに、このようなコンフィギュレーションファイル、画像、ビデオ、オーディオ、SharedPreferencesファイルなどのいくつかのファイルを、含むことになります。私たちは、グローバルな文書管理モジュールを追加したファイルを担当しています、削除、変更、および他の操作ができます。また、マルチスレッドのダウンロード、HTTPおよび他の機能をサポートする必要性をダウンロードするためのファイル圧縮をサポートする必要性、ファイルのアップロードおよびダウンロード操作。

5.コンポーネント間通信機構の組立

アプリケーション、通信における必須成分のために、通信タイプ、すなわち、全ての登録が応答することができ、すなわち、応答メッセージの受信者を指すだけ点があり、反対側の点は同様のブロードキャストメッセージであり、通信反対ポイントをポイント・ツー・ポイントに分割することができますメッセージ。アンドロイドでは、典型的には、メッセージ・メカニズムを使用して実装が、メッセージを結合するための機構が比較的高いです。そこにそのようなEventBus、オットーと大幅コンポーネント間の結合を低減することができる他のイベントバスフレームワークのようないくつかの通信フレームワークは、またあるが、通信を指すように完璧な点を達成することができない、そのメッセージ機構とイベントバスと組み合わせて使用​​されるメカニズムをお勧めします。

前記データ処理フレームワーク

実際に、それは、対応するモデルに解決する必要がある、(サブスレッドダウン)データの要求は、ネットワークモジュール復帰データ(典型的にはJSON形式)を介して、JSONデータをそのままレイヤを表示するために使用することができない場合、フレームデータ処理を有するべきです一方、必要に応じて、データキャッシュは、これらのプロセスは、フレームデータの処理に抽象化することができます。このフレームワークは、データは、アクティビティモデルまたはフラグメントに返却され、許容可能なURLがデータを要求したとみなすことができます。JSONデータ分析のために、デフォルト値が比較的完璧で、高速で安定し、fastjsonをお勧めします。

7.スレッドのスケジューリングモジュール

実際には、Androidのは、など、キャッシュをクリアし、写真をダウンロードし、そのようなデータを要求するなどのアクションをたくさん持っている多くの場合、時間の最も直接的なスレッドから、子スレッドで実行されるんで、そんなに混乱やスレッドを行います管理が困難になります。だから、抽象的な必要がある場合は、スレッドプールのスレッドを維持スレッドのスケジューリングモジュールは、その後、あなたはとても一元管理を容易にするために、やってスレッドのスケジューリングモジュールによって糸を取ることができます。もちろん、サードパーティのライブラリのスレッド操作我々は、管理するために、スレッドのスケジューリングモジュールに復帰することはできませんが、スレッドに関連する他の操作は、統一された治療法である必要があります。

8.ビジネス層

ビジネス層は、おそらく四つの成分、断片、ビューで、ネイティブコンポーネントのパフォーマンスが最高なので、あまりカスタムコンポーネントを使用し、可能な限りネイティブコンポーネントを使用することをお勧めします。また、MVP、MVVMパターンと他のが個人的には、利益が失うことになる妥協点を模索するために、短期では、欠陥のあると信じて、MVCパターンは、のような、独自のロジックを管理する限り、良いデザインで使用することをお勧めします。

9.APK動的ローディング機構

アプリケーション、拡張の増加に伴い、多くはまた、プラグイン技術と呼ばれるメカニズムAPKアプリの動的ロードを、採用しています。私は、実際のアプリケーションに適用されていないので、それほど不便はいくつかのコメントを発表しました。私は個人的に、このメカニズムは非常に有望であることを、このメカニズムは、デカップリング、拡張機能やアプリケーションの部分的なアップグレードを助長することになると思います。ApkPlug-モバイルアプリケーションと動的負荷のモジュラー溶液APKオープンフレームワーク:特定の参照は、市販溶液であってもよいです。

10.Appセキュリティの考慮事項

セキュリティ問題のアンドロイドアプリの非常に少数の人々は注意を払う、これは確かに非常に深刻な問題であるが、多くの場合、アプリケーションのいくつかの良い人を割りました。それは.soのライブラリで書かれたコアアルゴリズムのいくつかは、それが短い、などの予防策でAPKは、APKシェル・メカニズムを使用することも可能で、パッケージ、少なくとも難読化されたコードに加えて、サーバー側の重要なロジック、データの暗号化などの要求が、決してないことを示唆しましたあまりにも多く。

Scattershotは、論理的に息不足しているコンテンツがあるかもしれない、フォローアップを補完し、向上させる、そんなに書きます。上記の原理によれば、少なくともあなたが良いアプリケーションを開発することができればと思います。

あなたがここに表示された場合、私にはよく書かれた記事は、賞賛の聖歌を与える感じ?あなたが改善することが必要と思われる場合は、私にメッセージをお願いします。深刻なお問い合わせ、補正不足になり、ありがとう〜

最後にAndroidのプログラマのために、上記の知識に加えて、私は、高レベルのUI、パフォーマンスの最適化、モバイルの建築家、NDK、ハイブリッド開発(ReactNative + Weex)マイクロ文字のアプレットを含むがこれらに限定されない、一緒にいくつかの情報を入れるために皆のためにここにいる、フラッターAndroidやその他の高度な実践技術のすべての側面、私たちが手助けをしたい、だけでなく、学ぶために、情報の検索にオンラインみんなの時間を節約し、あなたも親しい友人が一緒にダイナミックな学習を共有することができます!

ここでは、より詳細な研究ノートシステムアーキテクチャルート突くを拡張する必要があります。

無料の学習リソース(アーキテクチャ+映像+インタビューテーマ別の研究ノートの文書)を受信するために必要な高度なAndroidのアーキテクチャ

ます。https://juejin.im/post/5d0260736fb9a07eb3097601で再現

おすすめ

転載: blog.csdn.net/weixin_34101784/article/details/93182365