1、use jsonreader.setlenient(true) to accept malformed json at line 1 column 1 path

问题描述:
同样的代码,一个请求本地,一个请求远程,本地的能Gson解析成功,远程的不能。

问题分析:
因为本地服务器没有开启数据gzip压缩,所有我们代码中开了gzip压缩也能解析成功,而远程开启了,所以解析报错。详细信息看连接:https://www.jianshu.com/p/a9d861732445

解决方案:
把Request中的.addHeader(“Accept”, “application/json”)移除。
如果我们在代码里没有手动设置 Accept-Encoding = gzip ,
那么 OkHttp 会自动处理 gzip 的解压缩;反之,你需要手动对返回的数据流进行 gzip 解压缩。

2、Cannot fit requested classes in a single dex file methods 66251 大于 65536

问题分析:
项目过大,超过过了65536个方法,一个dex装不下了,需要使用multidex 。因为Android系统定义总方法数是一个short int,short int 最大值为65536

解决方案:
gradle文件的defaultConfig默认配置里面增加:
multiDexEnabled true
新增依赖 implementation ‘com.android.support:multidex:1.0.3’
自定义的Application的onCreate()中添加: MultiDex.install(this);

3、Android嵌套webview时,软键盘挡住输入框问题

解决方案:
在manifest文件中添加 android:windowSoftInputMode=“stateAlwaysHidden|adjustResize”
新增AndroidBug5497Workaround类

