Android Studio 2.3的各种新增疑难杂症

3月初谷歌发布了Android Studio 2.3,博主这一阵认真用2.3把之前的项目重编了一下,发现了不少兼容性问题,于是决定开个贴记录一下这些疑难杂症。


一、首先是升级完毕之后,原来的项目居然编译不过了,原因是Android Studio 2.3与其自带的Gradle闹矛盾,需要把Gradle升级到3.3并做一系列的配置调整才行,具体操作步骤详见博文《 Android Studio升级到2.3的编译问题解决办法》。


二、在管理WIFI或者热点操作时,原本都要先调用以下代码获取WifiManager的实例:
WifiManager mWifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
但是在Android Studio 2.3中提示该行代码编译失败,失败描述为“Error:Error: The WIFI_SERVICE must be looked up on the Application context or memory will leak on devices < Android N. Try changing  to .getApplicationContext()  [WifiManagerLeak]”,
这句话的大意是,无线网络服务WIFI_SERVICE必须由Application的上下文去获取,否则的话,在7.0以下的设备中会发生内存泄漏。所以要在getSystemService方法之前加上“getApplicationContext()”,代码举例如下:
WifiManager mWifiManager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);


三、把编译好的工程导出apk安装包,前几个弹窗没什么变化,可是最后一个窗口突然增加了几个复选框,如下图所示:


光看字面意思,左边复选框的意思是给jar包签名,右边复选框的意思是给apk签名“V2 (Full APK Signature)”,所以本人毫不犹豫地勾选了右边的复选框。没想到最后生成的apk,却无法在大多数手机上安装,只能在Android7.0上安装。查了很久才发现,正确的做法是勾选左边的复选框“V1 (Jar Signature)”,然后才能导出可以正常安装的apk。

需要注意的是,如果不是通过菜单导出apk,而是通过命令行导出apk,那么需要修改模块的build.gradle,在里面的“signingConfigs”——“release”节点下面增加一行“v2SigningEnabled false”,表示关闭V2的签名操作。举例如下:
  signingConfigs {
   release {
    storeFile file("release.keystore")
    storePassword "password"
    keyAlias "release"
    keyPassword "password"
    v2SigningEnabled false
   }
  }


点此查看Android开发笔记的完整目录

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值