【问题标题】:How Get rid of NDK compiler warning: "APP_PLATFORM is larger.." and "Invalid package"如何摆脱 NDK 编译器警告:“APP_PLATFORM is large..”和“Invalid package”
【发布时间】:2013-04-01 07:28:50
【问题描述】:

我有以下 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>

我怎样才能摆脱这些警告?

【问题讨论】:

  • 请出示您的 AndroidManifest.xml,因为Invalid attribute name: package 是可疑的。
  • 我用清单更新了问题
  • 嗯,对我来说看起来不错,但是这个 Invalid attribute ... 意味着,某些 xml 文件似乎在错误的地方有 package。 APP_PLATFORM := android-9 应该可以工作。也许尝试一个干净的构建。

标签: android-ndk


【解决方案1】:

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

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

【讨论】:

  • 清单?它以括号“>”结尾,但文件中的行分隔符是 CRLF。我在哪里将 APP_PLATFORM 设置为 14?我以为我把它设置为 9。
  • 你在 Linux 上,但 AndroidManifest.xml 文件有 DOS (Windows) 行分隔符...这可能是个问题。尝试将文件转换为 Unix 风格的行尾。
  • 请检查您的 Application.mk 文件是否被实际使用。请注意,ndk-build 在 jni 目录中查找此文件,如果找不到,将静默使用默认文件。最简单的方法是在 Application.mk 中添加一些错误并查看 ndk-build stop。
  • 在 Mac 上正在修复它:cat AndroidManifest.xml | col -b &gt; AndroidManifest.xml2; mv AndroidManifest.xml2 AndroidManifest.xml
  • 我从 Application.mk 中删除了 APP_PLATFORM 但 APP_PLATFORM 警告仍然消失了,因为我从 AndroidManifest.xml 中删除了 CR
【解决方案2】:

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

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

在行首添加“#”。

#$(call __ndk_info,WARNING: APP_PLATFORM $(APP_PLATFORM) 大于 $(APP_MANIFEST) 中的 android:minSdkVersion $(APP_MIN_PLATFORM_LEVEL))

一个字符,30 秒修复……去调试原生代码。

【讨论】:

    【解决方案3】:

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

    • 窗口 -> 首选项 -> C/C++ -> 构建 -> 设置
    • 选择 CDT GNU C/C++ 错误解析器
    • 在底部的错误解析器选项中,添加一个包含以下内容的新条目:

    严重性:警告

    模式:(.?):(\d+): Android NDK: WARNING:(.)

    文件:$1

    行:$2

    说明:3 美元

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

    【讨论】:

    • 在我的日食中,正则表达式应该是 (.*?):(\d+):(\d+:)? Android NDK:警告:.*
    • 幸运的是,这个在 r9 中得到了改进——这些天他们使用__ndk_info。
    猜你喜欢
    • 2020-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-30
    • 2017-01-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多