import android.app.Activity;
import android.graphics.Rect;
import android.os.Build;
import android.view.View;
import android.view.ViewTreeObserver;
import android.widget.FrameLayout;public class AndroidBug5497Workaround {public static void assistActivity(Activity activity) {new AndroidBug5497Workaround(activity);}private View mChildOfContent;private int usableHeightPrevious;private FrameLayout.LayoutParams frameLayoutParams;private int contentHeight;private boolean isfirst = true;private Activity activity;private int statusBarHeight;private AndroidBug5497Workaround(Activity activity) {//获取状态栏的高度int resourceId = activity.getResources().getIdentifier("status_bar_height", "dimen", "android");statusBarHeight = activity.getResources().getDimensionPixelSize(resourceId);this.activity = activity;FrameLayout content = (FrameLayout) activity.findViewById(android.R.id.content);mChildOfContent = content.getChildAt(0);//界面出现变动都会调用这个监听事件mChildOfContent.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {public void onGlobalLayout() {if (isfirst) {contentHeight = mChildOfContent.getHeight();//兼容华为等机型isfirst = false;}possiblyResizeChildOfContent();}});frameLayoutParams = (FrameLayout.LayoutParams)mChildOfContent.getLayoutParams();}//重新调整跟布局的高度private void possiblyResizeChildOfContent() {int usableHeightNow = computeUsableHeight();//当前可见高度和上一次可见高度不一致 布局变动if (usableHeightNow != usableHeightPrevious) {//int usableHeightSansKeyboard2 = mChildOfContent.getHeight();//兼容华为等机型int usableHeightSansKeyboard = mChildOfContent.getRootView().getHeight();int heightDifference = usableHeightSansKeyboard - usableHeightNow;if (heightDifference > (usableHeightSansKeyboard / 4)) {// keyboard probably just became visibleif (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {//frameLayoutParams.height = usableHeightSansKeyboard - heightDifference;frameLayoutParams.height = usableHeightSansKeyboard - heightDifference + statusBarHeight;} else {frameLayoutParams.height = usableHeightSansKeyboard - heightDifference;}} else {frameLayoutParams.height = contentHeight;}mChildOfContent.requestLayout();usableHeightPrevious = usableHeightNow;}}/*** 计算mChildOfContent可见高度*/private int computeUsableHeight() {Rect r = new Rect();mChildOfContent.getWindowVisibleDisplayFrame(r);return (r.bottom - r.top);}
}

在使用了webview的类中初始化时调用:
AndroidBug5497Workaround.assistActivity(this);

4、android 开发者选项提示:此用户无法使用开发者选项(调试RK系列的硬件设备)

问题描述:
状态栏不能下拉,无法使用最近任务切换、返回桌面、锁屏界面打不开
开发者模式面板提示:此用户无法使用开发者选项

解决方案:
打开设备中USB-》 链接电脑
执行ADB命令
adb shell settings put secure user_setup_complete 1
adb shell settings put global device_provisioned 1

5、Caused by:kotlin.UninitializedPropretyAccessException:lateinit peoperty adapter has not been initialized

问题分析:
在使用了var lateinit adapter时,adapter没有初始化就去进行操作了。

解决方案:
在使用之前先判断adapter有没有初始化

//判断adapter有没有初始化
if(!::adapter.isInitialized){//adapter没有初始化,则进行初始化
}

6、open failed: EACCES (Permission denied)

问题描述:明明已经申请过文件读写权限,却还是报错,无法读取文件。

问题分析:Android Q文件存储机制修改成了沙盒模式。APP只能访问自己目录下的文件和公共媒体文件。对于AndroidQ以下,还是使用老的文件存储方式。Android Q仍然使用READ_EXTERNAL_STORAGE和WRITE_EXTERNAL_STORAGE作为存储相关运行时权限,但现在即使获取了这些权限,访问外部存储也受到了限制。

解决方案:目前版本的解决方案,在manifest的applicaiton标签添加

android:requestLegacyExternalStorage="true"  //使用旧的存储策略,但不是长久之计。

7、More than one file was found with OS independent path ‘lib/armeabi-v7a/**.so’

问题分析:在组件化开发中,存在多个module。而基础组件中正好使用到了这个so文件,然后其他组件有依赖了基础组件,导致编译时报错出现重复的so。

解决方案:移除基础组件build.gradle代码

    sourceSets.main {jniLibs.srcDir 'libs'}

8、miui 11/12报错 E/ActivityInjector: get life cycle exception
java.lang.ClassCastException: android.os.BinderProxy cannot be cast to android.app.servertransaction.ClientTransaction

解决方案:在项目中创建一个valuesv29.xml,然后在style中新增

<item name="android:forceDarkAllowed">false</item>

完整代码:

<style name="AppTheme" parent="Theme.AppCompat.NoActionBar"><!-- Customize your theme here. --><item name="colorPrimary">@color/colorPrimary</item><item name="colorPrimaryDark">@color/colorPrimaryDark</item><item name="colorAccent">@color/colorAccent</item><item name="android:forceDarkAllowed">false</item></style>

详细讲解请看:链接,(需要梯子)

9、在build.gradle下定义了APK打包后的名字,但是打包后APK名字出现乱码。
解决方案:在项目下的gradle.properties内新增一行代码,
-Dfile.encoding=UTF-8

持续更新中。。。

记录一下Android开发中遇到的问题和解决方案相关推荐

  1. Android记录22-关于开发中账号绑定的逻辑处理

    Android记录22-关于开发中账号绑定的逻辑处理  转载请注明:IT_xiao小巫    博客地址:http://blog.csdn.net/wwj_748 前言 本篇博客要跟大家分享的是开发中我 ...

  2. Android开发中的一些小知识点记录(101-120)

    编写不易,如有转载,请声明出处:http://blog.csdn.net/zxc514257857/article/details/118554522 Android开发中的一些小知识点记录(1-20 ...

  3. Android开发中使用七牛云存储进行图片上传下载

    Android开发中的图片存储本来就是比较耗时耗地的事情,而使用第三方的七牛云,便可以很好的解决这些后顾之忧,最近我也是在学习七牛的SDK,将使用过程在这记录下来,方便以后使用. 先说一下七牛云的存储 ...

  4. android listview下拉动画效果,Android开发中利用ListView实现一个渐变式的下拉刷新动画...

    Android开发中利用ListView实现一个渐变式的下拉刷新动画 发布时间:2020-11-23 16:50:31 来源:亿速云 阅读:80 作者:Leah 本篇文章给大家分享的是有关Androi ...

  5. android中资源文件的两种访问方式,在android开发中进行数据存储与访问的多种方式介绍...

    在android开发中进行数据存储与访问的多种方式介绍 更新时间:2013年06月07日 16:24:23   作者: 很多时候我们的软件需要对处理后的数据进行存储或再次访问,Android为数据存储 ...

  6. Android开发中保存数据的四种方法方法

    本文来自:安卓航班网 在Android开发中我们会接触到四种数据存储方式,每种存储方式都各有不同:以下安卓航班分别列举了Android开发中的不同存储方式的特点. 一,Preferences Pref ...

  7. android最佳开发实现_在android开发中使用可访问性最佳做法

    android最佳开发实现 As you know, accessibility is about building products that everyone can use easily and ...

  8. Android开发中的WMS详细解析

    /   今日科技快讯   / 近日,小冰公司宣布对旗下人工智能数字员工产品线启动年度升级.本次升级加强的技术包括大模型对话引擎.3D神经网络渲染.超级自然语音及AIGC人工智能内容生成.小冰公司计划将 ...

  9. Android开发中的日常积累

    欢迎Star,Fork https://github.com/lizhangqu/CoreLink 里面记录了开发过程中有用的东西,欢迎补充,不定时更新. Android 性能优化 Android内存 ...

最新文章

  1. oracle java api_oracle java api
  2. oracle触发器监听数据变化,【Trigger】利用Oracle的触发器,自动记录数据的变动履历...
  3. java socket通信安全_Java Socket通信
  4. 二分法分页 mysql_LeetCode 04寻找两个正序数组的中位数(困难)二分法
  5. drools规则引擎因为内存泄露导致的内存溢出
  6. 关于Docker你应该知道的10件事
  7. mysql 插入当前时间_MySql优化之前期探索
  8. go语言mysql框架_超级详细:Go语言框架Gin和Gorm实现一个完整的待办事项微服务...
  9. client mysql 逗号_mysql comment line client(MySQL命令行常用操作)
  10. Java面试问题汇总(Redis)
  11. iframe 与div
  12. html如何自动获取屏幕高度,css如何获取屏幕高度?
  13. enfuzion与lsf构建渲染集群_渲染农场 - 秦瑞It行程实录 - 博客园
  14. R或RStudio下载包时出错解决方案
  15. 改进型脉振高频注入源码 stm32工程 脉振高频注入是一种通过在d轴注入正弦电压
  16. Redis底层 知识(校招、社招必看)
  17. 如何重置 Mac 上的 NVRAM
  18. 利用百度进行人脸识别
  19. macOS中比较好的解压缩软件:The Unarchiver
  20. 使用rewrite规则实现将所有到a域名的访问rewrite到b域名

热门文章

  1. android充电信息代码,【代码】android 关机充电
  2. 真小白|一步步教你用Python抓取微信好友分析
  3. mysql指引(十一):innodb基本结构和执行逻辑拆解
  4. mycat基本原理和使用
  5. “温暖中国--贫困民工患病子女生命救助行动”系列活动
  6. 外行人对软件测试的常见误解
  7. 强化学习系列(1) 基本概念
  8. LeetCode 695.岛屿的最大面积
  9. NGINX做反向代理缓存服务器原理
  10. 永洪Desktop实例分享|星巴克数据指标体系建设及炫酷可视化大屏搭建