Search code examples
androidandroid-studiogradleaaptaapt2

error: unexpected element <uses-sdk> found in <manifest><application>


I'm trying to build this android vlctest application sample, however i'm getting the below error:

Android resource linking failed
Output:  C:\Program Files\android\workspace\vlctest-master\app\build\intermediates\merged_manifests\debug\processDebugManifest\merged\AndroidManifest.xml:42: error: unexpected element <uses-sdk> found in <manifest><application>.

Command: C:\Program Files\android\android-studio\.gradle\caches\transforms-1\files-1.1\aapt2-3.2.1-4818971-windows.jar\466069e667720c031ae71c30fd5dfaa7\aapt2-3.2.1-4818971-windows\aapt2.exe link -I\
        E:\android\Sdk\platforms\android-28\android.jar\
        --manifest\
        C:\Program Files\android\workspace\vlctest-master\app\build\intermediates\merged_manifests\debug\processDebugManifest\merged\AndroidManifest.xml\
        -o\
        C:\Program Files\android\workspace\vlctest-master\app\build\intermediates\processed_res\debug\processDebugResources\out\resources-debug.ap_\
        -R\
        @C:\Program Files\android\workspace\vlctest-master\app\build\intermediates\incremental\processDebugResources\resources-list-for-resources-debug.ap_.txt\
        --auto-add-overlay\
        --java\
        C:\Program Files\android\workspace\vlctest-master\app\build\generated\not_namespaced_r_class_sources\debug\processDebugResources\r\
        --custom-package\
        com.sxx.vlctest\
        -0\
        apk\
        --output-text-symbols\
        C:\Program Files\android\workspace\vlctest-master\app\build\intermediates\symbols\debug\R.txt\
        --no-version-vectors
Daemon:  AAPT2 aapt2-3.2.1-4818971-windows Daemon #0

Please note that the manifest XML mentioned in the error (AndroidManifest.xml) is an auto-generated file under the build directory, so any changes to it would be reset after synchronization.

AndroidManifest.xml:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.sxx.vlctest"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="16"
        android:targetSdkVersion="26" />

    <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
    <uses-permission android:name="android.permission.RECORD_AUDIO" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

    <application
        android:name="com.sxx.vlctest.VLCApplication"
        android:allowBackup="true"
        android:appComponentFactory="android.support.v4.app.CoreComponentFactory"
        android:debuggable="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.sxx.vlctest.MainActivity"
            android:label="@string/app_name"
            android:screenOrientation="landscape" >
            <intent-filter>
                <action android:name="android.intent.action.VIEW" />
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <uses-sdk
            android:minSdkVersion="16"
            android:targetSdkVersion="26" />
    </application>

</manifest>

I think my app gradle could be also helpfull:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 28
    buildToolsVersion "28.0.3"

    defaultConfig {
        applicationId "com.sxx.vlctest"
        minSdkVersion 16
        targetSdkVersion 26
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    testImplementation 'junit:junit:4.12'
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'com.android.support:support-v4:+'
    implementation 'com.android.support:design:28.0.0'
    implementation project(':libvlc-3.0.0')
}

EDIT:

Below is my main manifest file located under "app/src/main/AndroidManifest.xml":

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.sxx.vlctest">

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

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

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

    <application
        android:name="com.sxx.vlctest.VLCApplication"
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name"
            android:screenOrientation="landscape">
            <intent-filter>
                <action android:name="android.intent.action.VIEW" />
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

This image might be helpful too:

Check this image Thanks.


Solution

  • The offending Manifest file is actually found here within this .aar file:

    vlctest-master\vlctest-master\libvlc-3.0.0\libvlc-3.0.0.aar
    

    A .aar file is just a .zip file with a custom extension. So rename it to .zip, unzip it, remove the "uses-sdk" line from the Manifest file, rezip it, rename it to .aar, and you're done! Gradle synced for me successfully after doing all this.