XamarinでAndroidアプリ公開(内部テスト)

VisualStudio2019のXamarin.Formsでのバーコードアプリ開発ですが、テスト版をGoogle Playにリリースしました。 つまづいたポイントをメモ。

(1)ReleaseモードにしてProGuardでコンパイルしたらエラー

「 ”java.exe” はコード 1 を伴って終了しました。」

というエラーです。直接の解決はできなかったのですが、下図の通りshrinkerを「ProGuard」から「r8」に変更したらエラーが出なくなりました。これに伴い、Dexコンパイラも「d8」に変更しています。なんだったんだろうか?

(2)文字コードのエラー

履歴データをCSVで吐き出す機能を付けたのですが、文字コードにShift-JISを使っていて、ReleaseモードでCSV出力するとエラーになりました。

デバッグモードのときは「共有ランタイムの使用」が有効になって問題は出なかったのですが、以下のように、「サポートされているその他のエンコーディング」で「CJK」を指定すればReleaseモードでもOKでした。

(3)Rsourceに指定した画像ファイルが画面に表示されない

全く原因が分からなかったのですが、Xamarin.Formsのバージョンを上げたら治りました。よく分からんです。

「4.8.0.1451 → 4.8.0.1534」

メイン画面のメニューボタンはにイメージボタンを使っていたので、起動したら真っ黒な画面しか表示されなかったときは少し焦りました。デバッグモードの時は問題なかったのですが・・・。

(4)2020年8月からAndroid9.0のアプリは新規公開できなくなった

Releaseモードで手持ちのスマホでは問題がなくなったところでGoogle Playへの公開作業です。

そして、、、Google Play Consoleでのアップロードの途中で「Android10以降で作ってね」とエラーになりました・・・。

知りませんでした。ターゲットフレームワークはAndroid9.0で作っていました。後戻りして最初からコンパイルしなおしです。

(5)Android10に上げたらコンパイルエラー

振り出しに戻ったら、一歩目でいきなりエラーです。まあ、しょうがないですね。ここはがまんのしどころです。

java関連のエラーがうじゃうじゃと10件以上。

開発環境のOSはWindows10。nugetパッケージの参照パスが漢字のユーザー名を含むパスになっていて、こいつが悪さをしていたようです。ユーザーをAdministratorに切り替え、参照パスに日本語文字を含まないようにしてからコンパイルするとうまくいきました。

日本語を含む参照パスが悪さをすることって時々あるけど、Android9.0のときはエラーにならなかったのは今でも不明。おかげで気づくまで半日ほどかかってしまった。

こんな感じで回り道しながらも、ようやく内部テスト版を公開できました。

今日はここまで。