

Android ソフトウェア開発とは、 Androidモバイル オペレーティングシステムを実行するデバイス向けにアプリケーションを作成するプロセスです。Google は[ 2 ] Androidソフトウェア開発キット(SDK) を使用して「Android アプリはKotlin、Java、C++言語で記述できる」と述べていますが、他の言語を使用することも可能となっています。Go 、JavaScript、C、C++、アセンブリ言語など、Java 仮想マシン(JVM) 以外のすべての言語は、 JVM 言語コードの助けを必要とします。このコードはツールによって提供される可能性があり、API サポートが制限されている可能性があります。一部のプログラミング言語とツールは、クロス プラットフォーム アプリのサポート (つまり、Android と iOS の両方) を可能にします。サードパーティツール、開発環境、言語サポートも、2008 年に最初の SDK がリリースされて以来、進化と拡張を続けています。エンド ユーザーへの公式 Android アプリ配信メカニズムはGoogle Playです。Google Play では、段階的なアプリのリリースや、テスターへのプレ リリース バージョンのアプリの配布も可能です。
Androidソフトウェア開発キット(SDK) には、包括的な開発ツール一式が含まれています。Android SDK プラットフォームツールは、完全な SDK の別々にダウンロード可能なサブセットで、adbやなどのコマンドラインツールで構成されていますfastboot。[ 3 ] Android Debug Bridge (ADB) は、接続された Android デバイスでコマンドを実行するためのツールです。Fastbootは、ファイルシステムをフラッシュするために使用されるプロトコルです。C / C++で記述されたコードは、Android Native Development Kit (NDK) を使用して、ARMまたはx86ネイティブコード(またはその 64 ビット版)にコンパイルできます。
Android 3.1 プラットフォーム (Android 2.3.4 にもバックポート) では、Android Open Accessory サポートが導入され、外部USBハードウェア (Android USB アクセサリ) が特別な「アクセサリ」モードで Android 搭載デバイスと通信できるようになります。Android 搭載デバイスがアクセサリ モードの場合、接続されたアクセサリは USB ホスト (バスに電力を供給し、デバイスを列挙する) として機能し、Android 搭載デバイスは USB デバイスとして機能します。Android USB アクセサリは、Android 搭載デバイスに接続できるように特別に設計されており、アクセサリ モードをサポートする Android 搭載デバイスを検出できるシンプルなプロトコル (Android アクセサリ プロトコル) に準拠しています。[ 4 ]
Android デバイスが外部電子機器と連携できるようにするための開発ツールには、IOIO、Android Open Accessory Development Kit、Microbridge、Triggertrapなどがあります。
Android Developer Challenge は、Android 向けの最も革新的なアプリケーションを見つけるためのコンテストでした。Google は、ADC I と ADC II に分配される総額 1,000 万米ドルの賞金を提供しました。ADC I は、2008 年 1 月 2 日から 4 月 14 日まで応募を受け付けました。2008 年 5 月 12 日に発表された最も有望な 50 の応募作品には、それぞれ開発をさらに進めるための 25,000 ドルの賞金が授与されました。[ 5 ] [ 6 ]コンテストは 9 月上旬に終了し、それぞれ 275,000 ドルを受け取った 10 のチームと、それぞれ 100,000 ドルを受け取った 10 のチームが発表されました。[ 7 ]
ADC II は 2009 年 5 月 27 日に発表されました。[ 8 ] ADC II の第 1 ラウンドは 2009 年 10 月 6 日に終了しました。[ 9 ]上位 200 のアプリケーションで構成される ADC II の第 1 ラウンドの勝者は 2009 年 11 月 5 日に発表されました。第 2 ラウンドの投票も同日に開始され、11 月 25 日に終了しました。Google は 11 月 30 日に ADC II のトップ勝者を発表し、SweetDreams、What the Doodle!?、WaveSecure がチャレンジの総合勝者にノミネートされました。[ 10 ] [ 11 ]
オープンソース愛好家のコミュニティがあり、FLACロスレスオーディオのサポートやダウンロードしたアプリケーションをmicroSDカードに保存する機能など、さまざまなカスタマイズや追加機能を備えたAndroidベースのディストリビューション(ファームウェア)を構築して共有しています。 [ 12 ]これは通常、デバイスのルート化を伴います。ルート化により、ユーザーはオペレーティングシステムへのルートアクセスが可能になり、電話を完全に制御できるようになります。ルート化には、ハッキングのリスクの増加、文鎮化の可能性の高さ、保証の喪失、ウイルス攻撃のリスクの増加など、いくつかの欠点もあります。 [ 13 ]デバイスのブートローダーもロック解除する必要がありますが、カスタムファームウェアをインストールすることも可能です。カスタムファームウェアを使用すると、古い電話のユーザーが新しいリリースでのみ利用可能なアプリケーションを使用できます。[ 14 ]
これらのファームウェアパッケージは頻繁に更新され、キャリアが承認したファームウェアにはまだ正式には含まれていないAndroidの機能要素が組み込まれており、制限事項も少ない傾向があります。CyanogenModやOMFGBはそのようなファームウェアの例です。
2009年9月24日、Googleはカスタムファームウェア内でGoogleのクローズドソースアプリケーション[ 16 ]を再配布しているという問題を理由に、改造者Cyanogenに停止命令書[ 15 ]を送付した。Android OSの大部分はオープンソースだが、 Google PlayやGPSナビゲーションなどの機能のために、携帯電話にはクローズドソースのGoogleアプリケーションが同梱されている。Googleは、これらのアプリケーションはライセンスを受けた販売業者による承認された配布チャネルを通じてのみ提供できると主張している。CyanogenはGoogleのライセンスに従い、独自のソフトウェアなしで改造版の配布を続けた。改造版のインストールプロセス中にライセンスを受けたGoogleアプリケーションをバックアップし、プロセスが完了したら復元する方法を提供した。[ 17 ]
開発上の障害としては、Android が確立された Java 標準、つまりJava SEとMEを使用していないことが挙げられます。これにより、これらのプラットフォーム向けに書かれた Java アプリケーションと Android プラットフォーム向けに書かれたアプリケーションとの互換性が失われます。Android は Java 言語の構文と意味論を再利用しますが、Java SE または ME にバンドルされている完全なクラス ライブラリと API は提供しません。[ 18 ]ただし、 Myriad Groupや UpOnTekなどの企業からJava ME から Android への変換サービスを提供するツールが市場に複数存在します。[ 19 ] [ 20 ] [ 21 ]
Android は独自の GUI クラスを提供しており、Java AWT、Swing、JavaFX は提供していません。完全な Java Beans API もサポートしていません。[ 22 ]
Android は、Google が主導するOpen Handset Allianceによって作成されました。Android プラットフォーム向けアプリケーションの開発に関する初期のフィードバックは賛否両論でした。 [ 23 ]指摘された問題には、バグ、ドキュメントの不足、不十分な QA インフラストラクチャ、公開された問題追跡システムがないなどがありました。(Google は 2008 年 1 月 18 日に問題追跡システムを発表しました。)[ 24 ] 2007 年 12 月、モバイル スタートアップ MergeLab の創設者 Adam MacBeth は、「機能がなく、ドキュメントが不十分で、あるいは単に動作しない...明らかに本番の段階には達していません」と述べています。[ 25 ]それにもかかわらず、プラットフォームが発表された翌週には Android をターゲットとしたアプリケーションが登場し始めました。最初に公開されたアプリケーションはSnake ゲームでした。[ 26 ]
Android SDK のプレビュー版が 2007 年 11 月 12 日にリリースされました。2008 年 7 月 15 日、Android Developer Challenge チームは、Android Developer Challenge の参加者全員に、SDK の新しいリリースが「プライベート」ダウンロードエリアで利用可能になったことを知らせるメールを誤って送信しました。このメールは、Android Developer Challenge の第 1 ラウンドの勝者向けに送られたものでした。Google が一部の開発者に新しい SDK リリースを提供し、他の開発者には提供していない (そしてこの取り決めを秘密にしている) という事実が明らかになったことで、当時 Android 開発者コミュニティ内で広く不満が報じられました。[ 27 ]
2008 年 8 月 18 日に Android 0.9 SDK ベータ版がリリースされました。このリリースでは、更新および拡張された API、改良された開発ツール、および更新されたホーム画面のデザインが提供されました。以前のリリースを使用しているユーザー向けに、アップグレードの詳細な手順が提供されています。[ 28 ] 2008 年 9 月 23 日に、Android 1.0 SDK (リリース 1) がリリースされました。[ 29 ]リリース ノートによると、このリリースには「主にバグ修正が含まれていますが、いくつかの小さな機能が追加されています」。また、0.9 バージョンからの API の変更もいくつか含まれています。開発されて以来、複数のバージョンがリリースされています。[ 30 ]
2008年12月5日、Googleは、上級開発者向けに設計されたSIMロック解除済みかつハードウェアロック解除済みのAndroid開発者向け端末「Android Dev Phone」を初めて発表した。これはHTCのDream Phoneを改良したバージョンだった。開発者は通常の消費者向け端末を使ってアプリケーションのテストや使用を行うことができるが、専用のロック解除済み端末や契約不要の端末を選択する開発者もいる。
2013年7月現在Android向けには100万を超えるアプリケーションが開発され[ 31 ] 、ダウンロード数は250億を超えている[ 32 ] [ 33 ] 。 2011年6月の調査では、発表時点でモバイル開発者の67%以上がこのプラットフォームを使用していることが示された[ 34 ]。Androidスマートフォンの出荷台数は2018年に12億台を超え、市場シェアは85%になると予測されている[ 35 ]。
率直に言って、Googleが既存の膨大な実装を無視しようとしている理由が理解できません。これは「自社開発主義」の悪い例のように思えます。最終的には、これが普及を遅らせるでしょう。モバイルの世界には既にJavaプラットフォームが多すぎるのに、これはまた一つ増えるだけです。
一方、これは、ターゲットとするプラットフォームの性質を本当に理解していない開発者を狙った一種の詐欺だと思うかもしれません。 私が最も不満に思うのは、上記の最初の記事を書いたIDGニュースサービスの記者Mikael Ricknäs(JavaWorldを発行しているのと同じ会社に勤めている)が、この発表の奇妙さを明確にするために、少なくともJavaとAndroidの関係について言及するべきだったと思うことです。
が実際にどれだけ普及するかは、しばらく様子を見る必要があります。このツールはまだオープンマーケットでは入手できません。Schillings氏は「午後に1,000個のMIDletsを変換する」と楽観的に語っていますが、現時点ではいくつかのプロバイダーと協力して過去のカタログを変換しています。そのため、Androidコードの書き方を学ぶことを避けたいと考えている方は、しばらく待つ必要があるかもしれません。