3

更新プログラムを作成しようとしている Xamarin Android アプリケーションがあります。すべてが接続されて機能し、最終的にリリース APK を作成したとき、Google Play から、アップロードされた APK には 2 つの追加のアクセス許可が必要であるというメッセージが表示されました。外部ストレージの読み書きに!私のアプリケーションではこれらのアクセス許可はまったく必要ありません。プロジェクトの Android マニフェストを調べてみましたが、そのような権限がそこにリストされていませんでした。アプリケーションの古いバージョン (古いバージョンの Xamarin Android を使用) では、これらのアクセス許可は必要ありませんでした。Xamarin が、指定していないアクセス許可を突然挿入するのはなぜですか?

これは、どのアプリケーションでも当てはまることを確認できます。それを使用して新しいAndroidアプリを作成したばかりで、外部の読み取り/書き込み権限が必要ですが、その要件を無効にする明確な方法はありません

4

2 に答える 2

3

パッケージ/コンポーネントからのアクセス許可

Xamarin コンポーネントと Xamarin に適した NuGet パッケージがどこにでもあるため、AssemblyInfo.csこれらの参照からアクセス許可を取得できるようになったことは注目に値します。

一部のライブラリは特定の権限がないと役に立たないため、これは問題を回避するのに理にかなっています。ただし、それらが常に必要なわけではない場合は、新しいパッケージまたはコンポーネントを参照するだけで、実際には必要のないアクセス許可を導入できます。

NuGet パッケージに組み込まれているオプションのアクセス許可については、余分なアクセス許可のオーバーヘッドを回避するために、それらを使用せずに独自のライブラリをコンパイルする必要がある場合があります。ソースコードが自由に利用できないパッケージでこれらを簡単に識別する優れた方法は見つかりませんでした。ILSpy はAssemblyInfo.cs属性を出力していないようでした。

残念ながら、古い Xamarin.Android プロジェクト テンプレートでは、これらのアクセス許可は既定で追加され、不要な場合は削除できるというメッセージが表示されていました。

// Add some common permissions, these can be removed if not needed
[assembly: UsesPermission(Android.Manifest.Permission.Internet)]
[assembly: UsesPermission(Android.Manifest.Permission.WriteExternalStorage)]

これらは非常に一般的なパーミッションであるため、ほとんどの作成者とライブラリの消費者は気付かないでしょう ( Xam.PCL.Plugins の Settings ライブラリで発生した可能性があります)。

于 2014-10-29T00:07:03.997 に答える