【发布时间】:2016-12-21 09:49:01
【问题描述】:
我正在使用 Android Studio 开发一个 Android 应用程序,它将使用带有条形码扫描仪的工业设备。 其中一些(来自不同公司的不同型号)使用特殊的 SDK(我必须使用特殊的 SDK 进行编译,而不仅仅是 API 23)。
我的问题是,当我切换到其他设备并且必须使用其他 SDK(或仅使用 API 23)进行编译时,我的一些代码不再起作用:导入不存在所以我用于特定设备的对象和方法也不是。
我的代码如下所示:
if(Build.MANUFACTURER.equals(COMPANY_NAME)){
// do some stuff that won't compile with an other sdk
}else if (Build.MANUFACTURER.equals(COMPANY_NAME)){
// do some other stuff that compile with a specific sdk too...
}else if (...){
...
}
我不想删除代码或将其放在注释中,因为它只会在特定设备上执行(而且我不想每次想为特定 SDK 编译时取消注释某些代码) .
我怎样才能保留我的代码(并且不必将其放在注释中)而不显示其他 SDK 的错误?
到目前为止我发现了什么:
- compileSdkVersion 似乎无法在product flavors 中设置
-
我们可以根据这样的条件放置 compileSdkVersion:
如果(条件){
compileSdkVersion 23} 否则 {
compileSdkVersion 'Datalogic:Datalogic SDK v1:23'}
但条件不能来自产品风味,因为它是在那之后执行的。一个“解决方案”是将条件放在 gradle.properties 中,如提到的here 但每次我手动编译时都必须更改它,并且不能解决我的问题,因为处理一些无法在特定 SDK 版本上编译的代码。
【问题讨论】:
标签: android sdk android-gradle-plugin