web-dev-qa-db-ja.com

Android NDK:警告:APP_PLATFORM Android-9はAndroid:minSdkVersion 8よりも大きい

Cocos2d-xプロジェクトをcygwinでコンパイルすると、次の警告が表示されます。

`/cygdrive/e/project/MyGame/proj.Android `
/cygdrive/e/Android-ndk-r8e/build/core/add-application.mk:128: Android NDK: WARNING:APP_PLATFORM Android-9 is larger than Android:minSdkVersion 8 in ./AndroidManifest.xml

NDKバージョンr8eを使用しています。 AndroidManifest.xmlの最小SDKバージョンは8ですが、APP_PLATFORMをAndroid-9として指定していません。これを8に変更するにはどうすればよいですか。

これが問題を引き起こす可能性があると思うので、誰もこの警告を解決する方法を教えてもらえますか?.

40
glo

ランタイムとしてAndroid-9を使用しているようです。 APP_PLATFORM := Android-8あなたのApplication.mkファイルと警告が消えます。

60
j.holetzeck

警告/エラーの原因は、マニフェストで指定された「最小」よりも高いターゲットプラットフォーム用のネイティブコードをコンパイルしていることを知らせることです。基本的には、「古いOSでサポートされていない機能の使用には注意してください。 Application.mkの変更は問題なく、コンパイルされたコードに実際の悪影響はありません。

~~代替ソリューション。

R8では、ビルド設定を変更して、エラーではなく警告と見なすことができます。これはr8では機能しましたが、r9では部分的な修正にすぎません。

NDK rev r9の場合(他のrevsでも機能しますが、場所/行番号は異なる場合があります)

$ {NDK} /build/core/add-application.mk行138

行の先頭に「#」を追加します。

#$(call __ndk_info、WARNING:APP_PLATFORM $(APP_PLATFORM)はAndroid:minSdkVersion $(APP_MIN_PLATFORM_LEVEL)in $(APP_MANIFEST))よりも大きい

1文字、30秒の修正...ネイティブコードをデバッグします。

13
DevByStarlight

ネイティブライブラリをminSdkVersionよりも新しいバージョン用にコンパイルする場合は、Eclipseを構成してエラーを警告に変更するだけです。これは、Javaコードが古いバージョンのAndroidのネイティブライブラリをロードしないことを知っている場合に役立ちます。(警告:保証しない場合、ネイティブライブラリをロードするAndroid APP_PLATFORMで指定されたものより古いバージョンでは、満たされていない動的ライブラリリンクがある場合、アプリが失敗およびクラッシュする可能性があります。たとえば、APP_PLATFORMが9でOpenSLES Android 2.2以前でJNIを使​​用してみてください。ただし、Java側がこれを知っていて、loadLibraryが古いバージョンで呼び出されないことを保証する限り、大丈夫だよ。)

Googleの誰かが( このリンク で)提供する次の手順に従って、Eclipseの設定を変更できます(ただし、以下の重要な注意事項も参照してください)。

Eclipseの場合:

- Window -> Preferences -> C/C++ -> Build -> Settings
- Select CDT GNU C/C++ Error Parser
- In the Error Parser options at the bottom, add a new entry with the following contents:

Severity: Warning
Pattern: (.*?):(\d+): Android NDK: WARNING:(.*) 
File: $1
Line: $2
Description: $3

重要!Googleの担当者が注意しなかったことは、設定の[上に移動]ボタンを使用して新しいルールを移動する必要があることですそれ以外の場合、他のより一般的なルールがそれを覆い隠し、機能しません。

1
Todor K.