Android ndk 如何摆脱NDK编译器警告:“应用程序平台更大…”和“包无效”

Android ndk 如何摆脱NDK编译器警告:“应用程序平台更大…”和“包无效”,android-ndk,Android Ndk,我有下面的Application.mk APP_PLATFORM := android-9 APP_STL := gnustl_static APP_CPPFLAGS := -frtti -fexceptions -O2 -mfpu=neon -mfloat-abi=softfp APP_ABI := armeabi-v7a LOCAL_ARM_NEON := true 运行ndk build时,我总是收到警告: Invalid attribute name: package /Us

我有下面的Application.mk

APP_PLATFORM := android-9
APP_STL := gnustl_static
APP_CPPFLAGS := -frtti -fexceptions -O2 -mfpu=neon -mfloat-abi=softfp
APP_ABI := armeabi-v7a
LOCAL_ARM_NEON := true
运行ndk build时,我总是收到警告:

Invalid attribute name: 
    package
/Users/tmanthey/Documents/android/android-ndk-r8d/build/core/add-application.mk:128: Android NDK: WARNING: APP_PLATFORM android-14 is larger than android:minSdkVersion  in ./AndroidManifest.xml    
Invalid attribute name: 
    package
这是我的AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.evotegra.aCoDriver"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="9" android:targetSdkVersion="17" />

    <uses-permission android:name="android.permission.CAMERA" />

    <uses-feature android:name="android.hardware.camera" />
    <uses-feature android:name="android.hardware.camera.autofocus" />

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.VIBRATE"/>

    <application
        android:name=".ACoDriverApp"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" android:allowBackup="true">
        <activity
            android:name=".ACoDriverActivity"
            android:label="@string/app_name" android:launchMode="singleTask">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name="PreferencesActivity" />
        <activity android:name="GaugeSelectActivity" />
    </application>

</manifest>

如何消除这些警告?

关于软件包,这很可能是XML文件的crlf问题。检查那里的行尾字符。或者,您的project.properties文件可能有问题


APP_PLATFORM警告实际上是正确的:您的APP_PLATFORM android-14比您在AndroidManifest.xml中设置的android:minSdkVersion大。这只是一个警告,提醒您注意这种合法情况,以便在某个阶段您决定放弃对非常过时的设备的支持。

您可以通过在Eclipse中执行以下步骤来解决此问题:

窗口->首选项->C/C++->生成->设置 选择CDT GNU C/C++错误分析器 在底部的错误分析器选项中,添加具有以下内容的新条目: 严重性:警告

模式:.?:\d+:Android NDK:警告:

档案:$1

行:2美元

说明:3美元


这会将其转换为警告,您也可以选择忽略它-取决于问题视图中显示的严重程度。

对于NDK rev r9,其他版本也适用,但行可能不同

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

在行首添加

$call\u ndk\u info,警告:APP\u PLATFORM$APP\u PLATFORM大于$APP\u清单中的android:minSdkVersion$APP\u MIN\u PLATFORM\u级别


一个字符,30秒修正。。。去调试本机代码。

请将您的AndroidManifest.xml显示为无效属性名称:包可疑。我用manifesthm更新了问题,看起来没问题,但此无效属性。。。这意味着,某些xml文件的包似乎放在错误的位置。APP_PLATFORM:=android-9应该可以工作。也许尝试一个干净的版本。清单?它以括号>结尾,但文件中的行分隔符为CRLF。我在哪里将APP_平台设置为14?我想我把它设置为9。你在Linux上,但AndroidManifest.xml文件有DOS Windows行delimeters。。。这可能是个问题。尝试将文件转换为Unix样式的行尾。请检查Application.mk文件是否已实际使用。请注意,ndk build在jni目录中查找此文件,如果找不到,将静默使用默认文件。最简单的方法是向Application.mk添加一些错误,并查看ndk构建停止;mv AndroidManifest.xml2 AndroidManifest.xmlI从Application.mk中删除了APP_PLATFORM,但APP_PLATFORM警告仍然消失,因为我在eclipse上从AndroidManifest.xml中删除了CR,正则表达式应该是。*?:\d+:\d+:?安卓NDK:警告:*幸运的是,r9改进了这一点-他们现在使用的是u NDK_信息。