2017-08-07 144 views
9

我最近从Canary频道安装了Android Studio 3.0。然而,加载我的老项目,这个不断在多数民众赞成取决于构建变量自动生成AndroidManifest.xml文件弹出:Android Studio 3.0中的AndroidManifest.xml问题

Error:(49) unknown element <uses-sdk> found

这也显示:

Error:/home/computername/AndroidStudioProjects/applicationname/app/build/intermediates/manifests/full/release/AndroidManifest.xml:49 unknown element <uses-sdk> found

不用说,这在Android Studio 2.3中不是问题。有关如何解决这个问题的任何想法?我已经阅读了一些类似的问题,但没有解决我的问题。顺便说一句 - 如果我将构建变体设置为调试或发布,则无关紧要,它也会说同样的事情。另外,“R”类不起作用,并且如果我将鼠标悬停在manifest xmlns:android="http://schemas.android.com/apk/res/android声明上,它会显示“URI未注册”。

同样,项目结构根本没有改变,我只升级到Android Studio 3.0。

谢谢!

下面是位于/src/main文件夹下的AndroidManifest.xml文件,该文件非常适用。问题在于/app/build/intermediates/manifests/full文件夹中生成的AndroidManifest.xml文件 - 这些是破坏我的应用程序的文件。

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

     <application 
      android:allowBackup="true" 
      android:icon="@mipmap/ic_launcher" 
      android:label="@string/app_name" 
      android:supportsRtl="true" 
      android:theme="@style/AppTheme"> 
      <activity android:name=".view.MainActivity" 
       android:noHistory="true"> 
       <intent-filter> 
        <action android:name="android.intent.action.MAIN" /> 

        <category android:name="android.intent.category.LAUNCHER" /> 
       </intent-filter> 
      </activity> 
      <activity 
       android:name=".view.TabbedActivity" 
       android:label="@string/app_name" 
       android:theme="@style/AppTheme.NoActionBar" 
       android:screenOrientation="landscape" 
       android:configChanges="keyboardHidden|orientation|screenSize" 
       android:noHistory="true"> 

      </activity> 
     </application> 

     <!-- PROTECTION_NORMAL permissions, automatically granted --> 
     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
     <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 
     <uses-permission android:name="android.permission.INTERNET" /> 

     <!-- DANGEROUS PERMISSIONS, must request --> 
     <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
     <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

    </manifest> 

这里的调试或释放自动生成的舱单,不工作的样子道:

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

    <uses-sdk 
     android:minSdkVersion="21" 
     android:targetSdkVersion="25" /> 

    <!-- PROTECTION_NORMAL permissions, automatically granted --> 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 
    <uses-permission android:name="android.permission.INTERNET" /> 

    <!-- DANGEROUS PERMISSIONS, must request --> 
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

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

    <application 
     android:allowBackup="true" 
     android:debuggable="true" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/app_name" 
     android:supportsRtl="true" 
     android:theme="@style/AppTheme" > 
     <activity 
      android:name="com.domain.appname.view.MainActivity" 
      android:noHistory="true" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
     <activity 
      android:name="com.domain.appname.view.TabbedActivity" 
      android:configChanges="keyboardHidden|orientation|screenSize" 
      android:label="@string/app_name" 
      android:noHistory="true" 
      android:screenOrientation="landscape" 
      android:theme="@style/AppTheme.NoActionBar" > 
     </activity> 

     <uses-sdk 
      android:minSdkVersion="21" 
      android:targetSdkVersion="25" /> 
    </application> 

</manifest> 

后来编辑

我回去的Android 2.3工作室,并将gradle插件设置回2.3.2,以下是自动生成的AndroidManifest.xml如何看起来像现在:

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

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

    <instrumentation 
     android:name="android.support.test.runner.AndroidJUnitRunner" 
     android:functionalTest="false" 
     android:handleProfiling="false" 
     android:label="Tests for com.domain.appname" 
     android:targetPackage="com.domain.appname" /> 

    <application> 
     <uses-library android:name="android.test.runner" /> 
    </application> 

</manifest> 

现在一切都照常进行,但是,请注意自动生成清单文件之间的gradle下和3.0.0的gradle下一个2.3.2

我想我将不得不等待的差别,直到有人发现一个解决方案在gradle 3.0.0下使用这个工作,同时在Android Studio 3.0中使用gradle插件2.3.2(我现在正在使用它并且工作正常)。

所以这个问题是与新gradle这个3.0.0-alpha9

+0

告诉我们文件请 –

+0

你去... –

+0

现在,如果你可以告诉我们哪一行是49这将是完美的 –

回答

5

你可能有一个依赖库(AAR)具有<uses-sdk>清单中的应用程序标签内。所以当它被合并时,你的应用程序也会有不正确的用法。

这发生在我身上的是一个本地构建的vlc for Android。

+0

我其实在我的项目中有一个aar库。有趣。我现在在家,我无法检查出来,但很可能你是对的。 –

1

我的Manifest文件中有一个类别元素,这是导致构建失败的常规活动。在更新到as3-rc1和构建工具26+之后将其删除,我的问题已解决。希望这可以帮助某人。

<activity 
     android:name=".AboutUsActivity" 
     android:label="@string/title_activity_about_us" 
     android:parentActivityName=".MainActivity" 
     android:theme="@style/AppTheme.NoActionBar"> 
     <category android:name="android.intent.category.DEFAULT" /> 

     <meta-data 
      android:name="android.support.PARENT_ACTIVITY" 
      android:value="com.example.MainActivity" /> 
    </activity> 
1

如果问题仍然存在,请在迁移检查this official tutorialGragle plugin诉3.0.0。

得到了同样的错误,在我的情况下,文件中有meta_data而不是meta-data错字,阻止构建。