2017-08-30 526 views
0

我試圖爲我的應用程序進行更新,通過自己的服務器進行傳輸。一切都很順利,直到更新過程說:解析錯誤 - 有一個問題,包裝的問題。PackageParser:<manifest>下的未知元素:元數據

從logcat的

PackageParser: Unknown element under <manifest>: meta-data at 

與AAPT尋找

A: android:name(0x01010003)="android.permission.MANAGE_USB" (Raw: "android.permission.MANAGE_USB") 
E: meta-data (line=21) 
    A: android:name(0x01010003)="android.support.VERSION" (Raw: "android.support.VERSION") 

一位來自same issue後認爲即時運行功能應該被禁止,但仍然沒有去。

我有最新的AS和它的最新更新。在我的應用程序/ src目錄/主/ AndroidManifest.xml中

元數據部分是

<meta-data 
android:name="android.app.device_admin" 
android:resource="@xml/device_admin_receiver" /> 

另一個post有討論也對元數據以及應該如何包括姓名和資源,但在我的元數據都是這樣,所以不可能是問題。

我也是從清單合併釋放小REPORT.TXT看着

meta-data#android.support.VERSION 
ADDED from [com.android.support:appcompat-v7:25.3.1] /home/test/.android/build-cache/0babb927f9685604721e7d79f796b3104e7aa65c/output/AndroidManifest.xml:25:5-27:34 
MERGED from [com.android.support:support-v4:25.3.1] /home/test/.android/build-cache/c982b10f45110a04eb75ca3351098dfbfe082732/output/AndroidManifest.xml:25:5-27:34 

,並從應用程序/構建/中間體/艙單/全/發行/ AndroidManifest.xml中 它具有:

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

<meta-data 
    android:name="android.support.VERSION" 
    android:value="25.3.1" /> 

<application 

我有外部庫

和CarouselLayoutManager作爲模塊,其ħ ave

compile 'com.android.support:recyclerview-v7:25.3.1' 

我試圖找到根本原因,但所有的指南,提示和技巧來到了死衚衕。

更新1 這裏充滿AndroidManifest.xml中

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
package="com.xxx.yyy.app_android"> 
<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
<uses-permission android:name="android.permission.MANAGE_DEVICE_ADMINS" /> 
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/> 
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.INSTALL_PACKAGES" /> 
<uses-permission android:name="android.permission.MANAGE_USB" /> 

<application 
    android:fitsSystemWindows="true" 
    android:allowBackup="false" 
    android:icon="@mipmap/icon" 
    android:supportsRtl="true" 
    android:label="@string/app_name" 
    android:name=".ui.App" 
    android:theme="@style/SplashTheme" 
    android:windowSoftInputMode="adjustNothing" 
    tools:ignore="GoogleAppIndexingWarning"> 
    <activity android:name=".ui.SplashActivity"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity android:name=".ui.USBDeviceConnectionActivity" /> 
    <activity android:name=".ui.MainActivity" /> 
    <activity android:name=".ui.MainAppViewActivity" /> 
    <activity android:name=".ui.InstructionsActivity" /> 

    <service android:name=".machine.AdjustSeatHeightService" /> 
    <service android:name=".machine.AdjustPressureService"/> 
    <service android:name=".machine.RFIDService" 
     android:exported="false" /> 
    <service android:name=".machine.MVUControlService" 
     android:exported="false" /> 
    <service android:name=".machine.PressureNModeControlService" 
     android:exported="false" /> 
    <service android:name=".machine.MachModeChangeService" 
     android:exported="false" /> 
    <service android:name=".machine.ReadMotorPos" 
     android:exported="false" /> 

    <receiver 
     android:name=".ui.DeviceAdminReceiver" 
     android:description="@string/app_name" 
     android:label="@string/app_name" 
     android:permission="android.permission.BIND_DEVICE_ADMIN"> 
     <meta-data 
      android:name="android.app.device_admin" 
      android:resource="@xml/device_admin_receiver" /> 
     <intent-filter> 
      <action android:name="android.intent.action.DEVICE_ADMIN_ENABLED"/> 
      <action android:name="android.intent.action.PROFILE_PROVISIONING_COMPLETE"/> 
      <action android:name="android.intent.action.BOOT_COMPLETED"/> 
      <action android:name="android.app.action.DEVICE_ADMIN_ENABLED" /> 
      <action android:name="android.app.action.DEVICE_ADMIN_DISABLED" /> 
     </intent-filter> 
    </receiver> 

    <!-- Start the Service if applicable on boot --> 
    <receiver android:name=".ui.BootReceiver"> 
     <intent-filter > 
      <action android:name="android.intent.action.BOOT_COMPLETED"/> 
     </intent-filter> 
    </receiver> 
</application> 
</manifest> 

更新2

替換recyclerview-V7版本25.3.1從到25.3.0,現在我得到這個錯誤。從我的猜測是有問題的元數據來自appcompat-v7,但我不知道它是如何被包含的,以及爲什麼在合併AndroidManifest文件時出錯的地方。

Error:Execution failed for task ':app:processDebugManifest'. 
> Manifest merger failed : Attribute meta-data#[email protected] value=(25.3.1) from [com.android.support:appcompat-v7:25.3.1] AndroidManifest.xml:27:9-31 
is also present at [com.android.support:recyclerview-v7:25.3.0] AndroidManifest.xml:24:9-31 value=(25.3.0). 
Suggestion: add 'tools:replace="android:value"' to <meta-data> element at AndroidManifest.xml:25:5-27:34 to override. 

更新3

確定。似乎問題是我已經採取建立的external module。 由於某種原因,androidManifest.xml會從它合併而來,這會帶來額外的元數據信息。

更新4 刪除外部模塊,它仍然是問題來臨。看來問題是com.android.support:recyclerview-v7:25.3.1,但我不知道爲什麼。

更新5 發現問題。 似乎supportlibraries 25.3.0及更新帶來了他們的清單文件的變化:

<manifest package="android.support.v7.appcompat"> 
    <uses-sdk android:minSdkVersion="9" tools:overrideLibrary="android.support.graphics.drawable.animated"/> 
    <meta-data android:name="android.support.VERSION" android:value="25.3.0"/> 
    <application/> 
</manifest> 

元數據是不是在應用程序代碼那裏,它被注入到錯誤的地方在最終的AndroidManifest.xml創建APK時。

現在我只需要弄清楚如何恢復到早期的支持庫,因爲我收到了來自其他庫未包括的版本不匹配的通知。 。:(

回答

0

根據this android reference元數據標籤下面的標籤

<activity> 
<activity-alias> 
<application> 
<provider> 
<receiver> 
<service> 

包含有但你的標籤是從側面任何這些 您發佈的錯誤是

PackageParser:未知元素<manifest>:元數據

因此,標籤直接放置在<manifest>標籤導致此問題。

所以請把它移動到<application>標籤,它會工作。

+0

問題是, 建設APK當<元數據 機器人:名字=「android.support.VERSION」 機器人值=「25.3.1」 /> 獲取的從別的地方注射。 我沒有在我的應用程序的AndroidManifest.xml中定義它。 – Juge

+0

這裏放置了什麼? –

+0

<接收機.... 「> <元數據 機器人:名稱=」 android.app.device_admin的」 機器人:資源= 「@ XML/device_admin_receiver」/> <意圖濾波器> .... Juge