Android学习笔记
文章平均质量分 70
木大白易
我用双手成就你的梦想!
展开
-
Mac下手动源码编译安装Swig
下载链接:https://github.com/PhilipHazel/pcre2/releases。也是使用rpath,但是在/usr/local/lib目录下确实没有libc++。下载链接:https://www.swig.org/download.html。swig依赖pcre库,需要先安装pcre。我这里需要的版本是4.0.2。,选择自己所需版本下载。原创 2024-01-30 20:58:57 · 1276 阅读 · 0 评论 -
Android JNI浅析、Java和Native通信对象的传值和回调
JNI是一个本地编程接口,它允许运行在Java虚拟机的Java代码与用其他语言(如C,C++和汇编)编写的库交互。原创 2023-03-08 16:21:36 · 1645 阅读 · 1 评论 -
浅谈Android OOM及定位分析
要定位OOM问题,首先需要弄明白Android中有哪些原因会导致OOM,Android中导致OOM的原因主要可以划分为以下几个类型:Android 虚拟机最终抛出OutOfMemoryError的代码位于/art/runtime/thread.cc。下面两个地方都会调用上面方法抛出OutOfMemoryError错误,这也是Android中发生OOM的主要原因。原创 2022-09-22 15:06:57 · 2394 阅读 · 0 评论 -
Android 获取位置信息
获取经纬度后在地图上查询发现,位置存在一定偏移,这个是因为使用的坐标系不一致引起的。我国出于国家安全的考虑,会将所有的电子地图经行加偏处理,由真实的地理坐标系又称地球坐标系(WGS84)转换为火星坐标系(GCJ02),但是使用 location 获取的经纬度又是WGS84坐标系的,所以再其他地图上显示会出现位置偏移现象。目前坐标系主要有以下几种:WGS84坐标系:地球坐标系,国际通用坐标系GCJ02坐标系:火星坐标系,WGS84坐标系加密后的坐标系,Google国内地图、高德、QQ地图使用。...转载 2022-08-17 18:07:16 · 4811 阅读 · 1 评论 -
使用GAPID报错Permission denial: writing to settings requires:android.permission.WRITE_SECURE_SETTINGS
本文转自:https://blog.csdn.net/zzwfd/article/details/104005744在使用GAPID点击start的时候,报错:Permission denial: writing to settings requires:android.permission.WRITE_SECURE_SETTINGS找到一篇文章:https://blog.csdn.net/zzwfd/article/details/104005744解决了这个问题!小米:在开发者选项里,把“USB调试(转载 2022-06-10 14:14:24 · 934 阅读 · 0 评论 -
Android消息总线的演进之路:用LiveDataBus替代RxBus、EventBus
本文转自:美团技术团队 https://tech.meituan.com/2018/07/26/android-livedatabus.html背景对于Android系统来说,消息传递是最基本的组件,每一个App内的不同页面,不同组件都在进行消息传递。消息传递既可以用于Android四大组件之间的通信,也可用于异步线程和主线程之间的通信。对于Android开发者来说,经常使用的消息传递方式有很多种,从最早使用的Handler、BroadcastReceiver、接口回调,到近几年流行的通信总线类框架Ev转载 2022-05-26 21:10:33 · 1271 阅读 · 0 评论 -
Android 11中对于64位应用arm执行MTE导致crash的问题
前言App 64位包在Android 11上crash,崩溃堆栈也很诡异,报了一个native的空指针,代码中一个函数参数为int64_t类型的指针,并且确定不为空!分析在仔细调试时,发现函数中传入的指针地址,和使用时的指针地址不一致,从而导致空指针,但是奇怪的是32位的包就没有这个问题!在查阅了一些资料,发现是由于Android 11中对于64位的进程,arm v9 cpu启用了MTE( Memory Tagging Extension,内存标记拓展)功能。MTE 的工作原理是对堆栈、堆和全局变量原创 2022-04-20 11:07:33 · 1179 阅读 · 0 评论 -
ANR机制以及问题分析
本文转自:https://duanqz.github.io/2015-10-12-ANR-Analysis1. 概览ANR(Application Not Responding),应用程序无响应,简单一个定义,却涵盖了很多Android系统的设计思想。首先,ANR属于应用程序的范畴,这不同于SNR(System Not Respoding),SNR反映的问题是系统进程(system_server)失去了响应能力,而ANR明确将问题圈定在应用程序。 SNR由Watchdog机制保证,具体可以查阅Watc转载 2022-04-01 11:09:29 · 1158 阅读 · 0 评论 -
ANR问题简析
本文转自:https://blog.csdn.net/qzh123456/article/details/78737791前言ANR问题,相信是每位开发日常都会遇到的问题,对于这类问题的分析,按照官方的推荐,或网络博客的总结思路能解决一定的问题,但是多数时候大家的困惑就是应用本逻辑很简单,耗时很短或应用堆栈完全正常,或者或处于空闲状态,可系统为什么就认为接收者发生ANR了呢?下面将之前公司的一次内部分享开放出来,用几个实例从不同角度分析导致ANR产生的Root Case。也希望对大家以后分析该类问题有一转载 2022-03-31 18:17:46 · 1752 阅读 · 0 评论 -
INSTALL_FAILED_TEST_ONLY的原因及解决方案
本文转自:https://blog.csdn.net/vfush/article/details/80320596前言有一天给测试同学打了个deubg 包发现无法安装,提示无法解析,使用adb install 安装后提示INSTALL_FAILED_TEST_ONLY,原来是Android Studio 3.0会在debug apk的manifest文件application标签里自动添加 android:testOnly="true"属性问题在Android Studio进行开发的时候,生成的de转载 2022-03-01 16:44:36 · 6989 阅读 · 1 评论 -
CMake构建类型和编译选项
本文转自:https://hijk.tech/cmake-tutorial/05/构建类型构建类型(Build Type)指的是编译构建一个代码工程时采用的配置。对于使用IDE的工程,一般可以在IDE内的选项上修改构建类型,例如Visual Studio工程中的Configuration,默认分为Debug和Release,在每次编译前可以选择使用哪一种。但对于命令行式的构建系统,一般需要自己调整makefile中的编译选项,来实现不同的构建类型。使用cmake可以不必手动修改编译选项,能够方便的切换构转载 2021-12-17 18:43:01 · 6359 阅读 · 0 评论 -
loadLibrary动态库加载过程分析
http://gityuan.com/2017/03/26/load_library/原创 2021-12-16 11:48:13 · 592 阅读 · 0 评论 -
Android NDK和cmake相关
Android NDK开发扫盲及最新CMake的编译使用CMAKE手册原创 2021-12-14 18:41:48 · 2978 阅读 · 0 评论 -
C/C++链接过程、动态链接库.so和静态链接库.a
前言个人总结动态链接库静态链接库符号表strip不strip查看符号表1.使用objdump命令。objdump -tT xxx.so2.使用nm命令(个人觉得使用nm方式查看更方便。)nm -D xxx.so# -D或-dynamic选项表示:显示动态符号。该选项仅对于动态库有意义)得到的结果中以T开头的就是导出函数android中可以使用NDK下的工具:目录在NDK/android-ndk-r21b/toolchains/aarch64-linux-android-4.原创 2021-10-29 17:10:32 · 3057 阅读 · 0 评论 -
Bitmap和Drawable互转
直接上代码: public static Bitmap drawableToBitmap(Drawable drawable) { Bitmap bitmap = null; if (drawable instanceof BitmapDrawable) { BitmapDrawable bitmapDrawable = (BitmapDrawable) drawable; if (bitmapDrawable.getB原创 2021-01-23 17:22:52 · 627 阅读 · 0 评论 -
Android限制输入框输入中英文和数字,并限制个数
需求输入框内只能输入中英文和数字,而且还要限制最多输入长度为18。方案可以使用InputFilter来过滤输入: //限制只能输入中文,英文,数字 InputFilter typeFilter = new InputFilter() { @Override public CharSequence filter(CharSequence source, int start, int end, Spanned dest, in原创 2020-12-18 17:29:13 · 2334 阅读 · 1 评论 -
Android 6.0WebView加载前端网页白屏:Uncaught TypeError: Object.entries is not a function
前言前端写了一个页面,app在内部使用webview跳转打开,在6.0以上机子正常,但是在6.0一下打开白屏。问题在logcat中发现,打开页面时,报错:Uncaught TypeError: Object.entries is not a function所以定位到是页面js中的Object.entries貌似不认识啊,所以在MDN上查看了文档:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_O原创 2020-11-24 10:53:50 · 1637 阅读 · 0 评论 -
Android集成LeakCanary v2.5运行报错ClassNotFindException:Didn‘t find class “LeakCanaryFileProvider“
错误描述集成LeakCanary v2.5,很简单一行依赖:debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.5'在运行后,直接报错闪退:java.lang.ClassNotFoundException: Didn’t find class “leakcanary.internal.LeakCanaryFileProvider” on path: DexPathList[[zip file “/data/app/co原创 2020-10-16 15:59:32 · 1282 阅读 · 0 评论 -
Android Studio升级到3.6.1后无法执行main()方法的问题
转自:https://blog.csdn.net/qq_26287435/article/details/104749689前言Android Studio升级到最新版3.6.1后,新建了个项目,发现无法执行Java类的main方法,很蛋疼。试了网上的各种方法,比如切换gradle离线模式、gradle.properties中添加android.enableAapt2=false等,我还尝试了重新情况Gradle缓存、重新下载gradle等方式,都没用。场景环境android studio版本:3转载 2020-09-08 18:19:07 · 249 阅读 · 0 评论 -
Android弹出和收起输入法键盘
自动弹起键盘 diaryEdit = findViewById(R.id.content_edit); diaryEdit.postDelayed(new Runnable() { @Override public void run() { //获得焦点 diaryEdit.requestFocus(); InputMethodManager原创 2020-08-17 11:04:33 · 2923 阅读 · 0 评论 -
RecyclerView添加了一个header后,自动滚动到了中间位置
前言在Recyview的嵌套使用时,还有ScrollView嵌套RecyclerView(不推荐),还有本篇标题那样的添加header,会出现RecyclerView自动滚动的问题,这里记录一下!出现这样的问题原因,就是嵌套的RecyclerView自动获得焦点导致的!解决方案这里网上其实是有一些方案的,常见的有以下3种:① 让Recycler自动滚动到顶部scrollview.post( new Runnable() { public void run() {原创 2020-07-09 16:03:35 · 827 阅读 · 0 评论 -
Android webview加载H5页面调起微信支付
场景一个H5的页面,需要在app内用webview展示,然后涉及到支付,要求能够调用微信支付来付款,页面没有问题,但是写完出现了一些问题。问题页面不显示,展示空白需要设置:webSettings.setDomStorageEnabled(true);否则,一些节点不支持显示,建议都加上这一句,并设置为true。点击支付调不起微信因为,webview支持http和https的scheme,我们知道微信的schem是weixin://,所以我们需要拦截这个url,并手动处理。需要我们重写:原创 2020-06-28 17:23:23 · 2824 阅读 · 0 评论 -
Gradle常用总结
前言之前在多版本多渠道打包,还有混淆相关的文章中对gradle相关的内容有一部分的了解,但是没有系统综合的总结过相关的知识内容,这里就工作中遇到的,包括一些碰到的问题做一下总结!什么是Gradle?Gradle是一个开源的自动化构建工具,被应用在AS中去构建我们的Android项目,代替了之前Eclipse中的ant。首先我们要明确一点,Gradle不是一种语言,它使用的是Groovy语言,关于Groovy,这里不多说,想要了解的可以查阅一些资料。Gradle version和Gradle plug原创 2020-06-09 14:43:41 · 527 阅读 · 0 评论 -
应用文本点击超链接的实现方式-ClickSpan(评论回复列表,协议同意等)
要实现的效果我们先看一下要实现的效果,就是一个非常常规的文本超链接或者类似微博里评论列表:我们在点击上边蓝色字体的时候都要跳转对应的页面。实现方式可能我们第一时间想到的方案就是使用Span去做,没错,这里我们就用ClickSpan去实现这样一个效果。首先我们要自定义一个ClickSpan: public SpannableString setClickableSpanContent(String item) { final SpannableString string原创 2020-05-11 11:31:49 · 693 阅读 · 0 评论 -
解决Activity跳转后弹出DialogFragment报错Can not perform this action after onSaveInstanceState
问题描述在一个activity中,有定时任务,到时间后弹出一个DialogFragment,如果弹出的时候,已经跳转到了下一个activity,就会报错:Can not perform this action after onSaveInstanceState。解决方案在DialogFragment中另写一个show方法: public void showAllowingStateL...转载 2020-04-17 19:26:29 · 2773 阅读 · 1 评论 -
Android TextView设置自动识别的超链接字体颜色,及自身点击事件无响应的解决办法
前言我们在给TextView设置超链接的时候,可能最简单的,Android已经给出了一个非常的简单的做法就是:在xml中设置:<!--all表示匹配所有,web表示匹配网址 -->android:autoLink="web" 或者//sp为SpannableStringLinkify.addLinks(sp, Linkify.WEB_URLS);如何设置超链接颜色...原创 2020-02-11 16:36:24 · 1588 阅读 · 0 评论 -
Android实现双击事件的监听
本文转自:Android实现双击事件的监听Android实现view的双击事件监听,一般使用的场景,列表双击顶部回到第一条!双击监听/** * view双击监听事件 */public class OnDoubleClickListener implements View.OnTouchListener { private int count = 0;//点击次数 pr...转载 2020-01-14 18:02:00 · 1786 阅读 · 0 评论 -
Android获取应用通知栏权限,并跳转通知设置页面(全版本适配)
前言现在一般应用都需要集成推送功能,给用户推送一些相关的消息,这就需要应用取得应用通知栏权限,但是目前国内大部分厂商默认都是不开启通知栏权限的,所以在需要的时候,就要先检测是否开启通知栏权限,如果未开启,则要引导用户去设置中打开通知栏权限。获取是否开启通知栏权限不多比比,直接上代码:public class NotificationUtil { private static fin...原创 2019-10-25 13:12:26 · 23448 阅读 · 7 评论 -
Android获取APK或者.jks签名信息
声明:本文非原创,是网上相关资料的一个总结!参考:Android查看应用签名方法获取apk证书MD5值的方法查看apk文件的签名方法一首先解压要查看的apk包,通过数据证书管理工具keytool查看apk的签名信息。具体步骤如下:1)将apk修改后缀为.rar文件后进行解压;2)进入解压后的META-INF目录,找到该目录下的xxx.RSA文件;3)打开Terminal终端,输入...原创 2019-10-23 20:38:02 · 3211 阅读 · 0 评论 -
自定义ViewGroup
概述ViewGroup相当于一个放置View的容器,给childView计算出建议的宽和高和测量模式 ;决定childView的位置;为什么只是建议的宽和高,而不是直接确定呢,别忘了childView宽和高可以设置为wrap_content,这样只有childView才能计算出自己的宽和高。 View根据测量模式和ViewGroup给出的建议的宽和高,计算出自己的宽和高;同时还有个更重要的职责是:原创 2015-11-03 11:29:30 · 659 阅读 · 0 评论 -
Universal-Image-Loader异步加载图片详解
转自:http://blog.csdn.net/vipzjyno1/article/details/23206387这个图片异步加载并缓存的类已经被很多开发者所使用,是最常用的几个开源库之一,主流的应用,随便反编译几个火的项目,都可以见到它的身影。可是有的人并不知道如何去使用这库如何进行配置,网上查到的信息对于刚接触的人来说可能太少了,下面我就把我使用过程中所知道的写了下来,希望可以帮助自己和别人更转载 2015-11-03 21:17:46 · 1505 阅读 · 0 评论 -
APK反编译之APKTOOL的使用
APKToolAPKTOOL是解包 APK 文件最常用的工具,许多 APK 工具箱都集成了 apktool。它可以完整解包 APK,解包后你可以看到 APK 里面的声明文件、布局文件、图片资源文件、由 dex 解包出来的 smali 文件、语言文件等。如果你要汉化、修改界面、修改代码的话,apktool 可以帮你一站式完成。常用命令需要在 CMD 命令窗口中输入命令来使用,常用命令如下:解包 APK原创 2015-11-03 17:28:30 · 22980 阅读 · 2 评论 -
Pull-To-Refresh使用详解
鸿洋_ 大神的博客 http://blog.csdn.net/lmj623565791/article/details/38238749/原创 2015-11-09 22:35:48 · 807 阅读 · 0 评论 -
RecyclerView完全解析
转自:http://blog.csdn.net/lmj623565791/article/details/45059587概述RecyclerView出现已经有一段时间了,相信大家肯定不陌生了,大家可以通过导入support-v7对其进行使用。 据官方的介绍,该控件用于在有限的窗口中展示大量数据集,其实这样功能的控件我们并不陌生,例如:ListView、GridView。那么有了ListView、转载 2015-11-02 16:41:45 · 964 阅读 · 0 评论 -
Android事件传递机制、手势检测
机制介绍分析我看了一篇博客,写的非常详细,而且通俗易懂! http://blog.csdn.net/morgan_xww/article/details/9372285/简单的下拉刷新实现首先我们写一个布局header.xml,里边只放一个TextView<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:a原创 2015-09-24 19:58:52 · 1259 阅读 · 0 评论 -
Android动画详解
View AnimationView Animation比较简单,只能支持简单的缩放、平移、旋转、透明度基本的动画,且有一定的局限性。在代码中实现①首先得到你想要实现动画效果的实例:AlphaAnimation animation1=new AlphaAnimation(0.0f,1.0f); TranslateAnimation animat原创 2015-09-24 19:09:44 · 619 阅读 · 0 评论 -
Android基于位置的服务开发,百度地图的使用
简介基于位置的服务LBS(Location Based Server),这是只有在移动设备上才能实现的技术,由于移动设备可以随身携带,我们通过地理定位的技术就可以随时得知自己所在的位置。主要的工作原理就是利用无线电通讯网络或GPS等定位方式来确定移动设备所在的位置。 下面主要就百度地图显示,定位等做一些简单的介绍使用百度地图申请APIkey首先要注册一个百度账号,然后登陆百度原创 2015-09-22 21:49:29 · 2256 阅读 · 0 评论 -
Android传感器的使用开发、简易指南针
简介现在每部Android手机里边都会内置有许多传感器,如光照传感器、加速度传感器、地磁传感器、压力传感器、温度传感器等,它们能够监测到各种发生在手机撒花姑娘的物理事件。当然Android系统只是负责将这些传感器所输出的信息传递给我们,然后我们可以利用这些信息去开发一些好玩的应用。用法每种传感器的用法步骤几乎都一样,只是不同传感器的数据参数会有略微不同,这里以光照传感器为例,介绍原创 2015-09-22 20:17:10 · 7355 阅读 · 5 评论 -
自定义View(二)、Canvas和Paint的用法、BitMap
自定义View首先我们接着上一篇博客,再写两个自定义View的应用,一个类似电池充电的方形进度条和一个弧形进度条。用自定义View展示一个方形进度条首先创建MyProgress继承Viewimport android.content.Context;import android.graphics.Canvas;import android.graphics.Color;原创 2015-09-17 21:37:23 · 2561 阅读 · 0 评论 -
SoundPool、录制音频、播放视频、调用摄像头
SoundPool的用法在Android中播放音频文件一般都使用MediaPlayer,但是一般都是比较长的音频文件,我们可以用soundpool可以播一些短的反应速度要求高的声音,比如通知提示音,消息提示音等。特点SoundPool载入音乐文件使用了独立的线程,不会阻塞UI主线程的操作。SoundPool在load时可以处理多个媒体一次初始化并放入内存中,这里效率比Me原创 2015-09-15 20:42:39 · 869 阅读 · 1 评论