2013-04-01 30 views
11

我有以下Application.mk如何擺脫NDK編譯器警告的:「APP_PLATFORM較大..」和「無效的包」

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建造時,我總是得到警告:

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> 

我怎樣才能擺脫這些警告?

+0

請將您的AndroidManifest.xml顯示爲'無效的屬性名稱:package'是可疑的。 –

+0

我用清單更新了這個問題 – tmanthey

+0

嗯,看起來對我來說還可以,但是這個'Invalid attribute ...'意味着某些xml文件似乎在錯誤的地方有'package'。 'APP_PLATFORM:= android-9'應該可以工作。也許嘗試一個乾淨的構建。 –

回答

3

關於「包」,這很可能是一些crlf問題與您的XML文件。檢查那裏的行尾字符。或者,您的project.properties文件中可能有問題。

APP_PLATFORM警告其實是正確的:您的APP_PLATFORM(android-14)大於您在AndroidManifest.xml中設置的android:minSdkVersion。這只是一個提醒您這種(合法)情況的警告,因此在某個階段您決定放棄對過時設備的支持。

+0

清單?它以括號「>」結尾,但文件中的行分隔符是CRLF。我在哪裏將APP_PLATFORM設置爲14?我以爲我把它設置爲9. – tmanthey

+1

你在Linux上,但AndroidManifest.xml文件有DOS(Windows)行定界符...這可能是一個問題。嘗試將該文件轉換爲Unix樣式行尾。 –

+0

請檢查您的Application.mk文件是否被實際使用。請注意,ndk-build會在jni目錄中查找此文件,如果找不到默認文件,它將默默使用默認文件。最簡單的方法是向你的Application.mk添加一些錯誤,並看到ndk-build停止。 –

1

您可以通過執行在Eclipse以下步驟解決這個問題:

  • 窗口 - >首選項 - > C/C++ - >構建 - >設置
  • 選擇CDT GNU C/C++錯誤分析器
  • 在底部的錯誤分析器選項,添加新條目,其內容如下:

嚴重性:警告

模式:(。 ):?(\ d +):Android的NDK:警告:(

文件:$ 1

行:$ 2

說明:$ 3

這應該將此轉換爲警告,你也可以選擇忽略這個 - 根據嚴重程度它將顯示在問題視圖中。

+0

在我的eclipse上,正則表達式應該是(。*?):(\ d +):(\ d + :)? Android NDK:警告:* –

+0

這適用於r8 ...只適用於r9 – DevByStarlight

+0

幸運的是,這一款在r9中得到了改進 - 現在它們使用'__ndk_info'。 –

3

對於NDK轉R9(工作在別人太多,但行號可能會有所不同)

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

添加 「#」 的開始該線。

#$(叫__ndk_info,警告:APP_PLATFORM $(APP_PLATFORM)是比Android大:$的minSdkVersion(APP_MIN_PLATFORM_LEVEL)在$(APP_MANIFEST))

一個字符,30秒修復...去調​​試本地代碼。