- 拨号功能
- 调用拨号界面前需要判断当前设备是否有拨号程序,可使用try-catch捕获打开异常,避免应用闪退
- webview开发问题
- 缓存问题——没有开启缓存可能导致网页部分功能不能正常使用,而出现异常情况
- WebViewClient对象下的方法都为异步回调方法,如果在这些方法有android UI相关操作则需要注意activity关闭时不再执行到相应的操作,比如dialog的关闭操作,在onDestroy()中提前执行,同时dialog的显示和关闭要使用同步锁
- url拦截会导致头信息丢失(还可能有其他信息丢失),从而导致一些功能异常,因此需慎用
- 关于302重定向问题,还未解决
- 避免webView内存泄漏:https://www.jianshu.com/p/3e8f7dbb0dc7 http://blog.youkuaiyun.com/xygy8860/article/details/53334476?utm_source=itdadao&utm_medium=referral
- 悬浮窗口问题
- 悬浮窗多次添加会导致闪退——在添加或移除悬浮窗的代码外围使用try-catch捕获异常,避免闪退
- 悬浮按钮如需全局移动则需要将flags属性设置为FLAG_LAYOUT_IN_SCREEN,但不要同时设置FLAG_LAYOUT_INSET_DECOR,否则在状态栏下悬浮按钮会被遮挡住部分视图
- 文件操作问题
- 在主线程中执行文件操作在少量4.4机型中可能会出现ANR,因此为了避免ANR,尽量不要在主线程中操作文件
- 多界面同时切换问题(android系统bug)
- 当当前应用在切换界面的同时也在切换应用的时候,部分机型会出现ANR,当界面频繁快速切换时也有可能出现 —— 尽量避免频繁切换界面且在应用跳转时不要执行界面切换相关操作
- 第三方登录:
1)QQ授权登录的签名配置需要全部小写
2)微信授权登录的签名配置需要全部大写
3)注意包名、appID必须和第三方后台配置一至
4)如果配置信息都一至,还是无法授权,则可能是缓存问题(如:微信缓存了错误的签名票据)
5)签名的填写千万千万不要手动敲,一定要复制,不然极容易出错(已踩坑,而且是很深很深的坑)
6)QQ提供的签名获取工具无法获取一些应用的签名,可以使用微信或微博提供的签名获取工具获取 - 在manifast文件中配置meta-data数据时,如果属性value的值为一长串的数字,那么必须在前面加上"\ “(斜杠和空格),否则编译之后,该数值会被修改,从而造成错误;如原本value=“1234567890123”,那么应该改成value=”\ 1234567890123",这样编译出来的apk中对应的值才是正确的
- 如果出现Activity或一些成员变量莫名其妙被回收变NULL值,则可能是android:configChanges配置不当,Activity被系统回收导致(只有部分机型会出现),示例:跳转第三方支付返回后闪退;QQ、微信授权登录返回后闪退。关于android:configChanges配置说明,请看文章:http://blog.youkuaiyun.com/u012670875/article/details/79626922 ;所以在开发与第三方应用有关联的APP时,必须好好考虑下android:configChanges配置,避免出现异常。
- 在开发有多层次的Activity相互跳转销毁时,需要仔细考虑android:launchMode配置问题,避免Activity莫名被回收导致异常闪退,或Activity长时间没被回收而浪费内存;android:launchMode配置相关文章:http://blog.youkuaiyun.com/u012670875/article/details/79626484
- android 使用Animation.startNow()启动动画时会有兼容问题,使用View.startAnimation(Animation)启动动画可以解决该问题
- app安装时提示安装包损坏,可能的原因有:1.安装包不完整(确实损坏)2.同包名的不同app已经安装在手机上(比如调试时安装的应用)3.已经安装的同包名APP的编译版本较高(比现在要安装的高)3.采用V2签名后,又对包进行了修改 相关文章:https://www.jianshu.com/p/f8bf29393cfa
- 使用https协议时,如果使用Apache HttpClient进行联网通讯,则可能在低版本的Android设备上无法联网,提示证书不匹配,需要改为HttpsURLConnection则可以解决。参考文章:https://blog.youkuaiyun.com/wangbaochu/article/details/50915938
- app签名相关:在上线三星渠道的时候,会提示签名版本过低不适用的错误,这个时候需要使用apksigner对app进行签名,而不能使用apktool,签名命令:java -jar apksigner.jar sign --ks kestore的路径 --out output.apk input.apk 。 相关的文章:
https://blog.youkuaiyun.com/mrzhouxu/article/details/79225439
https://blog.youkuaiyun.com/qq_32115439/article/details/55520012
https://blog.youkuaiyun.com/lamelias/article/details/53669417
同问题描述链接:https://stackoverflow.com/questions/45182643/double-signing-apk-sha1-other-issues
采用v1签名时需要加 -digestalg SHA1 -sigalg MD5withRSA参数,示例:jarsigner -digestalg SHA1 -sigalg MD5withRSA -keystore test.keystore -storepass test123 -signedjar signed_client.apk client.apk test,不加的话在某些机型上可能无法安装。相关文章:https://blog.youkuaiyun.com/changcsw/article/details/45643607 文章中说到的-tsa参数,测试时无法访问该参数的链接,不过不加-tsa参数,不影响apk的兼容性。 - 为了避免因activity销毁而导致dialog等动态界面显示时闪退问题,对于Activity对象和Context对象的管里必须严格,不要让其他对象(特别是单例对象)直接持有Activity或Context的引用,改成需要使用时动态获取,并且需要有统一的方法判断Activity或Context的生命周期是否是处于可用的状态。
- 游戏接入SDK系列之org.jf.util.ExceptionWithContext: Unsigned short value out of range(编译超限问题),需要将多余的smali文件,移到smali_classes2,smali_classes3…等等。相关文章:https://blog.youkuaiyun.com/Cmh_csdn/article/details/81712522
- RecyclerView控件列表项布局match_parent属性失效:解决方案(1、https://blog.youkuaiyun.com/ll530304349/article/details/52605202 View view = mInflater.inflate(R.layout.item_agenda_detail, parent, false); 2、itemview设置固定宽度值)
- 待补充。。。
android 开发坑点记录
最新推荐文章于 2022-03-07 11:47:38 发布