問題タブ [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.
android - ビルド バリアントに基づいてアプリ名を変更する Gradle のみのソリューション
と に基づいてアプリに別の名前を付けられるように、gradle ファイルを変更しようとしていFlavor
ますBuild Type
。これまでのところ、 Android Gradle Plugin Docsの手法をFlavor
使用して、ベースの命名を簡潔にすることに成功しています。Manifest Merging
現時点の
これらは、私のホーム画面debug
とrelease
ビルドの両方のアプリケーションの名前です。
近いけど…
望ましい
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の答えは、私がすでに行ったことを実装する別の方法であり、デバッグビルドでのみこれを行うことを許可していません(私が見ることができる.そうであれば、それから私に知らせてください)。
コード
マニフェスト
アップデート
新しい出力
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 から取得されました。
この問題を解決する方法を知っている人はいますか? ありがとうございました。
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 つの権限を指定する必要があります。
質問
FileProvider
1 つのアプリケーションで複数の権限とファイル パスを 公開することは可能ですか?- もしそうなら、それを機能させるために何を変更する必要がありますか?
- そうでない場合、このような競合を回避するためにライブラリ内でファイル共有を構成する他の方法はありますか?
android - Androidでマニフェストの合併に失敗しました
私はプログラミングが初めてです。Google マップ アクティビティを追加した後、マニフェスト ファイルでこのエラーが発生します。できることはすべて試しましたが、難しいことがわかりました。
前もって感謝します