web-dev-qa-db-ja.com

Android App Bundleビルドエラー:予約済みファイル

新しいアプリ公開形式Android App Bundle)は、アプリをパッケージ化するための改善された方法です。Android App Bundleを使用すると、優れたエクスペリエンスをより簡単に提供できますより小さなアプリサイズで、さまざまなAndroid=今日利用可能なデバイスを可能にします。小さなアプリからメリットを得るのにコードをリファクタリングする必要はありません。

アプリをビルドしようとしてこのエラーが発生しますAndroidバンドル:

ファイル「root/AndroidManifest.xml」は、予約されたファイルまたはディレクトリ名「AndroidManifest.xml」を使用します。

APK生成は正常に動作します

これは私のプロジェクトファイル構造です:

enter image description here

そして、これは{ProjectName}/app/src/mainの下にある私のAndroidManifest.xmlです。

<?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>
12
Javier Marín

10月31日以降、FacebookはAudience Network SDKのバージョン5.1をリリースしました。使用する

実装 'com.facebook.Android:audience-network-sdk:5.1.0'

私の問題を修正しました。

5
Sebastian

私の場合、私のエラーは

com.facebook.Android:audience-network-sdk

私はaudience-network-sdkを5.0.0から4.99.3にダウングレードするだけで、すべてが正常に機能し始めます。これがお役に立てば幸いです。

更新:セバスチャンが言ったように、今ではaudience-network-sdkを5.0.0から5.1.0に更新できます。

8
Fabio

FacebookがSDKを修正するまでのはるかに単純な修正は、これをアプリのbuild.gradleのAndroid {}ブロックのパッケージングオプションに追加することです。

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

App Bundleを作成するときにのみ、この動作を確認できます。通常のAPKについては知りません。

5
Jason Sznol

ファイルツリーを正しく読んでいる場合は、resフォルダーにAndroidManifest.xmlファイルがあります。このため、エラーが表示されます。ファイルを{ProjectName}/app/src/mainに配置して、プロジェクトを再ビルドしてください。

1
Noterezeck

同じバグに遭遇しました。動作するビルドを取得する前にいくつか変更する必要がありました。私にとっては:

  1. facebookオーディエンスネットワークSDKを5.0.0から4.28.2にダウングレード
  2. okioを2.1.0から2.0.0にダウングレード
  3. okio、okhttp、レトロフィットのproguard構成を更新
  4. r8を使用しない

これがお役に立てば幸いです。

0
ham

答えは遅いですが、少し異なるシナリオで同じ問題に直面していました。私は上記のFacebookライブラリを使用していませんでしたが、ビルドによる情報が少ないために理解できなかった他のライブラリでした。

サブモジュールが1つありました(module1)これには、さらに多くの依存関係を持つ別のライブラリが含まれていました。だから私は、

packagingOptions {
        exclude 'AndroidManifest.xml'
}

の中に build.gradle/module1その後、問題は解決しました。

appbuild.gradleすべてのケースで問題を解決できない場合があります。

@Jason、正しい方向を示してくれてありがとう。

0
Gokul Kulkarni