作者:最美的你 | 来源:互联网 | 2023-05-22 12:17
我在为Android Studio中的风格定义两个不同的清单文件时遇到问题.这是我目前的项目结构:
该AndroidManifest.xml
在free
味道是这样的:
该AndroidManifest.xml
在main
味道没有用途的权限,但其中包含的是所有口味之间共享清单代码的其余部分.
该AndroidManifest.xml
在pro
味道是这样的:
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'
}
}
我期待的结果是不同的风格定义了不同的使用权限.不是这种情况.结果目前两种口味仅定义了专业口味中
定义AndroidManifest.xml
的口味.
我试过了:
清洁项目
重建项目
重启Android Studio
同步gradle
但没有成功.我该怎么解决这个问题?任何帮助表示赞赏.
编辑1
我将每个AndroidManifest.xml
文件res
夹的位置从每个文件夹更改为free
和pro
文件夹.结果如下:
Pro flavor按预期显示许可权限.
Free flavor显示来自两个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
Budius..
51
技术背景:
在此链接上,它解释了可用于清单合并的技术和参数:http://tools.android.com/tech-docs/new-build-system/user-guide/manifest-merger#TOC-tools : node -markers
具体的一点tools:node
是指出清单上某些XML节点在合并时应该如何表现.
解:
要在其他清单中实现一个不同的权限,并在其他清单中添加所需的权限,main
并在其中添加您不需要的权限,如下例所示:
free
删除支票许可证
CommonsWare..
23
你的问题来自图书馆,而不是你的口味.具体来说,qwknoteGIT:licencing-library
是请求CHECK_LICENSE
.
如果您没有在所有风格中使用该库,请使用一种风格的compile
语句(例如proCompile
)仅在该风格中使用该库.
如果您将库用于所有风格,但确信您不需要一种风格的权限,那么tools:node
可以在风格的清单中使用属性来阻止库提供的权限.
明确的合并报告是你的朋友.:-)
1> Budius..:
技术背景:
在此链接上,它解释了可用于清单合并的技术和参数:http://tools.android.com/tech-docs/new-build-system/user-guide/manifest-merger#TOC-tools : node -markers
具体的一点tools:node
是指出清单上某些XML节点在合并时应该如何表现.
解:
要在其他清单中实现一个不同的权限,并在其他清单中添加所需的权限,main
并在其中添加您不需要的权限,如下例所示:
free
删除支票许可证
只有一个问题,为什么我们不能将`android:name ="com.android.vending.CHECK_LICENSE"添加到单个"专业版"清单中,而不是将其添加到主清单中并将其从"免费"版本中删除
2> CommonsWare..:
你的问题来自图书馆,而不是你的口味.具体来说,qwknoteGIT:licencing-library
是请求CHECK_LICENSE
.
如果您没有在所有风格中使用该库,请使用一种风格的compile
语句(例如proCompile
)仅在该风格中使用该库.
如果您将库用于所有风格,但确信您不需要一种风格的权限,那么tools:node
可以在风格的清单中使用属性来阻止库提供的权限.
明确的合并报告是你的朋友.:-)