我为我的应用程序编写了不同的样式,并且有一个我想针对其中一种运行的服务。
我如何实现它?
答案 0 :(得分:2)
解决方案1
if("debug".equals(BuildConfig.FLAVOR) {
// Start service A
} else if ("release".equals(BuildConfig.FLAVOR) {
// Start service B
}
或
if("debug".equals(BuildConfig.FLAVOR) {
// Start service A onfly if using "debug" flavor
}
解决方案2
您还可以使用上述方法中止特定口味的服务:
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
if("debug".equals(BuildConfig.FLAVOR) {
stopSelf();
}
....
}
解决方案3
此外,您可以针对不同的口味使用不同的AndroidManifest.xml
:
Base AndroidManifest.xml
在以下位置编辑文件:app / src / main / AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest>
<application>
...
<service android:name="com.test.Service" />
</application>
</manifest>
特定于香料的AndroidManifest.xml
在app / src / FLAVOR_A / AndroidManifest.xml中编辑/创建文件
<?xml version="1.0" encoding="utf-8"?>
<manifest>
<application>
...
<service android:name="com.test.Service" android:enabled="true" tools:node="merge"/>
</application>
</manifest>
这只会将标志android:enabled="true"
添加到FLAVOR_A
。
您可以找到有关mergin清单文件here
的更多信息。