問題タブ [manifest-merging]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
3404 参照

android - ビルド バリアントに基づいてアプリ名を変更する Gradle のみのソリューション

と に基づいてアプリに別の名前を付けられるように、gradle ファイルを変更しようとしていFlavorますBuild Typeこれまでのところ、 Android Gradle Plugin Docsの手法をFlavor使用して、ベースの命名を簡潔にすることに成功しています。Manifest Merging

現時点の

これらは、私のホーム画面debugreleaseビルドの両方のアプリケーションの名前です。

近いけど…

望ましい

debugこれが欲しいので、ホーム画面でどのフレーバーがどれであるかがわかります。ユーザーは自分のデバイスに 1 つしか持っていないので、フレーバーを区別することは気にしませんrelease(複数持つことは可能かもしれませんが、私は気にしません)。

Gradle の拡張性を考えると、これは可能だと思います。ただし、私は高度な Gradle ユーザーではありません。

では、目的の出力を得るためにコードを簡潔に (可能な限り) 拡張するにはどうすればよいでしょうか?

注: 上記の表はversionNameSuffix、アプリ名の接尾辞として使用されています。ただし、デバッグ ビルド タイプでのみ使用しているフレーバーを判別できるようにするものであれば何でもかまいません (別の追加変数??)。

非目標

  • Android/Gradle: App name based on build type *and* product フレーバーString Resourceへの回答のように、ソリューションには興味がありません。純粋な Gradle ベースのソリューションが推奨されます。

  • Manifest Merger私が現在実装している方法から離れることには興味がありません。https://stackoverflow.com/a/28465883/2333021の答えは、私がすでに行ったことを実装する別の方法であり、デバッグビルドでのみこれを行うことを許可していません(私が見ることができる.そうであれば、それから私に知らせてください)。

コード

マニフェスト

アップデート

新しい出力

0 投票する
1 に答える
11690 参照

android - 複数のビルド フレーバーの applicationId マニフェスト プレースホルダーが機能しない

複数のフレーバーとビルド構成のために同じデバイスにインストールできるように、現在の Android プロジェクトを変更しています。

build.gradle:

AndroidManifest.xml :

同じフレーバーのデバッグ バージョンとリリース バージョンの両方をコンパイルすると、次のエラー メッセージが表示されました。

...

INSTALL_FAILED_DUPLICATE_PERMISSION

perm=com.myapp.permission.C2D_MESSAGE

pkg=com.myapp.dev

...

manifestApplicationId プレースホルダーは、 https: //documentation.onesignal.com/docs/android-sdk-setup で指示されているように、OneSignal ライブラリの AndroidManifest.xml から取得されました。

この問題を解決する方法を知っている人はいますか? ありがとうございました。

0 投票する
2 に答える
21712 参照

android - FileProvider で複数の権限を使用することは可能ですか?

バックグラウンド

私は、プログラムによってキャプチャされたスクリーンショットを外部の電子メール アプリケーションに共有することをコア機能とするライブラリを管理しています。

FileProviderこれは、ライブラリのマニフェストにタグが含まれている<provider>ことを意味します。

filepaths.xmlは次のように定義されます。

FileProvider私のライブラリのコンシューマーには、ファイルを共有するためにそれ自体を使用するアプリケーションがあります。<provider>私の予想では、消費するアプリケーションが次のマニフェストタグを使用した場合、両方のプロバイダーがファイルを共有できるようになるはずです。

このマニフェスト エントリ:

  • (アプリケーション ファイル共有用) と(ライブラリ ファイル共有用) の 2 つのProvider権限を指定します。${applicationId}.fileprovider${applicationId}.bugshaker.fileprovider
  • 更新された を参照しますfilepaths.xml。これには、アプリケーション生成ファイルとライブラリ生成ファイルの個別のディレクトリ定義が含まれています。

アプリケーションをビルドした後、生成されたマニフェストの正しいノードがこれらの更新された値に置き換えられていることを確認しました。

ただし、この構成を使用するアプリケーションが (正常に) アセンブルされて実行されると、起動時にクラッシュが発生します。

デバッガーを使用すると、メソッドが権限文字列でFileProvider.parsePathStrategy呼び出されることがわかります。その後、null を返し、この NPE につながります。PackageManager.resolveContentProvider"${applicationId}.fileprovider;${applicationId}.bugshaker.fileprovider"resolveContentProvider

resolveContentProviderこの命令で一時停止中に手動で呼び出して"${applicationId}.fileprovider" または "${applicationId}.bugshaker.fileprovider"を渡すと、resolveContentProvider代わりに null 以外のProviderInfoインスタンスが返されます (これは期待される結果のようです)。

<provider>要素のドキュメントには複数の権限がサポートされていると記載されているため、この違いは私を混乱させます。

コンテンツ プロバイダーが提供するデータを識別する 1 つ以上の URI 機関のリスト。複数の機関は、名前をセミコロンで区切ってリストします。競合を避けるために、機関名は Java スタイルの命名規則 (com.example.provider.cartoonprovider など) を使用する必要があります。通常、プロバイダーを実装する ContentProvider サブクラスの名前です。

デフォルトはありません。少なくとも 1 つの権限を指定する必要があります。

質問

  • FileProvider1 つのアプリケーションで複数の権限とファイル パスを 公開することは可能ですか?
    • もしそうなら、それを機能させるために何を変更する必要がありますか?
    • そうでない場合、このような競合を回避するためにライブラリ内でファイル共有を構成する他の方法はありますか?
0 投票する
1 に答える
41 参照

android - Androidでマニフェストの合併に失敗しました

私はプログラミングが初めてです。Google マップ アクティビティを追加した後、マニフェスト ファイルでこのエラーが発生します。できることはすべて試しましたが、難しいことがわかりました。

前もって感謝します

ここに私のAndroidマニフェストファイル