更新到Android 3.0.0后,我的Android清单出现了多个错误

时间:2017-10-27 13:44:55

标签: java android

在更新到Android 3.0.0并将gradle更新到4.1之后,我陷入了困境。我的应用程序没有构建,清单包含很多错误。我尝试在Build下清理项目,使Files下的缓存/重启无效,但没有成功。

我收到的错误如下:

  

错误:(52)错误:找到未知元素。
  错误:(52)找到未知元素。
  错误:java.util.concurrent.ExecutionException:java.util.concurrent.ExecutionException:com.android.tools.aapt2.Aapt2Exception:AAPT2错误:检查日志以获取详细信息
  错误:java.util.concurrent.ExecutionException:com.android.tools.aapt2.Aapt2Exception:AAPT2错误:检查日志以获取详细信息
  错误:com.android.tools.aapt2.Aapt2Exception:AAPT2错误:检查日志以获取详细信息
  错误:任务':app:processDebugResources'的执行失败   无法执行aapt

所有错误都在debug\AndroidManifest中。当我删除或评论标记的活动时,它们会被重新添加到gradle构建中,

我也使用android="http://schemas.android.com/apk/res/android"'

获得了'URI notregistrered错误'

清单:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="sample.app"
    android:installLocation="auto"
    android:versionCode="48"
    android:versionName="4.8" >

    <uses-sdk
        android:minSdkVersion="19"
        android:targetSdkVersion="25" />
    //Hardware Constraints for Application
    <uses-feature android:name="android.hardware.location.gps" />

    <!-- <uses-feature android:name="android.hardware.location.network" /> -->

    //Required App Permissions
    <uses-permission android:name="android.permission.READ_CONTACTS" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.VIBRATE" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.BLUETOOTH" />
    <uses-permission android:name="android.permission.READ_SMS" />
    <uses-permission android:name="android.permission.WRITE_CONTACTS" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.RECORD_AUDIO" />
    <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
    <uses-permission android:name="android.permission.READ_CALL_LOG" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
    <uses-permission android:name="android.permission.RECEIVE_SMS" />
    <uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" />
    <uses-permission android:name="android.permission.GET_ACCOUNTS" />
    <uses-permission android:name="android.permission.USE_CREDENTIALS" />
    <uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />
    <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />
    <uses-permission android:name="com.android.launcher.permission.UNINSTALL_SHORTCUT" />
    <uses-permission android:name="android.permission.CALL_PHONE" />
    <uses-permission android:name="android.permission.ACCESS_NOTIFICATION_POLICY" />
    <uses-permission android:name="android.permission.SEND_SMS" />
    <uses-permission android:name="android.permission.CAMERA" />
    <uses-permission android:name="android.permission.CAPTURE_AUDIO_OUTPUT" />

    <uses-permission-sdk-23 android:name="android.permission.MODIFY_PHONE_STATE" />

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

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

    <activity android:name="com.box.androidsdk.content.auth.OAuthActivity" />

    <uses-feature
        android:name="android.hardware.sensor.accelerometer"
        android:required="true" /> <!-- Permissions required for GCM -->
    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />

    <uses-feature
        android:glEsVersion="0x00020000"
        android:required="true" />

    <permission
        android:name="sample.app.permission.C2D_MESSAGE"
        android:protectionLevel="signature" />

    <uses-permission android:name="sample.app.permission.C2D_MESSAGE" />
    <!--
  <uses-feature
          android:name="android.hardware.camera2.full"
          android:required="true" />
    -->
    <!--
   <uses-feature
           android:name="android.hardware.sensor.accelerometer"
           android:required="true" />
    -->
    <application
        android:name="sample.app.dailymotion.volleyapp.AppController"
        android:allowBackup="true"
        android:debuggable="true"
        android:hardwareAccelerated="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:largeHeap="true"
        android:supportsRtl="true"
        android:theme="@style/AppTheme" >

        <!--
             <meta-data
             android:name="com.google.android.gms.vision.DEPENDENCIES"
             android:value="barcode"/>
        -->
        <activity android:name="sample.app.SplashScreen" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name="sample.app.ClrInfo"
            android:exported="false"
            android:theme="@style/MyDialogTheme" />

</application>
</manifest>

2 个答案:

答案 0 :(得分:6)

Android文档提到了迁移指南:https://developer.android.com/studio/build/gradle-plugin-3-0-0-migration.html

  

Android清单中的元素层次结构

     

在以前版本的AAPT中,元素嵌套在不正确的节点中   Android清单被忽略或导致警告。对于   例如,请考虑以下示例:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="com.example.myname.myapplication">
   <application
       ...
       <activity android:name=".MainActivity">
           <intent-filter>
               <action android:name="android.intent.action.MAIN" />
               <category android:name="android.intent.category.LAUNCHER" />
           </intent-filter>
           <action android:name="android.intent.action.CUSTOM" />
       </activity>
   </application>
</manifest>

请注意,如果您确实遵守他们提供的特定嵌套规则,则必须检查您的清单,否则您的应用程序将无法编译。

  

清单文件结构

     

下面的代码片段显示了清单的一般结构   文件及其可包含的每个元素。每个元素,以及   它的所有属性都在一个单独的文件中完整记录。

<manifest>

    <uses-permission />
    <permission />
    <permission-tree />
    <permission-group />
    <instrumentation />
    <uses-sdk />
    <uses-configuration />  
    <uses-feature />  
    <supports-screens />  
    <compatible-screens />  
    <supports-gl-texture />  

    <application>

        <activity>
            <intent-filter>
                <action />
                <category />
                <data />
            </intent-filter>
            <meta-data />
        </activity>

        <activity-alias>
            <intent-filter> . . . </intent-filter>
            <meta-data />
        </activity-alias>

        <service>
            <intent-filter> . . . </intent-filter>
            <meta-data/>
        </service>

        <receiver>
            <intent-filter> . . . </intent-filter>
            <meta-data />
        </receiver>

        <provider>
            <grant-uri-permission />
            <meta-data />
            <path-permission />
        </provider>

        <uses-library />

    </application>

</manifest>

在您的情况下,您必须转移

<activity android:name="com.box.androidsdk.content.auth.OAuthActivity" />

<application>内,以便编译。

禁用AAPT2只是一种解决方法,但不是真正的答案

答案 1 :(得分:1)

无需禁用AAPT2。 :)在AndroidManifest.xml的第56行中,您定义了一个活动:

<activity android:name="com.box.androidsdk.content.auth.OAuthActivity" />

&#39;活动&#39;标签只能嵌套在&#39;应用程序&#39;元件。有关详细信息,请查看Android Manifest structure documentation