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に変更するにはどうすればよいですか。
これが問題を引き起こす可能性があると思うので、誰もこの警告を解決する方法を教えてもらえますか?.
ランタイムとしてAndroid-9を使用しているようです。 APP_PLATFORM := Android-8
あなたのApplication.mk
ファイルと警告が消えます。
警告/エラーの原因は、マニフェストで指定された「最小」よりも高いターゲットプラットフォーム用のネイティブコードをコンパイルしていることを知らせることです。基本的には、「古い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秒の修正...ネイティブコードをデバッグします。
ネイティブライブラリを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の担当者が注意しなかったことは、設定の[上に移動]ボタンを使用して新しいルールを移動する必要があることですそれ以外の場合、他のより一般的なルールがそれを覆い隠し、機能しません。