簡體   English   中英

Android App Bundle 構建錯誤:保留文件

[英]Android App Bundle build error: reserved file

新的應用程序發布格式 Android App Bundle 是對 package 應用程序的改進方式。 Android App Bundle 讓您可以更輕松地以更小的應用程序提供出色的體驗,從而支持當今可用的各種 Android 設備。 您無需重構代碼即可開始從較小的應用程序中獲益。

我在嘗試構建我的應用程序 Android 捆綁包時遇到此錯誤:

文件“root/AndroidManifest.xml”使用保留文件或目錄名稱“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>

在 Facebook 修復 SDK 之前,一個更簡單的修復方法是將其添加到應用 build.gradle 的 android { } 塊中的 PackagingOptions:

android {
   packagingOptions {
      exclude 'AndroidManifest.xml' //This fixes a bug in FAN 5.0.1
   }
}

我只能在構建 App Bundle 時確認這有效,我不知道常規 APK。

就我而言,我的錯誤是由

com.facebook.android:audience-network-sdk

我只將 Audience-network-sdk 從 5.0.0 降級到 4.99.3,一切都開始正常工作。 我希望這對你有幫助。

更新:正如 Sebastian 所說,現在您可以將 Audience-network-sdk 從 5.0.0 更新到 5.1.0。

自 10 月 31 日起,Facebook 發布了 Audience Network SDK 5.1 版。 使用

實現 'com.facebook.android:audience-network-sdk:5.1.0'

為我解決了這個問題。

如果我正確閱讀了文件樹,則您的AndroidManifest.xml文件位於res文件夾中,這可能是您看到錯誤的原因。 嘗試將文件放在{ProjectName}/app/src/main並重建項目。

我遇到了同樣的錯誤。 在獲得工作版本之前必須更改一些內容。 對我來說是:

  1. 將 facebook 受眾網絡 SDK 從 5.0.0 降級到 4.28.2
  2. 將 okio 從 2.1.0 降級到 2.0.0
  3. 更新 okio、okhttp 和改造的 proguard 配置
  4. 不使用 R8

我希望這可以幫助你。

回答晚了,但我面臨着同樣的問題,但情況略有不同。 我沒有使用上面提到的 facebook 庫,而是使用了其他一些庫,由於構建的信息較少,我無法弄清楚。

我有一個子模塊(比如module1 ),它包含另一個庫,該庫進一步具有許多依賴項。 所以我把,

packagingOptions {
        exclude 'AndroidManifest.xml'
}

build.gradlemodule1 ,然后問題就解決了。

只是寫這個答案來傳達放入appbuild.gradle可能無法解決所有情況下的問題。

非常感謝@Jason 指出正確的方向。

對於那些知道為什么 facebook 圖書館有這樣的問題的人:

您可以從maven資源庫下載 aar 文件,然后將其拖入 Android Studio 並展開classes.jar 您會看到classes.jar中有一個清單文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM