Android Studio 3.0中的AndroidManifest.xml问题
我最近从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
你可能有一个依赖库(AAR)具有<uses-sdk>
清单中的应用程序标签内。所以当它被合并时,你的应用程序也会有不正确的用法。
这发生在我身上的是一个本地构建的vlc for Android。
我其实在我的项目中有一个aar库。有趣。我现在在家,我无法检查出来,但很可能你是对的。 –
我的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>
如果问题仍然存在,请在迁移检查this official tutorial到Gragle plugin
诉3.0.0。
得到了同样的错误,在我的情况下,文件中有meta_data
而不是meta-data
错字,阻止构建。
告诉我们文件请 –
你去... –
现在,如果你可以告诉我们哪一行是49这将是完美的 –