bla*_*ack 9 android android-manifest android-10.0
我的库项目有一个位置服务,并且根据 Android Q 要求,它android:foregroundServiceType="location"在清单中设置属性。当应用模块使用我的库并针对 API 级别 28 进行编译时,它会失败并显示以下错误:
AndroidManifest.xml:57: AAPT: error: attribute android:foregroundServiceType not found.
Run Code Online (Sandbox Code Playgroud)
我的库如何保持与旧版本的兼容性,同时确保该功能适用于 Android Q?
我的目标是避免在库版本更新时破坏任何人的构建,同时避免强迫开发人员针对 API 29 进行编译。看来我有两个选择:
tools:node="replace".第一种方法的问题是我需要在一段时间内维护两个库。第二个问题是开发人员必须记住在更新 SDK 版本后恢复更改。
就我而言,我将采用第二种方法。通过startForeground在面向 Android Q 时将显式前台服务类型传递给该方法,如果未在清单中设置该类型,我可能会导致崩溃。因此,开发人员可以在定位 Android Q 时捕获此问题并恢复清单更改以修复它。