android - 在 Android Studio 中,如何为每种产品风格添加不同的 Manifest 文件?
问题描述
我有两种产品口味。这是应用程序gradle:
flavorDimensions "default"
productFlavors{
publicVersion{
dimension "default"
}
privateVersion{
dimension "default"
}
}
我想要每种口味都有一个不同的清单文件。所以我创建了一个路径为 src/publicVersion/AndroidManifest.xml 的清单文件和另一个路径为 src/privateVersion/AndroidManifest.xml 的清单文件,然后我删除了主清单文件。
在我这样做之后,没有任何效果。Android Studio 仍然要求在主目录中有一个 Manifest 文件。我尝试了所有关于 SO 的答案(比如在应用程序 gradle 文件中使用“sourceSet”),但它们没有用。也许最近的 Android Studio 更新改变了这样做的方式?
解决方案
选项1
AndroidManifest.xml
每种口味都有
- 应用程序/src/flavor1/AndroidManifest.xml
- 应用程序/src/flavor2/AndroidManifest.xml
- 应用程序/src/flavor3/AndroidManifest.xml
选项 2
将权限移至产品风格相关AndroidManifest.xml
,并将活动和所有其他公共信息留在一个核心中AndroidManifest.xml
app/src/main/AndroidManifest.xml
包含有关活动的常见信息,......但没有权限
<manifest
xmlns:android="http://schemas.android.com/apk/res/android">
<!-- permissions are imported via brand-specific AndroidManifest.xml -->
<!-- common manifest elements -->
<application
android:name=".ui.FSApplication"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name">
<!-- activities -->
<activity
android:name=".ui.activities.SplashActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<activity
android:name=".ui.activities.SecondActivity/>
<!-- receiver ->
<receiver android:name=".receiver.BlogPostReceiver"/>
</application>
</manifest>
app/src/flavor1/AndroidManifest.xml
仅包含 flavor1 产品风味的权限
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<uses-permission android:name="android.permission.INTERNET" />
</manifest>
同样对于 flavor2 中app/src/flavor2/AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
</manifest>
有关更多信息,请查看此
推荐阅读
- apache - 有没有办法跟踪 *.conf 文件中的哪些条目用于服务请求?
- c# - WPF RichTexBox 打印正在创建意外的换行符
- typescript - 扩展抽象类的类的类型是什么?
- python - 我将如何阻止我的播放器“弹射”屏幕外?
- node.js - 是否可以将 Socket.io 与 AWS Websockets Api Gateway 集成?
- python - 使用 sklearn 标准化 pandas 数据框中的一组列
- python - Django rest APITestCase 客户端在单元测试中将 null 布尔值转换为 false
- android - PlatformException(FitKit, 5000: 应用程序需要用户的 OAuth 同意, null, null) 从 Google Fit 获取心率值时
- angular - Angular 表单验证仅在输入时有效,然后删除
- ios - iOS 13.4 日期选择器紧凑型不突出显示当前日期或在显示选择器时更改模糊背景?