![](https://img-blog.csdnimg.cn/20200304092150428.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
Android 日常填坑集锦
本专题内容只记录从业生涯遇到的一些问题,和最后的解决方法。属于比较分散的知识点。但是未进行系统性的研究。属于从业过程中的经验积累,没有系统性的理论高度。
闽农qq:994955138
闽南老农qq:994955138
展开
-
zshrc命令not found问题,环境变量的互相覆盖
那么第一个会被第二个覆盖,最终的环境变量结果是 /new/path2。如果我们改一下环境变量的设置成。假设我们设置了以下环境变量。所以一定要注意采用拼接式。原创 2024-08-09 11:40:31 · 112 阅读 · 0 评论 -
安卓代码安全刺客,小心你引用的第三方库正在摧毁你的代码混淆
要命的问题就是许多开发第三方库的作者对混淆比较随意,比如他的包名是com.aa.bb.cc,那么直接配置了 keep class com.aa.**{8;这个时候只要你主项目也存在com.aa这个目录,那么也会直接被踢出混淆的行列。打击面就更广了,所有模块包括主项目的类和静态方法都被踢出混淆行列,导致代码裸奔。安卓多模块依赖或者依赖第三方库时,在依赖库模块的开发配置中有一个非常重要的配置就是混淆。一般有两种选择:第一种是,由主模块统一配置混淆。第二种是,子模块自己配置混淆,不需要主模块另外配置。原创 2024-07-24 16:55:36 · 213 阅读 · 0 评论 -
签名证书文件泄漏不要慌,Rotate signing带你无缝更换新签名
如果oldkey.jks 泄漏了,可以直接换一个新的签名newkey.jks,然后使用oldkey.jks和newkey.jks共同对新APK进行签名。(一)oldkey和newkey共同签名的包的签名MD5 和 oldkey签名MD5一致。1.oldkey签名的包可以被oldkey和newkey共同签名的包覆盖安装。(二)用新签名和旧签名一起生成一个沿袭签名(lineage key)2.共同签名的包和使用newkey.jks签名的包可以互相覆盖。1.共同签名的包不能被oldkey签名的包覆盖。原创 2024-01-30 18:30:08 · 434 阅读 · 0 评论 -
Error building Android library: Direct local .aar file dependencies are not supported 亲测有效
我们在使用 Android Studio version (4.0.0+)引用aar的时候,上面的报错是不是很熟悉,修复方法是。原创 2023-11-17 10:51:28 · 497 阅读 · 0 评论 -
git项目太大导致拉取超时或者内存溢出处理
git项目太大导致拉取超时或者内存溢出处理原创 2023-04-27 11:27:07 · 782 阅读 · 0 评论 -
java.lang.IndexOutOfBoundsException: Inconsistency detected. Invalid item position 6(offset:6).state
如果你在界面中使用了RecyclerView,并且添加了上拉加载和下拉刷新的功能的话,一定对这个异常不会陌生。因为这个异常就时常发生在刷新清除数据的时候,刚好上拉加载的也调用了notifyDataSetChange();然后就会跑出如下异常:java.lang.IndexOutOfBoundsException: Inconsistency detected. Invalid item原创 2017-08-09 11:44:33 · 2412 阅读 · 0 评论 -
Android Studio Gradle配置,代码混淆,多渠道一键打包
以前用eclipse的时候多渠道打包往往依赖于第三方插件,不是很方便也经常打包出错。有了android studio就方便多了。一、我们来先看看Gradle配置apply plugin: 'com.android.application'android { compileSdkVersion 24 //编译的sdk版本 buildToolsVersion '原创 2017-01-09 11:37:55 · 1233 阅读 · 3 评论 -
android studio 导入项目问题 Re-download dependencies and sync project
从网上下载了一个项目,导入Android studio,结果出现如下错误Error:Failed to open zip file.Gradle's dependency cache may be corrupt (this sometimes occurs after a network connection timeout.)Re-download dependencies and原创 2017-09-08 14:42:39 · 2733 阅读 · 1 评论 -
Android Studio日志过滤
我们在调试安卓应用的时候,往往需要精准的日志才能找到问题所在。如果只能想看单个进程的日志那么比较简单,这不赘述。有时候我们的app有好几个进程,进程之间还存在交互。这个时候就不能只选中单进程的日志。只能按日志Level来选择。 非常令人讨厌的就是安卓系统有非常多的系统服务的日志,导致打开调试的时候大量的日志一直刷,影响我们精准的阅读。这个时候的过滤就显得很重要了。 1.按需要的内容筛选2.剔除不需要的日志(比如很多系...原创 2021-09-10 17:06:39 · 2052 阅读 · 0 评论 -
Error:com.android.builder.internal.aapt.AaptException: Failed to crunch
有时候在网上下载或者从别的地方导进来的项目会报这个错误 Error:com.android.builder.internal.aapt.AaptException: Failed to crunch。这个是因为在windows系统中AnroidStudio的文件路径不能超过240字节,否则就会报此错误。所以,只要把项目的路径放的浅一点问题就解决了,工作空间最好在硬盘的往下一级就好,不宜太多层级原创 2016-12-01 16:20:17 · 6759 阅读 · 0 评论 -
AndroidSdk开发,混淆后的代码出现bug后怎么找到bug位置
我们在开发Android应用时,为了代码的安全往往要混淆代码,以防止代码被修改。混淆是好事,但是这往往也导致出现bug时,报错是一大堆abcd之类的路径。很难真正找到错误的位置所在。所以开发工具也考虑到了这一点,会给我们生成一张映射对照表,对照表里面是混淆之前和混淆之后代码的对应关系。我们在给sdk jar包混淆时,往往用的是proguard工具。 那么首先要在混淆之前,原创 2017-08-02 10:05:20 · 1206 阅读 · 0 评论 -
Android sdk开发,代码的混淆
我们在开发安卓sdk的时候,通常开发完之后是导出jar包提供其他接入的开发者使用。这就涉及一个安全问题,如果赤裸裸把jar包发出去有可能会被反编译和修改。所以我们需要代码混淆。所以我们需要proguard工具。我们可以在adt里面找到他,也可以自己去下载一个自己想要的版本。点击启动工具后会启动操作界面点击右下角的load configuration 加载混淆原创 2017-08-01 11:04:56 · 2346 阅读 · 0 评论 -
android不规则图形控件显示背景图片以及点击效果,多边形控件实例
我们在开发应用的过程中,经常会遇见美术突发奇想,给你来个狂拽酷炫效果的情况。下面我们就来说一下多边形控件,以及他的点击。先上图一、首先定义各种图形1.菱形public class DiamondView extends ImageView { private Context mContext; private int mWidth; privat原创 2017-09-06 17:40:38 · 2296 阅读 · 0 评论 -
android开发中论坛帖子图片的排版
有些时候在论坛的图片排版问题上不想光用九宫格,因为不管每行回复是几张图片都用九宫格的话,有时候并不是那么整齐。所以有时候会根据UI的要求,对不同的张数进行不同的排版。比如其实对于这种图片的排版,在实现上很简单。只不过是重写ViewGroup而已,没什么技术含量,下面直接贴出代码/** * Created by LZC on 2017/1/6. */public原创 2017-01-09 10:30:59 · 959 阅读 · 0 评论 -
Assets大文件读取Assets.open Java heap space内存溢出问题
有时候在极端情况下,需要在Assets里头放置特别大的文件,有可能达到上G。这个时候我们调用Assets.open 来打开这个文件有可能就会有内存溢出。究其原因是 为了更快的读取文件,减少IO操作,Assets.open 带用了底层 mmap,把文件映射到内存里面。过大的文件致使内存溢出。 这个时候我们可以考虑使用context.getClass().getClassLo...原创 2019-04-03 14:38:19 · 713 阅读 · 0 评论 -
Android傻瓜式脚本录制
网易游戏的AirtestIDE是目前比较优秀的脚本录制工具。它不需要手机ROOT,也不需要其他的任何操作。直接普通的手机就可以在线调试,执行脚本。而且支持跨平台,也就是说PC、WEB、IOS它一样行。如上图,Airtest 是图像匹配的方式查找点击点,匹配的效果很好,基本上误差不大。 Poco是源生控件匹配的方式查找控件从而进行点击。在右边的4区域连接上手机之后,直接在左边的Airtest或者Poco区域直接点击一下你想要的辅助事件,然后在右边的屏幕上就可以直接截取图片或者在Poco区域查看布局原创 2020-08-14 09:10:42 · 4888 阅读 · 0 评论 -
Android Studio设置了断点却无法进入断点调试(多进程调试)
有的时候在Android Studio中明明设置了断点,也确认了代码会走到断点处,但是执行Debug后,断点处会显示打钩,却不能但不调试,好像代码已经执行过去了。这种问题大概率就是,你调试的代码不在主进程,而在另外一个进程。这个时候就要用到远端进程调试了。在执行普通Debug调试之后,在进程启动的情况下,再如下图操作。就可以调试目标进程的代码了。...原创 2021-06-22 11:54:19 · 3543 阅读 · 0 评论 -
Android项目依赖包配置了权限,主程序运行的时候仍然提示没有权限
主要的原因是主项目gradle配置的applicationId和manifest配置的packageName不一致,导致依赖包和主程序合并权限的时候看起来权限已经声明进来了,但是运行起来却不生效。具体为什么不生效还有待研究。只要把gradle的applicationId和manifest的packageName配置成同一个值,问题就自然解决了。...原创 2021-03-05 17:26:17 · 464 阅读 · 0 评论 -
解决动态申请了权限,却还是报错open failed: EACCES (Permission denied)的问题
随着安卓系统的不断更新,很多业务代码也要跟着更新,否则经常会有意想不到的错误发生。比如在安卓Q(10)开始,就采用存储的分区控制。导致明明已经申请了android.permission.WRITE_EXTERNAL_STORAGE权限,却还是报错open failed: EACCES (Permission denied)。只能通过手动打开权限,还能使用存储权限。 话不多说,先讲...原创 2020-05-06 17:52:17 · 11764 阅读 · 13 评论 -
Fragment的空指针问题
很多人平时已经写过许多Fragment的代码,觉得自己对Fragment已经很熟悉。但是其实对于很多人来说,Fragment并不像自己想象的那么熟悉。 很多时候使用Fragment总是会莫名其妙出现空指针问题。下面就来说说很多人不太熟悉的地方。我们初始化Fragment的时候经常会习惯性的 new Fragment(参数...); 但是,当我们扒开android的源码时,却发现不...原创 2020-03-18 09:42:06 · 873 阅读 · 0 评论 -
Android WebView加载网页的空白和图片加载失败问题
WebView在加载网页的时候,有时候会出现完全空白。那么具体是什么问题呢?1. 其中一个很重要的原因是网页是HTML5标准的。需要DomStorage缓存支持。 所以添加上 webSettings.setJavaScriptEnabled(true); webSettings.setDomStorageEnabled(true);2.网页显示出来之后,发现网页内容出来...原创 2020-02-24 16:29:36 · 2292 阅读 · 0 评论 -
java 反射中包含基础类型参数的问题
在android开发中经常要用到反射,但是有的时候会碰到构造方法或者方法的参数是基本类型时,老是报构造方法或者方法找不到。调用反射的代码这个时候只要改成这样就行了原来是类型的错误,boolean类型和Boolean包装类型是不一样的。所以基础类型都是要用原来的类型,不能传包装的类型。比如String,int,boolean原创 2017-03-07 19:25:27 · 766 阅读 · 0 评论 -
Android全屏显示时,状态栏显示在最顶层,不隐藏。
只需要在Activity的setContentView之前加这两句就可以了。@Overridepublic void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getWindow().addFlags(WindowManager.LayoutParams.FLAG_LAY原创 2016-12-15 11:10:44 · 11396 阅读 · 0 评论 -
AnimatorSet和ObjectAnimator、PropertyValuesHolder参数详解
AnimatorSet混合动画类,可以并联或者串联地播放动画。一般的AnimatorSet会和ObjectAnimator一起使用用于切实的改变视图的属性(普通的Animation不会改变视图的属性,动画播放完毕后视图又恢复原来的属性)。ImageView mLargeCircle = new ImageView(getContext());Pro原创 2016-12-07 18:01:41 · 1400 阅读 · 0 评论 -
Android 文件下载302的问题,下载地址重定向
在安卓开发中经常需要用到文件下载功能,很多的时候会用基础的写法去写,比如URL httpUrl = new URL(url.replaceAll(" ", "%20")); HttpURLConnection http = (HttpURLConnection) httpUrl.openConnection(); http.setConnectTimeo原创 2017-04-12 14:31:06 · 7855 阅读 · 0 评论 -
淘宝客 WebView打开淘宝链接失败的解决方法
直接重写如下mWebView.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) {原创 2017-04-19 14:22:30 · 4852 阅读 · 2 评论 -
Android: Error generating final archive: Found duplicate file for APK: AndroidMainfest.xml问题
大概的原因:引用jar包,引用的jar包在打包的过程,把androidmainfest.xml也打包进来了安装的时候,两次使用androidmainfest.xml、解决办法:打包jar的时候,把androidmainfest.xml去掉转载 2017-07-14 15:47:43 · 783 阅读 · 0 评论 -
Android本地文件存储,机身和外置sd卡
在安卓的开发中,有时候要用到大文件的存储,这个时候就不能存储在应用内部(data/data),只能借助外部存储。而外部存储又分为手机机身的存储空间(一级sd卡)和外置sd卡存储空间(二级sd卡)。1.要存储首先是获得读写权限 uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />原创 2017-06-15 10:10:26 · 5239 阅读 · 0 评论 -
安卓外置sd卡创建文件失败的解决办法
文章创建时间过于久远,很多知识已经不适用,该帖子已删除。原创 2017-06-15 10:31:42 · 10301 阅读 · 4 评论 -
android apk安装包修改了之后在安卓7.0系统上无法安装的解决办法
我们在开发app的时候,往往在打包完之后还要进行分发。所以需要在安装包中写入一定的文件。比如渠道或者动态添加启动时预加载的信息。但是现安卓开发一般用的是Android Studio ,而且Studio 版本一般都是2.2以上。问题的关键就是在这里,在Studio 2.2以后引入一项新的应用签名方案 APK Signature Scheme v2 ,它能提供更快的应用安装时间和更多针对未授权AP原创 2017-07-06 16:27:02 · 8742 阅读 · 0 评论 -
关于PorterDuffXferMode效果出不来的问题
在官方文档中PorterDuffXferMode的效果是这样的\然而实际上当dst和src都不是bitmap的时候,效果是这样的所以使用PorterDuffXferMode是有条件的,条件如下1、关闭硬件加速。2、dst和src都是bitmap并且两个bitmap大小尽量一样。3、背景色为透明色。4、如果两个bitmap位置不完全一样,可能也原创 2016-12-12 10:38:47 · 908 阅读 · 0 评论 -
Java/Android 大文件获取SHA1防止内存溢出
在Java或者Android开发中难免要遇到校验文件正确性的问题。比如下载一个apk包或者下载一个游戏包,担心文件会被篡改。这个时候就可以对比源文件的SHA1和下载到本地的文件的SHA1。 在这个过程中往往会遇到文件比较大,读取很慢或者一次性读取造成内存溢出的问题。我们下面结合代码来讲解和解决这个问题。/** * 大文件获取 SHA1 防止内存溢出 * @param file ...原创 2018-06-08 09:49:20 · 1123 阅读 · 0 评论