首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PackageParser:<manifest>:meta-data下的未知元素

PackageParser:<manifest>:meta-data下的未知元素
EN

Stack Overflow用户
提问于 2017-08-30 08:59:46
回答 1查看 4.7K关注 0票数 5

我正在尝试对将通过自己的服务器交付的应用程序进行更新。所有的事情都进行得很顺利,直到更新过程说:解析错误-有一个问题,分析包。

来自逻辑猫

代码语言:javascript
复制
PackageParser: Unknown element under <manifest>: meta-data at

看看aapt

代码语言:javascript
复制
  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")

同一问题的一篇文章建议禁用即时运行功能,但仍然不能运行。

我有最新的AS和最新的更新。

meta-我的app/src/main/AndroidManifest.xml中的数据部分是

代码语言:javascript
复制
<meta-data
android:name="android.app.device_admin"
android:resource="@xml/device_admin_receiver" />

另一个帖子也讨论了元数据,以及它应该如何包含名称和资源,但是在我的元数据中两者都有,所以这不可能是问题所在。

我还查看了清单-合并-发布-报告. also

代码语言:javascript
复制
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

在app/build/intermediates/manifests/full/release/AndroidManifest.xml,它有:

代码语言:javascript
复制
<uses-permission android:name="android.permission.MANAGE_USB" />

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

<application

我有外部图书馆

代码语言:javascript
复制
compile 'com.fasterxml.jackson.core:jackson-core:2.9.0'
compile 'com.fasterxml.jackson.core:jackson-databind:2.9.0'
compile 'com.fasterxml.jackson.core:jackson-annotations:2.9.0'
compile 'uk.co.chrisjenx:calligraphy:2.3.0'

和CarouselLayoutManager作为模块,其中

代码语言:javascript
复制
compile 'com.android.support:recyclerview-v7:25.3.1'

我试图找出根本的原因,但所有的指南,提示和提示都到了死胡同。

更新1这里是完整的AndroidManifest.xml

代码语言:javascript
复制
<?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

取代回收视图-v7版本从25.3.1到25.3.0,现在我得到了这个错误。据我猜测,有问题的元数据来自appcompat-v7,但我不知道它是如何被包含的,以及在合并AndroidManifest文件时为什么会出错。

代码语言:javascript
复制
Error:Execution failed for task ':app:processDebugManifest'.
> Manifest merger failed : Attribute meta-data#android.support.VERSION@value 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

好的。似乎这个问题就是我已经开始构建的外部模块。由于某种原因,androidManifest.xml与其合并,带来了额外的元数据信息。

更新4删除了外部模块,它的问题仍在到来。这个问题似乎是com.android.Support:recyclerview v7:25.3.1,但我不知道为什么。

更新5发现了问题。似乎supportlibraries 25.3.0和更新版本会对它们的清单文件进行更改:

代码语言:javascript
复制
 <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>

元数据不在应用程序标签之下,在创建APK时,它会被注入到最终AndroidManifest.xml中的错误位置。

现在,我只需要弄清楚如何恢复到以前的支持库,因为我得到通知,我从不包括的其他库中得到了与版本不匹配的消息。:(

EN

回答 1

Stack Overflow用户

发布于 2017-08-30 09:07:33

根据这个android参考,元数据标签包含在下面的标签中

代码语言:javascript
复制
<activity> 
<activity-alias> 
<application> 
<provider> 
<receiver> 
<service>

但你的标签在外边。您发布的错误是

PackageParser:<manifest>:meta-data下的未知元素

因此,标签直接放在<manifest>标签下,这导致了问题的发生。

所以,请把它移到<application>标签中,它就能工作了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45956132

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档