如何针对特定口味启动服务?

时间:2019-06-17 12:26:34

标签: android

我为我的应用程序编写了不同的样式,并且有一个我想针对其中一种运行的服务。

我如何实现它?

1 个答案:

答案 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

的更多信息。