预条件和构建配置:我正在尝试用AndroidStudio 2.4 review 5构建我的应用程序,方法是为Android O perview设备设置以下构建配置参数,compileSdkVersion'android-o'buildToolsVersion'25.0.0'compileoptions.encoding='iso-8859-1'minSdkVersion 16 targetSdkVersion'O'//启用multidex支持。multiDexEnabled真
问题描述:我的应用程序使用以下ConnectivityManager类的不推荐方法,用于安装较旧版本Android的设备。-ConnectivityManager.StartusingNetworkFeature()
-ConnectivityManager.StopusingNetworkFeature()
-ConnectivityManager.RequestRouteToHost()
当我试图构建具有上述api的应用程序时,它会给出如下编译时错误,
错误:(626,48)错误:找不到符号方法startUsingNetworkFeature(int,String)错误:(7393,27)错误:找不到符号方法stopUsingNetworkFeature(int,String)错误:(69,36)错误:找不到符号方法requestRouteToHost(int,int)
理想情况下,为了向后兼容的目的,这些api不应该给出编译时错误。请让我知道如何解决这些编译时错误。
我无法从代码中删除这些方法,因为这些方法对于较旧的android版本(低于android L版本)的设备是必需的
在您的项目中制作一个新的android库模块。确保此库具有compilesdkversion25
。然后将以下类放在库中:
@SuppressWarnings("Deprecation")
public class NetworkFeaturesCompat {
public static NetworkFeaturesCompat from(final ConnectivityManager cm) {
return new NetworkFeaturesCompat(cm);
}
private final ConnectivityManager mConnectivityManager;
private NetworkFeaturesCompat(final ConnectivityManager cm) {
mConnectivityManager = cm;
}
public int startUsingNetworkFeature(final int networkType, final String feature) {
return mConnectivityManager.startUsingNetworkFeature(networkType, feature);
}
public int stopUsingNetworkFeature(final int networkType, final String feature) {
return mConnectivityManager.stopUsingNetworkFeature(networkType, feature);
}
public boolean requestRouteToHost(final int networkType, final int hostAddress) {
return mConnectivityManager.requestRouteToHost(networkType, hostAddress);
}
}
现在,通过修改build.gradle文件,使您的主模块依赖于这个库:
dependencies {
compile project(":your-new-library-module-name")
}
构建您的项目。
现在您可以从您的主项目中使用这个helper类了。
您可能需要将此添加到您的proguard规则中(我还没有实际测试过此位):
-dontwarn android.net.ConnectivityManager
请注意,这种方法仍然会在Android6+上抛出unsupportedoperationexception
。
库模块是根据SDK25编译的,其中的方法仍然是公共API的一部分。这就是它在编译时不会崩溃的原因。
由于整个项目是根据SDK26编译的,proguard可能会抱怨缺少方法。在这种情况下,不要理会投诉。
我有两个Avro模式V1和V2,在spark中读取如下: V1有两个字段“一”和“二” V2 与新字段:“三” 场景:编写器使用 V1 进行写入,读取器使用 V2 对 avro 记录进行解码。我的期望是看到字段3填充了默认值,即null。但是我在spark工作中遇到了以下异常。 我是不是错过了什么?我的理解是avro支持向后兼容。
我有两个ssl文件- 我如何使Dropwizrad与它的嵌入式码头在SSL中工作? 谢谢。编号
ngrok承诺有关其接口的兼容性和稳定性,以便您可以自信地构建集成顶部,知道在升级到较新版本时期望的更改。 兼容性承诺 Point Release (2.0.0 -> 2.0.1) - ngrok承诺在点发布之间没有突破性的变化 Minor Version Change (2.0 -> 2.1) - ngrok可能会进行小的更改,打破兼容性的次要版本更改。 ngrok承诺,任何破坏性更改将由一个版
我使用相机仅显示预览(不拍照或录制视频)。 该应用程序始终处于竖屏状态(横向模式被禁用)。相机预览始终旋转90度ccw,我无法更改它(无论是还是和。 预览总是这样旋转还是依赖于设备?如果在纵向模式下总是这样,我可以在之后旋转图像。 或者有没有办法正确设置摄像头?我读了很多关于这个的帖子,但没有一个答案对我有用(Galaxy s2,Android v2.3)
我想选择多个图像,并给这些图像一个按钮,以便用户可以删除图像以及。我可以做图像的预览,但我不能删除图像后预览。 这是我的javascript代码 这是我的HTML代码,其中id=list是图像显示为缩略图的区域: 如何插入删除选项与每一个图像?