error MSB6006: "java.exe" はコード 1 を伴って終了しました。

Visual Studio の Xamarin を使って Android アプリを作成しています

 

google:リリースに向けてアプリケーションを準備する

Android アプリのリリースに向けて

マイクロソフトのサイトに従い手を進めていったものの

途中で行き詰りました。
 

 

ビルドしたらエラー

リンカーとProGuardを適用してビルドしたらエラーになりました

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

 

ビルドの出力の設定

表示されたエラーでウェブ検索したものの良く分からない

「コード 2」の方の話は良く見かけて試したもののもちろん回避はできませんでした

ビルドのログと向き合わないと解決できなそう

 

[ツール] - [オプション]を開き、

ビルド/実行を開いて「MSBuild プロジェクトビルドの出力の詳細」を「詳細」にします

f:id:rabbithop:20190611123700g:plain

 

設定後にビルドしてみると、ビルドログがたくさん

警告もたくさん

PROGUARD : warning : com.google.android.gms.internal.zzas: can't find referenced class android.net.http.AndroidHttpClient

PROGUARD : warning : there were 84 unresolved references to classes or interfaces.

PROGUARD : warning : there were 2 unresolved references to program class members.

error MSB6006: "java.exe" はコード 1 を伴って終了しました。

 

警告は関係ないと思い込んでいましたが、

java.io.IOException: Please correct the above warnings first.

 

どうやら、この警告は無視できないのね・・・

 

ProGuard.cfg の記載例

ProGuard.cfg ファイルに、下記記載をすることで上記のエラーは回避できました

エラーに応じて記載内容を変えてあげれば良さそうです

 

-dontwarn com.google.android.gms.**
-dontwarn com.google.ads.**
-dontwarn mono.google.android.gms.ads.**
-dontwarn org.apache.http.**
-dontwarn android.net.http.**

-keep class android.support.v7.widget.** { *; }
-keep class android.support.v4.widget.Space { *; }

dontwarnは警告無視、keepは該当クラスを残しておくということみたい
そのうちこのあたりの設定の正確な意味も理解したいです