2017-07-14 6 views
0

私はXamarinを使用してAndroidアプリケーションを構築しています。AndroidはアプリケーションがターゲットとするAPIをどのように知っていますか?

platformBuildVersionCode="25" platformBuildVersionName="7.1.1" 

これがないではありませんしてくださいということ:逆コンパイルAPKはAndroidManifest.xmlmanifestタグにこれらの属性を示して、Visual Studioは、あなたは、Androidのための目標と最小SDKレベルを指定することができますが、これは正常に動作するようですマニフェストファイルプロジェクトではなく、マニフェストファイルが最終アプリケーションにバンドルされています。後者にはuses-sdkという値はありません。

しかし、私はこのバージョンを対象とするために実行時に期待されている機能を得ていないようです。具体的には、アプリが(APIで23 IIRCを導入)実行時のアクセス権を要求したことがない、とあなたはアプリの許可を取り消すしようとすると、このメッセージが表示されます。

このアプリは、Androidの古いバージョンのために設計されました。許可を拒否すると、意図したとおりに機能しなくなる可能性があります。

これは、株式のAndroidを実行していると、SDKのバージョンを検出すると何の問題を持っていてはならないピクセル、などのAPI 23の上に実行しているいくつかのデバイス上で注目されています。

Androidがマニフェスト値を使用していない場合、どのSDKバージョンをターゲットに設定するのですか?アプリケーションが実行時にAPI 23の機能にアクセスできるようにするにはどうすればよいですか?私はこの情報が最小SDKのバージョンとして、APKの署名でエンコードされていると信じて

+1

これらはターゲットと最小SDKを決定するための属性ではありません。 'targetSdk'と' minSdk'属性は何を表していますか? c.f. https://developer.android.com/guide/topics/manifest/uses-sdk-element.html –

+0

おそらく私は明確にすべきです:これは、事前コンパイルAndroidManifestの値ではなく、APKにバンドルされているAndroidManifestの値です。私はマニフェストを期待どおりに動作し、同様の属性を見つけた別のアプリと比較しました。 –

+0

しかし、 'uses-sdk'要素はまだ存在するはずです。理論的には、あなたの投稿で引用した2つの属性と一致する必要があります。しかし、期待した結果が見当たらないので、不一致がある可能性を考慮する必要があります。 –

答えて

0

apksignerに与えられたパラメータである:

--min-sdk-version Lowest API Level on which this APK's signatures will be 
        verified. By default, the value from AndroidManifest.xml 
        is used. The higher the value, the stronger security 
        parameters are used when signing. 

私はこの上の100%わからないんだけど、それはのように思えますこれはAndroidがマニフェストを直接使用せずに知る唯一の方法であり、マニフェスト値が実行時に見られる値と一致しない可能性がある理由を説明します。

関連する問題