ElixirDesktopでスマホアプリを作る - Android実機に転送する（Google Drive経由）


こんにちは！
プログラミング未経験文系出身、Elixirの国に迷い込んだ？！見習いアルケミストのaliceと申します。
今回はElixirDesktop + Phoenix1.7のスマホアプリをAndroidスマートフォン実機に転送したいと思います。

■「ElixirDesktopでスマホアプリを作る」シリーズの目次
①[Windows11+WSL2に環境構築](https://qiita.com/Alicesky2127/items/5f9a1c6496b1c083720f)
|> ②[Phoenix1.7のアプリを起動](https://qiita.com/Alicesky2127/items/7650f5650069b56bc173)
|> ③[LiveViewを使用してCRUDの機能を実装する](https://qiita.com/Alicesky2127/items/ada99a6b958be18ed270)
|> ④[Android実機に転送する(Google Drive経由)](https://qiita.com/Alicesky2127/items/623628ef64a3295fd8c5)

# 目的
前回作成したCRUDアプリをAndriodスマートフォン実機に転送します。

## 実行環境
(PC)
Windows 11 ＋ WSL2 ＋ Ubuntu 22.04
android-studio　Giraffe | 2022.3.1

(スマホ)
Zenfone8
Android 13


# 前提条件
本記事は、[前回の記事](https://qiita.com/Alicesky2127/items/ada99a6b958be18ed270)までの実施が完了している前提で進めます。


# 実機転送上の注意
WSL2経由の場合、wi-fi経由での実機転送ができません。[^1]
したがって、Google Driveにビルド済みのapkファイルをアップロードし、それをスマホ実機でダウンロードすることで転送を実現します。

### apkファイルとは？
アンドロイドアプリケーションパッケージ(Android application package)の略称で、アプリで用いられるプログラムファイルや画像・音声等のデータファイルのような複数のファイルが整理された状態で格納されているファイルのこと。[^2]


# PC側で実施すること
## apkファイルのアップロード
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/677280/a3a3f2a4-4f26-248e-b966-09f86151ce07.png)
下線部を左クリックし、`build/outputs/apk/debug/app-debug.apk`の順で選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/677280/096c89ee-4849-c451-5949-f79c4a58951a.png)
ファイルの場所が分かるので、このapkファイルをGoogle Driveにアップロードします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/677280/0f3bd670-fefa-216d-8d56-df2d5db48ddc.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/677280/c5b25de4-6440-5cc1-40d2-121471934947.png)

# スマホ側で実施すること
## 開発者向けオプションの有効化
開発者向けオプションを有効化します。

こちらの記事の「スマホ本体にアプリを転送しよう」の手順で実施できます。

https://qiita.com/t-yamanashi/items/f593731dd7b894635d66#%E3%82%B9%E3%83%9E%E3%83%9B%E6%9C%AC%E4%BD%93%E3%81%AB%E3%82%A2%E3%83%97%E3%83%AA%E3%82%92%E8%BB%A2%E9%80%81%E3%81%97%E3%82%88%E3%81%86

## apkファイルのダウンロード
PCと同じGoogleアカウントでログインし、Google Driveからスマホ本体にダウンロードします。
その後、ファイルマネージャーからapkファイルをタップ。
インストールが始まるので、終わったら「開く」をタップ。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/677280/8f477527-7940-bf53-ba03-f5d345dd5eb6.png)

できました(^▽^)/


<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">やった！スマホアプリの実機転送できた(^▽^)/！ <a href="https://twitter.com/hashtag/piyopiyoex?src=hash&amp;ref_src=twsrc%5Etfw">#piyopiyoex</a> <a href="https://t.co/xGThaAiTwj">pic.twitter.com/xGThaAiTwj</a></p>&mdash; alice (@Alicesky2127) <a href="https://twitter.com/Alicesky2127/status/1687748829289107456?ref_src=twsrc%5Etfw">August 5, 2023</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>


# 実機にインストールできないとき
## Google Playプロテクトによる保護
「詳細」を押下後、「インストール」を押下する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/677280/f4a5ce3e-222a-0ab7-121b-cec371db3811.png)


## apkファイルが壊れている
「パッケージが無効の可能性があるため、アプリをインストールできませんでした。」のエラーが出る場合
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/677280/58993aa7-340c-8e75-ff2c-29847f4e2857.png)

以下の手順でapkファイルを作り直します。
1. メニューから　Build→Clean Project
2. メニューから　Build→Rebuild Project

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/677280/594245de-276f-b19a-2b1e-f77f07b53102.png)




#### (余談)試したけど解決にはつながらなかったもの
(PC側)
1.ビルドしなおして、apkファイルを再転送
2.android studioのバージョンアップ
3.スマホ実機のファイルマネージャーのキャッシュを削除して本体を再起動
4.ビルド環境から一度対象のapkファイルを消してビルド。apkファイルを再転送
(スマホ側)
1.不明なアプリのインストールの許可



# ～Elixirの国のご案内～
↓Elixirって何ぞや？と思ったらこちらもどぞ。Elixirは先端のアレコレをだいたい全部できちゃいます:laughing::sparkles::sparkles:

https://qiita.com/piacerex/items/09876caa1e17169ec5e1

↓ゼロからElixirを始めるなら「エリクサーチ」がおすすめ！私もエンジニア未経験から学習中です。

https://elixir-lang.info/topics/entry_column


↓[We Are The Alchemists, my friends!:bouquet:](https://qiita.com/torifukukaiou/items/6bcd5bbb80df9e594e9e "Awesome-san's Awesome article")[^10]
Elixirコミュニティは本当に優しくて温かい人たちばかり！
私が挫折せずにいられるのもこの恵まれた環境のおかげです。
まずは気軽にコミュニティを訪れてみてください。[^11]


https://speakerdeck.com/elijo/elixirkomiyunitei-falsebu-kifang-guo-nei-onrainbian


[^1]: USB経由で転送、あるいはブリッジの設定など他に方法はあるようですが、今の私のレベルで理解できる手段として、Google Drive経由でapkファイルを送るという方法をとります。

[^2]: https://gimo.jp/glossary/details/apk_file.html

[^10]: @torifukukaiouさんのAwesomeな名言をお借りしました。Elixirコミュニティを一言で表すと、これに尽きます。


[^11]: @kn339264さんの素敵なスライドをお借りしました。Elixirコミュニティはいろんな形で活動中！