
【Androidアプリ開発】4:APKファイル作成(野良アプリなどで使用)及び端末へのインストール
本記事の概要
概要
前回『プレビュー機能、実機テストとの戦い』からの続きです。
今回は「APKファイル作成(野良アプリなどで使用)及び端末へのインストール」へと挑む。
APKファイル
apkファイル
●apkファイル
実機テストにおいて、前回はUSB接続によるインストールを行いました。
こういった物理的(USBケーブル)ではなく、オンライン形式として「Wifiインストール」があります。
しかし、これはAndroid11未満なのでが出来ません。
何か良い方法はないものだろうか❓
… という訳で、今回は「apkファイル」なるものにチャレンジしたいと思います。
●AAB(Android App Bundle)
Google Play等、正規のアプリストアで公開するためのファイル形式。
●APKファイル
インストールや実行が可能なファイル形式。
つまり「apkファイル」を作成すれば、どこかにアップしてダウンロードしても良し、メールで送っても良しとなる訳です。
俗に言う「野良アプリ」もapkファイルが使われてます。
【注意点】
正規のアプリストア以外で、配信されている「野良アプリ」のインストールは危険です。
アプリのインストールは、原則、公式であるGoogle Playからのみにしてください。
※今回、「自作アプリのテスト」という事でapkファイルの作成及びインストールを行ってます。
apkファイルを作成する
●apkファイルを作成する

(上段メニュー)
Build → Generate Signed Bundles / APK を選択

「APK」を選択し「Next」ボタン押下

「アプリ署名鍵」設定の画面が出ます。

「Create new」ボタン押下で、Android Keystoreを新規作成します。

ちなみに、作成済みのAndroid Keystoreを使用する場合、「Choose Keystore file」ボタン押下となります。
※今回は新規作成するので「Create new」の方とします。
「アプリ署名鍵」の詳細については、公式を確認してください。

・Key store path:KeyStoreのパス。
「KeyStore」とは、署名鍵や署名書を保存する場所のことです。
テスト用なので、ファイル名は test.jks。
/home/test/test.jks とします(Linuxの場合)。
macOSの場合は /Users/ユーザー名/ファイル名.jks のような感じになります。
本来は、KeyStore用ディレクトリを作成し
/home/ユーザー名/KeyStoreディレクトリ/ファイル名.jks としておくべきですが、学習用なので簡略化しユーザー直下においてます。
jksファイルは、暗号鍵と証明書を保存する Java KeyStore ファイルとなります。
・Password:KeyStoreのパスワード
Confirmは、再入力確認となります。
次に、Key(証明鍵)関連。
・Alias:署名鍵のエイリアス(別名)
取り敢えずデフォルトの key0 のままにしておきます。
・Password:署名鍵のパスワード
Confirmは、再入力確認となります。
・Validity(years):有効期限
ここでは25年のままとします。
最後に、Certificate(証明書)関連。
・First and Last Name:証明書のホスト名
よく、「作成者の氏名」と間違われますが、本当は『証明書のホスト名』(ドメインなど)を入力する場所です。
今回、学習用なので test とします。
※それ以外の項目は省略

新規作成されてます。
「Next」ボタン押下。

debugは、デバッグ機能(ログ検出など)が付加されたapkファイルを作成します。
パスは app/debug/app-debug.apk となる。
releaseは、デバッグ機能無しの純粋なリリース用ファイルです。
debugのものより高速です。
パスは app/release/app-release.apk となる。
今回、学習用テストなのでdebugにしておきます。
リリースする場合はreleaseの方を選んでください。

app-debug.apk が作成されます。
apkファイルをインストールする
このapkファイルをUSBケーブルで転送しても良いのですが、折角なのでオンライン的に実機に送りたいと思います。
方法は色々とありますが、メールに送付して送信しようとしました。
GmailからスマホのAUメールに送ろうとする
↓
Gmailではセキュリティー上、apkファイル出来ない。
送付したければGoogleドライブを介して送付しなさいとエラーが出る。
↓
Googleドライブを介して送付し送信
↓
なかなか届かない
↓
調べてみると、AUメールでは6MBの送付ファイルは、容量オーバーとなり受信出来ない。
↓
仕方無いのでGmailアプリを使い「送信済みのメール」にて送付されたapkファイルをクリックする事に。

いやはや、何とも手間の掛かることでしたが、ここからさらに手間が掛かることになる

クリックすると、パッケージインストラーが出ます。

インストールをしようとするも

こうなってしまうので

この設定を

ONにします。

以前のものは置き換える。
インストール押下
GooglePlayプロテクト

GooglePlayプロテクトに掛かってしまう。

Playストアを起動します。

右上のアカウントアイコンをタップ。
そして「Playプロテクト」をタップします。

右上の歯車アイコンをタップ

スキャンの設定を

こんな風に

オフにします
で、インストールし直そうとすると
今度は「アプリはインストールされていません」とか出ます。
キャッシュを削除
調べたら、GooglePlayストアのキャッシュが残っている場合があるそうです。

設定 → アプリと通知 → アプリをすべて表示 (アプリ一覧にて)GooglePlayストア → ストレージ とタップしていく。

「キャッシュを削除」をタップする。
で、インストールし直そうとすると
またもや「アプリはインストールされていません」と出ます。
で、調査した結果、以前のを直接アンインストールしてみることに。
※アプリ名が「My Application」だった場合の例
設定 → アプリと通知 → アプリをすべて表示 (アプリ一覧にて)「My Application」 とタップしていく。

アンインストールをタップ。
で、インストールし直しますと

今度こそ出来ました✨
いやはや、実が骨の折れるというか、完成品のインストールならまだしも、テスト作業には不向きかなと思いました。
著書
『 プログラマーにおくるAndroidアプリ開発の入門書』
2024年6月時点での最新技術をぎっしりと詰め込んであるので、アプリ開発に参画するエンジニアの人は、是非ともご覧になって頂ければと思います📱