- 博客(63)
- 资源 (7)
- 收藏
- 关注
原创 Mac下配置adb环境变量
1、打开终端输入touch .bash_profile点回车(温馨tip:点(.)前有空格哦,下同。)open -e .bash_profile点回车,便可打开 .bash_profile 文档;2、添加路径 .bash_profile 打开后,我们在这里添加路径。如果打开的文档里有内容,则用英文分号分割。如果是空白文档的话,直接输入如下内容即可:export PATH=${PATH}:????
2016-11-12 16:19:56 1394
原创 DiskLruCache 的使用及源码解析
DiskLruCache 用于实现存储设备缓存,即磁盘缓存,它通过将缓存对象写入文件系统从而实现缓存的效果。DiskLruCache 得到了 Android 官方文档的推荐,但它不属于 Android SDK 的一部分,它的源码及网址文末会贴出来。下面分别从 DiskLruCache 的创建、缓存查找和缓存添加这三个方面来介绍 DiskLruCache 的使用方式。
2020-11-11 15:41:18 2701 5
原创 LruCache 的使用及源码解析
常用的三级缓存主要是指 LruCache、DiskLruCache、网络,其中 LruCache 对应内存缓存、DiskLruCache 对应磁盘缓存。LRU 全称是 Least Recently Used,即最近最少使用策略,意思是当缓存到达限制时候,优先淘汰近期内最少使用的缓存,LruCache 和 DiskLruCache 都是采用 LRU 策略。比如说 Android 中常来缓存 Bitmap,我们先从 LruCache 中取,取不到再从 DiskLruCache 中取,也取不到的话,最后才从数据源
2020-10-27 16:20:21 2242 8
原创 Java 中的 String、StringBuilder、StringBuffer 的区别
一、是什么?String 不可变字符序列String 是字符串常量,其对象一旦创建之后该对象是不可更改的, 因此在每次对 String 类型进行改变的时候其实都等同于生成了一个新的 String 对象,然后将指针指向新的 String 对象,所以经常改变内容的字符串最好不要用 String ,因为每次生成新对象都会开辟新的内存空间,不仅占用大量内存空间,特别当内存中无引用对象多了以后, JVM 的 GC 就会开始工作,那速度一定是相当慢的,对系统性能产生影响。String 这个类很特殊,特殊在于
2020-10-22 12:05:10 2258 7
原创 用 adb 命令直接安装 apk 到手机
1)、用数据线连接 Mac 和手机;2)、打开终端,进入 apk 所在目录下cd /Users/Chitty/workspace/ProjectName/app/build/outputs/apk/ceshi/release/3)、在终端执行adb install ceshi-release-1.0.0.apk...
2018-11-13 14:20:12 2113
原创 master 分支强制回退
前提是 去 GitLab 的 Settings - Repository - Protected Branches -unprojectgit reset --hard 4a5b7f5bgit push -f origin master
2018-11-13 14:18:26 1431
原创 Android Studio下 获取 应用签名以及 MD5、SHA1(签名)、SHA256 值 的命令
keytool -v -list -keystore /Users/Chitty/workspace/BookBlue/tina.jks
2018-11-13 14:14:56 665
转载 app:preDebugAndroidTestBuild
Android Gradle 报错: Error:Execution failed for task ‘:app:preDebugAndroidTestBuild’. Conflict with dependency ‘com.android.support:support-annotations’ in project ‘:app’. Resolved versions for a...
2018-06-20 17:05:26 490
原创 解决 ScrollView.setOnScrollChangeListener() API 23 及以上可用的限制问题
1、自定义一个类继承 ScrollViewpackage com.chitty.views;import android.content.Context;import android.util.AttributeSet;import android.widget.ScrollView;/** * scrollview 滑动控制高度 * Created by Chitty o...
2018-04-20 14:49:11 2643
原创 Android Studio 编译时提示 Error: Please select android sdk.
编译运行项目时报错如下:Error: Please select android sdk.在 app.iml 文件中 检查以下代码是否存在,不存在则添加上,即可正常运行。
2017-12-12 09:56:14 19052 8
原创 升级到 Android Studio 3.0 + Gradle 4.1 遇到的一些坑及解决方案
问题一:Cannot set the value of read-only property 'outputFile' for ApkVariantOutputImpl_Decorated{apkData=Main{type=MAIN, fullName=commonDebug, filters=[]}} of type com.android.build.gradle.internal.api.A
2017-11-29 16:44:07 19814 1
原创 Android 应用获取通知栏权限
工具类 NotificationsUtils:package com.xxx.ua.utils;import android.annotation.SuppressLint;import android.app.AppOpsManager;import android.content.Context;import android.content.pm.ApplicationInfo;impor
2017-11-24 13:19:55 5932
原创 Retrofit response 回调封装
Retrofit response 回调封装:import android.content.Context;import android.content.Intent;import android.content.SharedPreferences;import android.os.Bundle;import android.text.TextUtils;import com.hyphen
2017-11-22 11:39:25 2315
原创 Error:No such property: GROUP for class: org.gradle.api.publication.maven.internal.deployer.DefaultG
问题:在 Android Studio 项目中导入从 Github 上下载的 module 后,会报这个错:Error:No such property: GROUP for class: org.gradle.api.publication.maven.internal.deployer.DefaultGroovyMavenDeployer解决方案:在导入的 module 的 build.grad
2017-11-10 14:15:00 698
原创 Error:Plugin with id 'com.github.dcendents.android-maven' not found.
BUG:Error:Plugin with id 'com.github.dcendents.android-maven' not found.解决方案: 在 Project 下的 build.gradle 里添加全局依赖://1.自动化maven打包插件 classpath 'com.github.dcendents:android-maven-gradle-plugin:1.5'//2.自动
2017-10-31 13:39:22 384
原创 okhttp3.internal.http2.StreamResetException: stream was reset: INTERNAL_ERROR
BUG:okhttp3.internal.http2.StreamResetException: stream was reset: INTERNAL_ERROR原因是协议错误导致的,在实例化 okhttpclient 的时候用以下方法:okHttpClient = httpBuilder .protocols(Collections.singletonList(Pro
2017-10-31 13:23:45 15384
转载 Android 各大手机品牌手机跳转到权限管理界面
感谢分享概述最近项目中遇到这样个需求场景: 当我们的用户使用App时不小心拒绝了某项必要权限,而导致无法正常使用。这时候希望重新去打开该权限,那么问题来了,Android厂家定制的room五花八门,很多时候却发现找不到权限管理的入口。为了解决这一问题,如果我们应用中直接提供权限管理入口给用户,是不是会很方便的解决用户这一困扰呢?经过一番研究,整理出了大部分国产手机直接打开权限管理界面的方法:华为I
2017-10-31 10:57:35 1758
原创 module 的几种依赖方式的区别
module 的几种依赖方式的区别compilecompile 是对所有的 build type 以及 flavor 都会参与编译并且打包到最终的 apk 文件中。ProvidedProvided 是对所有的 build type 以及 flavor 只在编译时使用,类似eclipse 中的 external-libs ,只参与编译,不打包到最终 apk。APK只会打包到 apk 文件中,而不参与编
2017-10-30 18:06:59 1160
原创 com.android.build.api.transform.TransformException
因为项目做了自动化,故 “加固 apk“ 自然也要写入脚本,实现自动化 “构建、加固、重命名、登录 fir.im 、上传 apk“ 等一系列流程:今天在给项目增加 “腾讯乐固“ 的 leguapi.jar 后,构建、打 release 包时,发生 error 如下:错误信息:Error:Execution failed for task ':xxx:transformClassesWithJar
2017-10-30 15:32:59 438
原创 加固和混淆
1 什么是代码混淆代码混淆通常将代码中的各种元素(变量、函数、类名等)改为无意义的名字,使得阅读的人无法通过名称猜测其用途,增大反编译者的理解难度。虽然代码混淆可以提高反编译的门槛,但是对开发者本身也增大了调试除错的难度。开发人员通常需要保留原始未混淆代码用于调试。2 代码混淆就安全了么代码混淆并不能从根本上阻止反编译等。因为代码混淆仅仅提高了阅读难度,但并不能真正阻止反编译。因此,对于高安全要
2017-10-27 13:32:15 3263
原创 重写滑动监听的 WebView
package com.chitty.views;import android.content.Context;import android.util.AttributeSet;import android.webkit.WebView;/** * Created by chitty on 2017/8/29. * 重写滑动监听的 WebView */public class NewWe
2017-10-25 14:39:48 467 1
原创 Can't create handler inside thread that has not called Looper.prepare()
问题:Can't create handler inside thread that has not called Looper.prepare()情景:若在一个 Thread 中启动了一个 ProgressDialog 提示正在连接(即防假死),然后在 Handler 中 dismiss() 这个 ProgressDialog,若有错误信息则在线程中调用 Toast 提示,然后当程序运行到 Toa
2017-10-24 14:08:28 548
原创 PopupWindow 适配 Android 7.0 、7.1
「问题描述」:正常显示: 显示错位: 「解决方案」:package com.chitty.views;import android.graphics.Rect;import android.os.Build;import android.view.View;import android.widget.PopupWindow;/** * Created by chitty on 2017/
2017-10-20 17:19:50 1505
原创 延迟的几种方式
int delay = 1000;// 假设 1 秒的延迟一、线程 Thread new Thread(new Runnable(){ public void run(){ Thread.sleep(delay); handler.sendMessage();----通知主线程执行任务 } }).sta
2017-10-19 09:35:45 1011
原创 android 6.0 以上版本不显示按钮文字
经检查,原因是在 style.xml 中 <item name="colorAccent">@color/white</item>将 颜色改为非白色即可见: <item name="colorAccent">@color/green</item>解决方案 so easy ,排查起来还是不那么 easy .P.S. AppTheme 中的各个变量对应的内容
2017-10-19 09:24:23 443
原创 retrofit 2.0 如何通过 HttpLoggingInterceptor 打印服务器响应的 json ?
使用 Retrofit 网络请求框架,首先要在 app 的 build.gradle 下添加如下依赖:compile 'com.squareup.retrofit2:retrofit:2.3.0'compile 'com.squareup.retrofit2:converter-gson:2.3.0'然后,创建一个 OkHttp3Utils 工具类:import android.content.C
2017-07-23 21:57:33 6495
原创 Android 通过 localstorage 向 HTML5 传参
现在的 APP,Android 与 H5 混合开发已很常见。当 Android 通过 WebView 加载 H5 页面,且需要向其传参时,可以用 loaclstorage 来实现。代码如下: WebView 先要设置如下属性: webView.getSettings().setDomStorageEnabled(true); webView.getSettings().setApp
2017-07-23 21:25:34 2381
原创 WebView 中 H5 页面的软键盘遮挡输入框
如题,WebView 中 H5 页面的软键盘遮挡输入框,于是在 AndroidManifest.xml 中该 Activity 中 添加如下代码:android:windowSoftInputMode="stateAlwaysHidden|adjustResize"但,无效。然后试了 adjustPan | stateHidden | adjustResize 等各种组合均无效。最终,在 setCo
2017-07-23 21:01:35 5204
原创 Could not find any matches for com.tencent.mm.opensdk:wechat-sdk-android-without-mta:+ as no version
Long long ago , 项目中用到了微信分享,我是直接集成了微信的 sdk (没有用友盟的微信分享),之前做这一功能的时候,按照微信的官方文档做的,没有问题,也测试 OK 了,很顺利; 但是,今天运行项目的时候,Android Studio 突然抛出一个 bug,如下:Error:A problem occurred configuring project ':app'.> Could
2017-07-20 13:51:42 3698
原创 TortoiseSVN 客户端与 Android Studio 关联的二三事
一、TortoiseSVN 客户端无法与 Android Studio 关联的解决办法今天重装了一下 TortoiseSVN_1.9.5.27581_x64 客户端,安装好后,打开 Android Studio -> File ->Settings -> Version Control 发现没有 Subversion,如下图 于是,思考并查找解决办法,如下: 在 File->Settings-
2017-01-19 11:42:52 627
原创 Error:Execution failed for task ':app:transformClassesWithDexForDebug'.
一、错误信息如下:Error:Execution failed for task ':app:transformClassesWithDexForDebug'.> com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurr
2016-12-17 21:10:06 1234
原创 No service of type Factory available in ProjectScopeServices
今天在导入新项目时,遇到了文题所示的问题,于是通过搜索查得解决方案: 将工程名下的 build.gradle 中 dependencies 的 classpath 'com.github.dcendents:android-maven-plugin:1.2' 改为 classpath 'com.github.dcendents:android-maven-gradle-plugin:1.4.
2016-12-10 20:13:11 476
转载 Android-优化不同版本系统WebView版本兼容性问题
感谢原创博主分享~!~项目地址 : https://github.com/hjhrq1991/JsBridge问题描述App开发时或多或少加载web页面,但是使用h5或者一些新特性来写的web页在Android低版本系统上经常出现各种兼容适配问题。前言WebView是Android系统提供能显示网页的系统控件,它是一个特殊的View,同时它也是一个ViewGroup可以有很多其他子View。在And
2016-09-21 10:16:25 12365
原创 应用程序未安装:已安装了存在签名冲突的同名数据包。
问题如题 : 应用程序未安装:已安装了存在签名冲突的同名数据包。【解决方案】:1、检查项目的 包名、签名文件、keystore 的 key 和密码 是否一致;2、如果您是软件的开发人员,遇到该问题大概是因为您使用 Android Studio 将旧版本的软件自动发布到手机或模拟器上,然而使用此种方式安装的软件是使用Android Studio 的测试用签名,你正式将软件进行打包的签名和 Androi
2016-09-13 10:00:03 27633 2
原创 正则表达式
java中常用的匹配正则表达式实例大全 : http://download.csdn.net/detail/chitty1993/9424641 【注:链接中内容 和 本篇 blog 中内容不保证完全一样。】[正则表达式]文本框输入内容控制:整数或者小数:^[0-9]+\.{0,1}[0-9]{0,2}$只能输入数字:"^[0-9]*$"只能输入n位的数字:"^\d{n}$"只能输入至少n位的
2016-08-31 14:53:36 649 1
原创 android.view.ViewRootImpl$CalledFromWrongThreadException
android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views. (只有创建了UI对象的主线程才能去修改UI)解决方案一:在 Android 不是线程安全的, Android 有阻止子线程更新 U
2016-08-26 10:22:11 4790
DisLruCache 源码
2020-11-10
LruCache 源码
2020-11-05
DiskLruCache 的完整源码
2020-11-05
ButterKnife
2016-08-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人