Android Studio 3.0 中的 AndroidManifest.xml 问题
Issue with AndroidManifest.xml in Android Studio 3.0
我最近从 Canary 频道安装了 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 中不是问题。关于如何解决这个问题的任何想法?我在这里阅读了一些类似的问题,但 none 解决了我的问题。顺便说一句 - 我将构建变体设置为调试或发布并不重要,它说的是同一件事。此外,"R" class 不起作用,如果我将鼠标悬停在 manifest xmlns:android="http://schemas.android.com/apk/res/android
声明上,它会显示 "URI is not registered".
同样,项目结构完全没有改变,我只是升级到 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 Studio 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 下运行,同时使用 gradle 插件 2.3.2 in Android Studio 3.0(我现在正在做并且可以运行)。
所以问题出在新的 gradle 3.0.0-alpha9
您可能有一个依赖库 (aar),它在清单的应用程序标记内有一个 <uses-sdk>
。因此,当合并时,您的应用程序也会有不正确的用法。
我在 Android.
的旧本地 vlc 构建中发生了这种情况
我的 Manifest 文件中有一个类别元素位于常规 activity 中,这导致构建失败。更新到 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
v. 3.0.0.
遇到了同样的错误,在我的例子中,Manifest
文件中的 meta_data
中有拼写错误,而不是 meta-data
,从而阻止了构建。
我最近从 Canary 频道安装了 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 中不是问题。关于如何解决这个问题的任何想法?我在这里阅读了一些类似的问题,但 none 解决了我的问题。顺便说一句 - 我将构建变体设置为调试或发布并不重要,它说的是同一件事。此外,"R" class 不起作用,如果我将鼠标悬停在 manifest xmlns:android="http://schemas.android.com/apk/res/android
声明上,它会显示 "URI is not registered".
同样,项目结构完全没有改变,我只是升级到 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 Studio 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 下运行,同时使用 gradle 插件 2.3.2 in Android Studio 3.0(我现在正在做并且可以运行)。
所以问题出在新的 gradle 3.0.0-alpha9
您可能有一个依赖库 (aar),它在清单的应用程序标记内有一个 <uses-sdk>
。因此,当合并时,您的应用程序也会有不正确的用法。
我在 Android.
的旧本地 vlc 构建中发生了这种情况我的 Manifest 文件中有一个类别元素位于常规 activity 中,这导致构建失败。更新到 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
v. 3.0.0.
遇到了同样的错误,在我的例子中,Manifest
文件中的 meta_data
中有拼写错误,而不是 meta-data
,从而阻止了构建。