Closed keiji closed 3 years ago
Xamarin.AndroidのFast Deploymentまわりは、最近わりと大がかりな書き換えがあったはずなので(参考)、リグレッションがあったのでしょう。Command too longはadbから出ているものなので、fast deploymentを有効にすると「間違いなく出る」状態なのだと理解しています。
issue #40 でVSMacのUI上でFast Deploymentを無効にしていてもどうやらそれが効いていないようだというのは xamarin-android本家にあるissueのコメント https://github.com/xamarin/xamarin-android/issues/5710#issuecomment-799283044 にある(というよりリンク先のVScommunityの投稿)にある通りです。
IDEだけの問題であれば、われわれ(?)みたいにちょっと詳しい人間は.csprojファイルを直接編集して対応することもあるのですが、これはXamarin.Androidのツールチェインのレベルの問題なので、このレベルでFast Deploymentの設定として回避するのも無理そうです。その代わり、上記コメントの通り回避策として<EmbedAssembliesIntoApk>true</EmbedAssembliesIntoApk>
を <PropertyGroup>
の中に追加してやれば、ビルドとデプロイメントは(多少遅くはなりますが)正常に動作する可能性が上がります。(その他の引数がまだtoo longにならないか次第)
バグ自体は内部的に修正済みでリリース待ちのようです(この辺の実装はXamarin.Androidでもクローズドソースの部分なので、われわれがXamarin.Androidチームの外側で修正するのは無理でしょう)。割と重大なバグなので数日内に出る可能性もあると思います(希望的観測)。
ありがとうございます。 次のバージョンが出たら試してみて、安全が確認できたらアップデートすると言うことでいきます。
あ、Xamarin.Androidの11.2.2.1
リリースされてた。
Visual Studio for Mac 8.9.2とXamarin.Android 11.2.2.1で正常にAndroidアプリをビルドでき、エミュレーター・実機へのインストールとデバッグ実行ができることを確認したのでcloseします。
Xamarin.Android
Version: 11.2.2.1 (Visual Studio Community)
Commit: xamarin-android/d16-9/877f572
Android SDK: /Users/keiji_ariyama/Library/Android/sdk
Supported Android versions:
5.1 (API level 22)
SDK Tools Version: 26.1.1
SDK Platform Tools Version: 31.0.0
SDK Build Tools Version: 30.0.2
Build Information:
Mono: 5e9cb6d
Java.Interop: xamarin/java.interop/d16-9@54f8c24
ProGuard: Guardsquare/proguard/v7.0.1@912d149
SQLite: xamarin/sqlite/3.34.1@daff8f4
Xamarin.Android Tools: xamarin/xamarin-android-tools/d16-9@d210f11
一度だけ実機への転送中に次のエラーが発生しました。設定を開いてFast DeployをON/OFFし、メッセージの指示にあるプロジェクトファイルのEmbedAssembliesIntoApk
をtrue
に設定すると問題なくdeployが完了しました。その後、ためしにEmbedAssembliesIntoApk
をfalse
に戻してもうまく動くのでよくわからないというのが正直なところです。
Fast Deploy Application Files
/Library/Frameworks/Mono.framework/External/xbuild/Xamarin/Android/Xamarin.Android.Common.Debugging.targets(590,5): error XA0129: Error deploying files/.__override__/Covid19Radar.dll. Please disable fast deployment in the Visual Studio project property pages or edit the project file in a text editor and set the 'EmbedAssembliesIntoApk' MSBuild property to 'true'.
Done building target "_Upload" in project "Covid19Radar.Android.csproj" -- FAILED.
Done building project "Covid19Radar.Android.csproj" -- FAILED.
Build FAILED.
お、とりあえず一応は動作しているみたいなのでなによりです。
このあたりはアプリケーションのデバッグ デプロイメントまわりの問題なので、エラーが出たのはローカルにあったビルドのstale cacheのせいかもしれないし、IDE側が、target側に以前デプロイされたファイルが残っているのを考慮せずに「差分更新は不要っぽい」と判断して以前のデプロイメントのままで実行している可能性もまああります。が、挙動不審であればとりあえず EmbedAssembliesIntoApk
で安全側に倒せば、引き続き何とかなるでしょう。
Describe the bug Xamarin.Androidを11.2.0.21にアップデートすると、ビルド後に実機/エミュレーターでデバッグ実行するときに
Command too long
が発生する。To Reproduce 再現試験はお薦めしない。 一度この現象が発生すると、不具合のないXamarin.Androidに更新(ダウングレード含む)を行うまで現象は改善しない。
Steps to reproduce the behavior:
Debug
またはDebug_Mock
に変えてエミュレーター/実機でデバッグを実行Expected behavior エミュレーター/実機でアプリが起動してデバッグできる
Desktop (please complete the following information):
Additional context Stackoverflowに類似の報告が見つかっている。
In Visual Studio 16.9.0 Android “deploy to device” error - Command too long https://stackoverflow.com/questions/66465262/in-visual-studio-16-9-0-android-deploy-to-device-error-command-too-long
Android Build Optionの"Use Fast Deployment"を無効化にするという方法については試行したものの、そもそも現在のCOCOAに含まれるCovid19Radar.Androidプロジェクトでは"Use Fast Deployment"は無効になっている。しかし、Deployment時のログには「Fast Deployment」が記録されているので、オプション選択が正常に機能していない可能性がある。 また、"Use Fast Deployment"を有効にして「OK」ボタンでダイアログを閉じても、次にダイアログを開いた時には無効になっている。
結局、https://github.com/cocoa-mhlw/cocoa/issues/40#issuecomment-793821555 と同様、Xamarin.Androidのバージョンを「 11.1.0.17 」にダウングレードして
解決した。 解決していないので引き続き情報を収集する。アップデートは慎重に!!