Closed anharu2394 closed 4 years ago
related issue: #527
related issue: #539
現時点でローカルでapiと繋いで開発するステップを教えていただきたいです on mac book pro
自分が調べた結果を共有します(正式な方法ではないかもしれません)
Covid19Radar.Functions.sln をVisual Studio for Mac で開いて Covid19Radar.Api を実行するとhttp://localhost:7071
でWeb APIにアクセスできると思います。
ビルドには.NET Coreが必要です
https://dotnet.microsoft.com/download
内部的にAzure Functions を使うようなのでもしかしたらそのセットアップも必要なのかもしれません(僕の環境ではセットアップ済みなのでわからず) https://docs.microsoft.com/en-us/visualstudio/mac/azure-functions?view=vsmac-2019
このアドレスを Covid19Radar/Covid19Radar/settings.json
のapiUrlBase
に設定するとアクセス先を指定することができます。
"apiUrlBase": "http://localhost:7071/api",
この状態でiOSシミュレーター/Androidエミュレーターを使ってアプリ側の開発ができるかと思います。
同時に起動するにはVisual Studioアプリケーションのインスタンスを新規作成する必要があると思います。
https://docs.microsoft.com/en-us/visualstudio/mac/open-multiple-solutions?view=vsmac-2019
すべての箇所を確認したわけではないのでどこかで別のエラーが出たらすみません。
@laiso さん、丁寧な回答ありがとうございます。 emulatorからの接続なので、
"apiUrlBase": "http://localhost:7071/api",
では接続できず、
"apiUrlBase": "http://10.0.2.2:7071/api",
にし、 試して見ました。
そうすると、利用規約ボタンを押すと、
Cleartext HTTP traffic not permitted
というエラーが出たので、
AndroidManifest.xmlを
<?xml version="1.0" encoding="utf-8"?>
<manifest ...>
<uses-permission android:name="android.permission.INTERNET" />
<application
...
android:networkSecurityConfig="@xml/network_security_config"
...>
...
</application>
</manifest>
とすることでこのエラーはなくなりました。
しかし、そうすると、このような画面で固まります。
また、このような例外をキャッチしました
そして、api側ではこのような例外をキャッチしました
@laiso @anharu2394
私も同じ状況で悩んでいたところ、お二方の投稿でここまで追いつくことができました。ありがとうございます。
私の環境でも同じ事象が発生しております。
少し調べたところ、エラーで出ている accountEndpoint
は CosmosDB の接続先設定らしく、 API の方の local.settings.json.example
ファイルに以下のように記述されています。
"COSMOS_CONNECTION": "AccountEndpoint=https://localhost:8081/;AccountKey=(以下略)",
おそらく、 CosmosDB に関しても Functions と同様にローカルで動作するよう環境構築が必要なのだと推測しています。
おそらく、CosmosDB emulatorというのをインストールして行えそうですが、macでインストールするのは邪道そうですね。やってみます。 https://docs.microsoft.com/ja-jp/azure/cosmos-db/local-emulator
いや、邪道というのは、結局、Windows仮想マシンにアクセスしてする方法なので、 macやlinuxで環境を構築というのはできなそうです
Mac または Linux 上での実行 現在、Cosmos エミュレーターは Windows でのみ実行できます。 Mac または Linux を実行するユーザーは、Windows 仮想マシンによってホストされる、Parallels や VirtualBox などのハイパーバイザー内でエミュレーターを実行できます。 これを有効にする手順は、次のとおりです https://docs.microsoft.com/ja-jp/azure/cosmos-db/local-emulator#running-on-mac-or-linux より
そのようですね。VM に Windows を入れるか、別の Windows PC で CosmosDB のエミュレーターだけ環境構築してローカルIPで接続するか、といったところになるかと思います。一旦後者の方法で試してみようと思っています。
とりあえず、#553 がマージされれば、このissueを閉じたいと思います。
なお、Azure Functions プロジェクトでは local.settings.json
ファイルを host.json
ファイルと同じ並びに置いておくそうなので、おそらくコミットされている local.settings.json.example
ファイルをリネームすることで有効になりそうです。
このあたりも CosmosDB のエミュレーターが準備できたら試してみます。
553 がマージされれば、サーバーを立てずにフロントエンド はおおよそ開発できるのでこの方法が最善なのではないか
おお、もうプルリク出ていたのですね。これはその通りと思います。 この issue はバックエンドも含めて環境構築したい方の参考になるかと思います。
いろいろ試しまして、
local.settings.json
の COSMOS_ENDPOINT_URI
のホスト部分を、 Windows 端末のローカルIPアドレスに書き換え/Extensinos/IConfigurationExtension.cs
の config["COSMOS_ENDPOINT_URI"]
などの値を local.settings.json
の対応する値で書き換えとすることでアプリのホーム画面まで遷移できました。
ただし、最後の IConfigurationExtension.cs
の内容を書き換えたのは local.settings.json
ファイルが読み込まれていなかった問題の苦肉の策のため、正しく読み込ませる方法は別途試してみます。ファイル名や置く場所が違うだけだと推測しています。
I develop on Mac Book Pro. I built and run Covid19Radar.Android and Covid19Radar.Functions with Visual Studio. But, when submitting to accept the Terms of Use, cause connection error.
Do you have something else to make the app work successfully? Please tell me how to setup development environment and make the app work successfully.
PC: Mac Book Pro Emulator: Pixel 3(Android 10)