署名付きapkの作成中にエラーが発生する-「エントリ名 'res / layout / test_toolbar.xml'が衝突しました」


17

Androidスタジオを本日3.5.xから3.6に更新し、ビルドバリアントの署名済みAPKを生成中にエラーが発生し、次のメッセージを表示します- エントリ名 'res / layout / test_toolbar.xml'が衝突しましたこのような名前のレイアウトはありませんプロジェクト全体で1つ。「ステージ」という名前のカスタムビルドバリアントがあり、署名付きAPKをビルドしようとすると、常に失敗します。私はまだ解決策を見つけていると思います。この問題で私を助けてください。ありがとう

更新: 以下のメッセージでも同じ問題が発生する可能性があります(AS-3.6.1で見つけました)。したがって、この種の不明で解決できないメッセージについて心配する必要はありません。これまでのところ、署名付きapkを生成しているときに2つの新しいタイプのメッセージを見つけました。

  • Entry name 'kotlin/collections/MapWithDefault.kotlin_metadata' collided
  • Access Denied

解決策は同じです。時々Invalidate Cache and RestartこれのためにAS が必要になるかもしれません。調査結果をお知らせください。ありがとう

回答:


16

以下の解決策を読む前に、2020年4月1日からの更新を読んでください。問題はより深くコードにあります。

この3.6アップデート後も同じ問題が発生します。

* 高速ソリューションは次のとおりです。*

  1. projectFolder \ buildを削除します
  2. projectFolder \ debug *を削除します
  3. projectFolder \ release *を削除します
  4. projectFolder \ app \ buildを削除します
  5. projectFolder \ app \ build \ debug *を削除します
  6. projectFolder \ app \ build \ release *を削除します

したがって、ビルド、デバッグ、リリースのすべてのディレクトリを削除する必要があります。

デバッグディレクトリとリリースディレクトリ全体を削除できない場合がありますが、その内容はすべて削除できます。

UPD:

私は彼らが今日このバグを修正したと思います: ここに画像の説明を入力してください

UPD 03.03.2020: 残念ながら、バグは修正されていません。

UPD 01.04.2020: (4月1日の冗談ではない:))

私は毎月Android Studio開発者と協力し、今日はログの深いエラーの1つがそれを言っているので、jreを使用する代わりにjdkを使用するように言われました。

jdの代わりにjdk(ファイル->プロジェクト構造-> SDKの場所-> JDKの場所)を設定した後、「ビルド出力」に表示されなかった別のエラーが発生したため、分析を実行し、コード検査してEIGHTEENエラーを取得しました。レイアウトの誤ったビューIDへのtools:ignore="MissingDefaultResource"参照、向きのエラー(hi to )、および向きのマニフェストのエラーなど:これは、3.6.1のいくつかの新しいアップデートであると読みました-横長または縦長についてscreenOrientation、これによりStudioで高速に修正されました: <activity tools:ignore="LockedOrientationActivity" />

Analyze-> Inspect Codeですべてのエラーが修正されたら、jdkを使用して署名付きAPKを正常に生成し、次にjre(テストのみ)を使用しました。

つまり、要約すると、このバグは深いエラーが原因で発生しました。 Inspect Codeツールで。

ASはこれをバグだとは思わないでしょう。これはコードを改善するための新機能であると彼らは言ったと思います。また、jreの代わりにjdkを設定しなくても、コードを検査する必要があると思います。

ASサポートからの追加の推奨事項:

ちなみに、releaseビルドをエクスポートするとき、lintVitalいくつかの追加チェックを実行し、いくつかのエラーがとしてマークされている場合も実行しfatalます。このチェックは費用がかかるため、debugビルドでは発生しません


1
どうもありがとう。私はすでにそれを解決しました。これは(本当に)安定したバージョンですか?
Saadat

1
@Saadatいいえ、今チェックしました-まだバグがあります。
danyapd

どうもありがとうございます。修正を期待して、もう一度更新しました。@danyapd
Saadat

projectFolder\app\[all flavor folders]も削除する必要があることに気づきました。
drmrbrewer

1
ありがとう、Build > Rebuild ProjectAndroid Studio 3.6.2で修正されました。
gregn3

7

apkを生成する際に、debugフォルダーからoutput.jsonとapp-debug.apkを削除する宛先フォルダーを確認します。この後、同じものを構築してみてください。私の知る限り、それはアンドロイドスタジオのバグです、彼らがすぐにこれを修正することを願っています:)


1
お返事をありがとうございます。私はすでに同じことをして、私の問題を解決しました。:)
Saadat

1
どうもありがとう!!2.5時間の闘争の後、これを見つけました
Kishita Variya

これをありがとう、魅力のように働きました
ブライアン

4

APKファイルを含むビルドバリアントの以前のビルド出力を削除しました。それは私を助けたものです


1
buildディレクトリ全体を削除しようとしましたが、それでも同じ問題が発生しました。自分がやったことを詳しく説明できますか?
Pusparaj

プロジェクトのルートにあるビルドディレクトリとapp / buildディレクトリも削除していますか?私のプロジェクトでは、apkの出力パスが変更され、それが配置されていた前のapkファイルを削除するだけです。
Vladislav Vatrushkin

1

これは、自動viewBinding、Kotlinを使用したバインド、または3.6のviewBinding機能を使用したときに発生します。

要素が同じIDを共有するファイルを追加する場合、ViewBindingが混乱し、そのようなエラーが発生します。

ビューのタイプで区切られた2つのレイアウトファイルを持つアダプタクラスの例をご紹介します。

import kotlinx.android.synthetic.main.frag_subscription_recommend.view.*


override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
   return ViewHolder(
        LayoutInflater.from(parent.context).inflate(
            if (viewType == 1) {
                R.layout.frag_subscription_recommend
            } else
                R.layout.frag_subscription_common,
            parent,
            false
        )
    )
}

onBinding(){
  holder.itemView.id_button_submit.setOnClickListener {}
}

//どのリソースまたはレイアウトが要件を完全に満たすかを混乱させる場合、どちらもbcozが同じボタンIDを持っています。使用する必要がある場合:

 onBinding(){
  holder.itemView.findViewById<Button>(R.id.id_button_submit).setOnClickListener {}
}

古い実装を可能にします。

これがあなたの側で働いているかどうか教えてください?


1
申し訳ありませんが、問題はビルド、デバッグ、リリースのディレクトリにありました。出力jsonファイルを含みます。とにかく、お返事をthhanks
Saadat

1

Android Studioを更新した後も同じエラーが発生し、プロジェクトをクリーンアップするだけで問題を解決しました(ビルド>プロジェクトのクリーンアップ)!:)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.