Android Studioの2つのフレーバーと異なるマニフェストファイル
質問
Android Studio で私のフレーバーに対して 2 つの異なるマニフェスト ファイルを定義することに問題があります。これは、私の現在のプロジェクト構造です。
は
AndroidManifest.xml
の中に
free
のフレーバーはこのようになります。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="se.example.package">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
</manifest>
は
AndroidManifest.xml
の中に
main
フレーバーは uses-permission を持ちませんが、すべてのフレーバー間で共有されるマニフェスト コードの残りを含みます。
は
AndroidManifest.xml
の中に
pro
のフレーバーはこのようになります。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="se.example.package">
<uses-permission android:name="com.android.vending.CHECK_LICENSE" />
</manifest>
build.gradleでは、2つのフレーバーを次のように定義しています。
productFlavors {
free {
applicationId 'se.example.package.free'
minSdkVersion 14
targetSdkVersion 21
versionCode 1
versionName '1.0'
}
pro {
minSdkVersion 14
applicationId 'se.example.package.pro'
targetSdkVersion 21
versionCode 2
versionName '1.1'
}
}
私が期待している結果は、異なるフレーバーが異なる使用許可を定義していることです。
というわけではありません。
結果は現在のところ、両方のフレーバーがそれぞれ
<uses-permission android:name="com.android.vending.CHECK_LICENSE" />
で定義されているように
AndroidManifest.xml
で定義されているように、プロフレーバーで
試してみました。
- プロジェクトのクリーンアップ
- プロジェクトのリビルド
- Android Studioを再起動します。
- gradleを同期させる
しかし、成功しません。どのようにこれを修正すればいいのでしょうか?どんな助けでも感謝します。
EDIT 1
各フレーバーの場所を変更しました
AndroidManifest.xml
ファイルの場所をそれぞれの
res
フォルダから
free
と
pro
フォルダーに格納されます。その結果
- Pro flavor は、期待どおりに Licence permission を表示します。
-
Free 版では、以下の両方のパーミッションが表示されます。
AndroidManifest.xml
ファイル、ライセンス、およびネットワーク権限 (ネットワークのみであるべき) の両方を表示します。
これはプロジェクト構造の問題のように感じられます。これをどうしたらいいのでしょうか?
編集2
Commonsware が示唆したように、マージレポートを取り出しました。
uses-permissions
無料です。
uses-permission#com.android.vending.CHECK_LICENSE
ADDED from qwknoteGIT:licencing-library:unspecified:26:5
android:name
ADDED from qwknoteGIT:licencing-library:unspecified:26:22
プロ
uses-permission#com.android.vending.CHECK_LICENSE
MERGED from qwknoteGIT:licencing-library:unspecified:26:5
どのように解決するのですか?
技術的な背景。
このリンクでは、マニフェスト マージに使用できるテクニックとパラメータを説明しています。 https://developer.android.com/studio/build/manage-manifests#merge_rule_markers
具体的なものとしては
tools:node
で、マニフェスト上の特定の XML ノードがマージ中にどのように動作すべきかを指摘します。
ソリューションです。
あるマニフェストでいくつかのパーミッションを実現し、他のマニフェストで異なるパーミッションを実現するために、必要なすべてのパーミッションを
main
に追加し、フレーバーマニフェストでは以下の例のように不要なものを削除します。
free
チェックライセンスを削除します。
<uses-permission
android:name="com.android.vending.CHECK_LICENSE"
tools:node="remove"/>
関連
-
[解決済み] Android Studioでパッケージ名を変更する
-
[解決済み] Android Studioの「assets」フォルダはどこに配置すればいいですか?
-
[解決済み] Android StudioのGradleとは?
-
[解決済み] Android Studioプロジェクトの.gitignoreには何を入れるべきですか?
-
[解決済み] Android Studioにライブラリプロジェクトを追加する方法を教えてください。
-
[解決済み】Android Studioです。jarをライブラリとして追加しますか?
-
[解決済み] Androidのソースコードにある@hideの意味とは?
-
[解決済み] アンドロイドでシェイクを検出するには?
-
[解決済み] EditTextをReadOnlyにする
-
[解決済み] EditTextの右側のDrawableにonClickListenerを設定する [重複] [重複
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] プログラム的に電話をかけるには?
-
[解決済み] Androidのソースコードにある@hideの意味とは?
-
[解決済み] handler.postDelayed()を停止する。
-
[解決済み] Androidでマイナスマージンを使用するのは悪いことですか?
-
[解決済み] DialogFragmentを正しく終了させるには?
-
[解決済み] Androidのadb logcatでTAG名で特定のメッセージを除外する方法は?
-
[解決済み] Studio 3.4 をアップデートしたら、引数の leftShift() メソッドが見つかりませんでした。
-
[解決済み] アンドロイドでシェイクを検出するには?
-
[解決済み] react nativeアプリのバージョン番号を更新する方法
-
[解決済み] <string> XMLで改行やタブを作るには(eclipse/android)?