Android App Bundle build error: reserved file
Android App Bundle build error: reserved file
新的应用发布格式 Android App Bundle 是一种改进的应用打包方式。 Android App Bundle 让您可以更轻松地以更小的应用程序提供出色的体验,从而支持当今可用的各种 Android 设备。您无需重构代码即可开始从较小的应用中获益。
我在尝试构建我的应用程序时遇到此错误 Android 捆绑包:
File 'root/AndroidManifest.xml' uses reserved file or directory name
'AndroidManifest.xml'.
APK 生成工作正常。
这是我的项目文件结构:
这是我的 AndroidManifest.xml,位于 {ProjectName}/app/src/main
:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.XXXX.XXXX"
android:installLocation="auto">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<!-- These permissions are strongly recommended and will result in higher performance -->
<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_NETWORK_STATE" />
<uses-permission android:name="android.permission.VIBRATE" />
<application
android:name="com.app.webview.Application"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme"
android:hardwareAccelerated="true">
<activity
android:name="com.app.webview.MainActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:label="@string/app_name"
android:launchMode="singleTask">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<!-- Universal APP Link -->
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="http" />
<data android:scheme="https" />
<data android:host="@string/app_host" />
</intent-filter>
</activity>
<!-- Push -->
<!-- Services that handles incoming message -->
<service
android:name="com.app.webview.Providers.FCM.FcmListenerService">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
<!-- Called if InstanceID token is updated -->
<!-- This may occur if the security of the previous token had been compromised -->
<service
android:name="com.app.webview.Providers.FCM.FcmInstanceIDListenerService"
android:exported="true">
<intent-filter>
<action android:name="com.google.firebase.INSTANCE_ID_EVENT" />
</intent-filter>
</service>
<!-- Facebook Config -->
<meta-data
android:name="com.facebook.sdk.ApplicationId"
android:value="@string/id_facebook" />
<activity
android:name="com.facebook.FacebookActivity"
android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation"
android:label="@string/app_name"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
tools:replace="android:theme" />
<provider
android:name="com.facebook.FacebookContentProvider"
android:authorities="@string/facebook_provider"
android:exported="true"
tools:replace="android:authorities" />
<!-- Fabric -->
<meta-data
android:name="io.fabric.ApiKey"
android:value="XXXX" />
</application>
</manifest>
如果我没看错文件树,您的 AndroidManifest.xml
文件位于 res
文件夹中,这可能是您看到错误的原因。尝试将文件放入 {ProjectName}/app/src/main
并重建项目。
我 运行 遇到了同样的错误。在获得工作构建之前必须更改一些内容。对我来说是:
- 将 facebook audience-network-sdk 从 5.0.0 降级到 4.28.2
- 将 okio 从 2.1.0 降级到 2.0.0
- 更新 okio、okhttp 和改造的 proguard 配置
- 不使用 R8
希望对您有所帮助。
就我而言,我的错误是由
引起的
com.facebook.android:audience-network-sdk
我只将 audience-network-sdk 从 5.0.0 降级到 4.99.3,一切开始正常工作。希望对你有帮助。
更新:
正如塞巴斯蒂安所说,现在您可以将 audience-network-sdk 从 5.0.0 更新到 5.1.0。
在 Facebook 修复 SDK 之前,一个更简单的修复方法是将其添加到应用 build.gradle:
的 android { } 块中的 packagingOptions
android {
packagingOptions {
exclude 'AndroidManifest.xml' //This fixes a bug in FAN 5.0.1
}
}
我只能在构建 App Bundle 时确认此功能,我不知道常规 APK。
自 10 月 31 日起,Facebook 发布了 Audience Network SDK 5.1 版本。使用
implementation 'com.facebook.android:audience-network-sdk:5.1.0'
为我解决了这个问题。
回答晚了,但我遇到了同样的问题,但情况略有不同。我没有使用上面提到的 facebook 库,而是其他一些库,由于构建的信息较少,我无法弄清楚。
我有一个子模块(比如 module1
),其中包含另一个库,它还有很多依赖项。所以我说,
packagingOptions {
exclude 'AndroidManifest.xml'
}
在 module1
的 build.gradle
中,然后问题已解决。
只是写这个答案来传达 app
的 build.gradle
可能无法解决所有情况的问题。
非常感谢@Jason 指明了正确的方向。
想知道为什么 facebook 图书馆有这样问题的人:
您可以从 maven respository 下载 aar 文件,然后将其拖入 Android Studio 并展开 classes.jar
。您会看到 classes.jar
.
中有一个清单文件
新的应用发布格式 Android App Bundle 是一种改进的应用打包方式。 Android App Bundle 让您可以更轻松地以更小的应用程序提供出色的体验,从而支持当今可用的各种 Android 设备。您无需重构代码即可开始从较小的应用中获益。
我在尝试构建我的应用程序时遇到此错误 Android 捆绑包:
File 'root/AndroidManifest.xml' uses reserved file or directory name 'AndroidManifest.xml'.
APK 生成工作正常。
这是我的项目文件结构:
这是我的 AndroidManifest.xml,位于 {ProjectName}/app/src/main
:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.XXXX.XXXX"
android:installLocation="auto">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<!-- These permissions are strongly recommended and will result in higher performance -->
<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_NETWORK_STATE" />
<uses-permission android:name="android.permission.VIBRATE" />
<application
android:name="com.app.webview.Application"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme"
android:hardwareAccelerated="true">
<activity
android:name="com.app.webview.MainActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:label="@string/app_name"
android:launchMode="singleTask">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<!-- Universal APP Link -->
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="http" />
<data android:scheme="https" />
<data android:host="@string/app_host" />
</intent-filter>
</activity>
<!-- Push -->
<!-- Services that handles incoming message -->
<service
android:name="com.app.webview.Providers.FCM.FcmListenerService">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
<!-- Called if InstanceID token is updated -->
<!-- This may occur if the security of the previous token had been compromised -->
<service
android:name="com.app.webview.Providers.FCM.FcmInstanceIDListenerService"
android:exported="true">
<intent-filter>
<action android:name="com.google.firebase.INSTANCE_ID_EVENT" />
</intent-filter>
</service>
<!-- Facebook Config -->
<meta-data
android:name="com.facebook.sdk.ApplicationId"
android:value="@string/id_facebook" />
<activity
android:name="com.facebook.FacebookActivity"
android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation"
android:label="@string/app_name"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
tools:replace="android:theme" />
<provider
android:name="com.facebook.FacebookContentProvider"
android:authorities="@string/facebook_provider"
android:exported="true"
tools:replace="android:authorities" />
<!-- Fabric -->
<meta-data
android:name="io.fabric.ApiKey"
android:value="XXXX" />
</application>
</manifest>
如果我没看错文件树,您的 AndroidManifest.xml
文件位于 res
文件夹中,这可能是您看到错误的原因。尝试将文件放入 {ProjectName}/app/src/main
并重建项目。
我 运行 遇到了同样的错误。在获得工作构建之前必须更改一些内容。对我来说是:
- 将 facebook audience-network-sdk 从 5.0.0 降级到 4.28.2
- 将 okio 从 2.1.0 降级到 2.0.0
- 更新 okio、okhttp 和改造的 proguard 配置
- 不使用 R8
希望对您有所帮助。
就我而言,我的错误是由
引起的com.facebook.android:audience-network-sdk
我只将 audience-network-sdk 从 5.0.0 降级到 4.99.3,一切开始正常工作。希望对你有帮助。
更新: 正如塞巴斯蒂安所说,现在您可以将 audience-network-sdk 从 5.0.0 更新到 5.1.0。
在 Facebook 修复 SDK 之前,一个更简单的修复方法是将其添加到应用 build.gradle:
的 android { } 块中的 packagingOptionsandroid {
packagingOptions {
exclude 'AndroidManifest.xml' //This fixes a bug in FAN 5.0.1
}
}
我只能在构建 App Bundle 时确认此功能,我不知道常规 APK。
自 10 月 31 日起,Facebook 发布了 Audience Network SDK 5.1 版本。使用
implementation 'com.facebook.android:audience-network-sdk:5.1.0'
为我解决了这个问题。
回答晚了,但我遇到了同样的问题,但情况略有不同。我没有使用上面提到的 facebook 库,而是其他一些库,由于构建的信息较少,我无法弄清楚。
我有一个子模块(比如 module1
),其中包含另一个库,它还有很多依赖项。所以我说,
packagingOptions {
exclude 'AndroidManifest.xml'
}
在 module1
的 build.gradle
中,然后问题已解决。
只是写这个答案来传达 app
的 build.gradle
可能无法解决所有情况的问题。
非常感谢@Jason 指明了正确的方向。
想知道为什么 facebook 图书馆有这样问题的人:
您可以从 maven respository 下载 aar 文件,然后将其拖入 Android Studio 并展开 classes.jar
。您会看到 classes.jar
.