AndroidStudio buildgradle升级导致的兼容性问题
2016-10-11 11:22
423 查看
发现的问题:
1. app旧版本覆盖升级到新版本后,打开一直ANR甚至闪退。
2. 通过线上5个版本的覆盖升级比较,发现之前版本升级到最新版本都会有问题,需要清空一下数据,应用才能正常打开,否则一直ANR。
3. 安卓6.0版本,无影响。安卓4.4发现会有上述问题。
问题排查:(旧版本环境:2.1.3, 新版本环境:2.2.0)
1.首先看崩溃纪录,没有发现崩溃问题。
2.通过debug模式,进行覆盖安装测试,可以复现以上问题,但是无崩溃信息
3.根据后台输出信息,发现是安装包覆盖安装后,dex加载出现了问题。
4.git比较diff,排除了代码的问题。
5.怀疑是不是编译环境改变导致?
之前gradle的编译版本是:classpath ‘com.android.tools.build:gradle:2.1.3’
最新的安装包,是将gradle的编译版本提高了classpath ‘com.android.tools.build:gradle:2.2.0’
6.将旧版本在2.2.0环境下编译,进行覆盖安装,正常
7.将新版本在2.1.3环境下编译,进行覆盖安装,正常
8.最终分析出:gradle2.2.0的编译没有兼容到安卓低较版本的覆盖安装。
9.测试将2.2.0的应用进行覆盖升级安装到2.1.3,正常。
10.最终解决方案采用与旧版本统一的2.1.3编译环境进行打包。等待以后有新的gradle版本能解决此问题。
2017.6.9补充:
后期加了热修复,同样遇到以上问题。
覆盖安装发生崩溃后,如果手动清理缓存数据,就可以正常打开。(5.0以下覆盖安装会崩溃,5.0以上没问题)
基于此进行了以下排除实验:
最终发现只需要清空file目录,可以正常打开。
因此解决方案是:
覆盖安装后在application中清除应用下的file文件(清除一次即可)
1. app旧版本覆盖升级到新版本后,打开一直ANR甚至闪退。
2. 通过线上5个版本的覆盖升级比较,发现之前版本升级到最新版本都会有问题,需要清空一下数据,应用才能正常打开,否则一直ANR。
3. 安卓6.0版本,无影响。安卓4.4发现会有上述问题。
问题排查:(旧版本环境:2.1.3, 新版本环境:2.2.0)
1.首先看崩溃纪录,没有发现崩溃问题。
2.通过debug模式,进行覆盖安装测试,可以复现以上问题,但是无崩溃信息
3.根据后台输出信息,发现是安装包覆盖安装后,dex加载出现了问题。
4.git比较diff,排除了代码的问题。
5.怀疑是不是编译环境改变导致?
之前gradle的编译版本是:classpath ‘com.android.tools.build:gradle:2.1.3’
最新的安装包,是将gradle的编译版本提高了classpath ‘com.android.tools.build:gradle:2.2.0’
6.将旧版本在2.2.0环境下编译,进行覆盖安装,正常
7.将新版本在2.1.3环境下编译,进行覆盖安装,正常
8.最终分析出:gradle2.2.0的编译没有兼容到安卓低较版本的覆盖安装。
9.测试将2.2.0的应用进行覆盖升级安装到2.1.3,正常。
10.最终解决方案采用与旧版本统一的2.1.3编译环境进行打包。等待以后有新的gradle版本能解决此问题。
2017.6.9补充:
后期加了热修复,同样遇到以上问题。
覆盖安装发生崩溃后,如果手动清理缓存数据,就可以正常打开。(5.0以下覆盖安装会崩溃,5.0以上没问题)
基于此进行了以下排除实验:
/** * 清除APP数据 */ private void clearData() { final String path = getApplication().getFilesDir().getParent(); //清空配置文件目录shared_prefs; // File file_xml = new File(path + "/shared_prefs"); // if (file_xml.exists()) { // File[] files = file_xml.listFiles(); // for (int i = 0; i < files.length; i++) { // files[i].delete(); // } // } //清空缓存目录; // File file_cache = getApplication().getCacheDir(); // if (file_cache.exists()) { // File[] files = file_cache.listFiles(); // for (int i = 0; i < files.length; i++) { // files[i].delete(); // } // } //清空file目录; File file_file = new File(path + "/files"); if (file_file.exists()) { File[] files = file_file.listFiles(); for (int i = 0; i < files.length; i++) { files[i].delete(); } } //清空数据库目录; // File file_db = new File(path + "/databases"); // if (file_db.exists()) { // File[] files = file_db.listFiles(); // for (int i = 0; i < files.length; i++) { // files[i].delete(); // } // } }
最终发现只需要清空file目录,可以正常打开。
因此解决方案是:
覆盖安装后在application中清除应用下的file文件(清除一次即可)
相关文章推荐
- Android Studio Gradle Build Running 特别慢的问题探讨
- 安卓开发之Android Studio Gradle build running问题
- 解决Android Studio Gradle Build Running 特别慢的问题
- android studio build gradle版本不兼容导致not found runProguard
- 解决Android Studio Gradle Build Running慢的问题
- Android Studio Gradle Build Running 加载很久问题。
- Android Studio sync build.gradle 出现:Failed to resolve: com.android.support:appcompat 问题
- Android Studio Gradle Build Running 特别慢的问题
- mac下解决Android Studio Gradle Build Running 特别慢的问题
- Android Studio Gradle Build Running 加载很久问题。
- Android Studio Gradle Build Running 特别慢的问题
- AndroidStudio 问题Gradle sync failed: failed to find Build Tools revision 23.0.0 rc2
- android studio build cpu 99%运行问题
- Android studio build.gradle配置,debug下使用正式签名,重命名apk
- Android Studio之build.gradle小技巧
- AndroidStudio自定义属性xmlns无法识别问题解决in Gradle projects,always use http://schemas.android.com/apk/res-auto
- android studio build.gradle 中的dependencies 的 compile jar文件
- Android Studio中文注释提示编码问题,Gradle: 警告:编码 GBK 的不可映射字符的方法...
- Android studio升级导致原有工程出错的解决方法