Mar*_*cus 56 android android-manifest android-studio android-gradle-plugin
我在为Android Studio中的风格定义两个不同的清单文件时遇到问题.这是我目前的项目结构:

该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>
Run Code Online (Sandbox Code Playgroud)
该AndroidManifest.xml在main味道没有用途的权限,但其中包含的是所有口味之间共享清单代码的其余部分.
该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>
Run Code Online (Sandbox Code Playgroud)
build.gradle定义了两种风格
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'
}
}
Run Code Online (Sandbox Code Playgroud)
我期待的结果是不同的风格定义了不同的使用权限.不是这种情况.结果目前两种口味仅定义了专业口味中<uses-permission android:name="com.android.vending.CHECK_LICENSE" />定义AndroidManifest.xml的口味.
我试过了:
但没有成功.我该怎么解决这个问题?任何帮助表示赞赏.
编辑1
我将每个AndroidManifest.xml文件res夹的位置从每个文件夹更改为free和pro文件夹.结果如下:
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
Run Code Online (Sandbox Code Playgroud)
优点:
uses-permission#com.android.vending.CHECK_LICENSE
MERGED from qwknoteGIT:licencing-library:unspecified:26:5
Run Code Online (Sandbox Code Playgroud)
Bud*_*ius 51
技术背景:
在此链接上,它解释了可用于清单合并的技术和参数:http://tools.android.com/tech-docs/new-build-system/user-guide/manifest-merger#TOC-tools : node -markers
具体的一点tools:node是指出清单上某些XML节点在合并时应该如何表现.
解:
要在其他清单中实现一个不同的权限,并在其他清单中添加所需的权限,main并在其中添加您不需要的权限,如下例所示:
free 删除支票许可证
<uses-permission
android:name="com.android.vending.CHECK_LICENSE"
tools:node="remove"/>
Run Code Online (Sandbox Code Playgroud)
Com*_*are 23
你的问题来自图书馆,而不是你的口味.具体来说,qwknoteGIT:licencing-library是请求CHECK_LICENSE.
如果您没有在所有风格中使用该库,请使用一种风格的compile语句(例如proCompile)仅在该风格中使用该库.
如果您将库用于所有风格,但确信您不需要一种风格的权限,那么tools:node可以在风格的清单中使用属性来阻止库提供的权限.
明确的合并报告是你的朋友.:-)
这至少应该可以解决问题。我发现它在指定用于每个变体的确切清单时很有用。干杯! 它明确指向每个变体文件夹下的清单文件。
android {
productFlavors {
prod {
manifest.srcFile "prod/AndroidManifest.xml"
}
dev {
manifest.srcFile "dev/AndroidManifest.xml"
}
}
...
}
Run Code Online (Sandbox Code Playgroud)
在您的应用程序 build.gradle 中仅在 sourceSets 下指定您的清单
android {
productFlavors {
bizdartFlavourNoCallLog {
minSdkVersion 16
applicationIdSuffix '.bizdart'
targetSdkVersion 26
dimension "tier"
sourceSets {
main {
manifest.srcFile "src/bizdartFlavourNoCallLog/AndroidManifest.xml"
}
}
copy {
from 'src/bizdartFlavourNoCallLog/'
include '*.json'
into '.'
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
小智 5
请参阅https://developer.android.com/studio/build/manifest-merge参数工具:node =“merge”
高优先级清单(免费):
<activity android:name="com.example.ActivityOne"
android:screenOrientation="portrait"
tools:node="merge">
</activity>
Run Code Online (Sandbox Code Playgroud)
低优先级清单(主要):
<activity android:name="com.example.ActivityOne"
android:windowSoftInputMode="stateUnchanged">
<intent-filter>
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud)
合并清单结果:
<activity android:name="com.example.ActivityOne"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateUnchanged">
<intent-filter>
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
39288 次 |
| 最近记录: |