自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Else的笔记

我学习的内容多出自其它博主的无私奉献,但凡记录的文章均会加入了自己的理解,以便于更好的记忆

  • 博客(52)
  • 收藏
  • 关注

原创 Android JNI 异常定位(2) ——ndk-stack

前言之前介绍了使用addr2line定位,今天介绍下怎么使用ndk-stack对native崩溃进行定位。不管使用addr2line还是ndk-stack都要用到我们报错版本的动态库,也就是so文件。需要注意的我们分析bug使用的so文件需要带符号表的so文件。如图:stripped目录下so文件应该(可能后面还会有处理我不知道,但可以确定最终用的不是debug下的)最终打包到apk的文件。可以看到stripped后的so文件体积更小,但是也没有了debug信息,因此native出了错,这个

2021-12-10 22:00:00 3072 1

原创 JNI Java的基本调用

接口的作用无非就是取值、传参、方法调用之类的东西。Android studio默认的native项目就是调用JNI的方法。在JNI中怎么调用java类的属性,方法;以下为基本示例:public class MainActivity extends AppCompatActivity { public int javaNum=3; // Used to load the 'native-lib' library on application startup. stati

2021-12-10 20:00:00 1642

原创 使用Android Studio生成一个plugin

个人备忘贴,生人闪避!!!!开整:1.新建一个module(Java的)2.src/main下添加文件a.创建groovy目录b.创建groovy文件c.创建META-INF\gradle-plugins目录d.创建xxx.properties文件(命名需要注意,会在其他module使用时用到)删除多余文件,最终目录结构如图3.gradle配置4..properties文件配置(命名以及内容)5.生成本地plugin6.使用...

2021-12-03 17:56:33 2656

原创 Android JNI 异常定位(1)—— addr2line 命令使用记录

Android native报错有时候只有一句 signal 11 (SIGSEGV),这种情况仅通过log是很难定位到问题的。不过Android 在/data/tombstones目录保存了错误的堆栈信息,为定位bug提供了路径。不过一般这里的log都无法像java一样直接定位的出错的行数。如下图:先看崩溃的tid:3596,不是主线程,说明是子线程。backtrace需要借助Android ndk提供的addr2line工具来分析,从工具的名字就能看出来,这个东西可以帮我们把报错的地址指向代码.

2021-09-30 15:44:51 5230 3

原创 Android cpu性能优化基础

先看两个和cpu相关的指令以下两个指令一个用于查看各线程cpu占用情况,一个用于观察线程运行在哪个核心上(多核cpu)a.adb shell topUsage: top [ -m max_procs ] [ -n iterations ] [ -d delay ] [ -s sort_column ] [ -t ] [ -h ]线程占用cpuadb shell top -m 5 ...

2021-07-20 15:39:39 1518 1

原创 随手记RxJava中的观察方式

个人未在项目中使用过Rxjava,今天简单体验了一下,出于好奇翻了一下源码,记录一下Rxjava的观察者方式。 public static void main(String[] args) { Observable<String> observable = Observable.create(new ObservableOnSubscribe<String>() { @Override public void su

2021-07-20 15:36:34 96

原创 Android使用keytool-importkeypair生成系统签名

Android系统源码中提供了platform.x509.pem 、platform.pk8等签名文件例如:这个是不能直接在调试的时候使用的,如果要用,需要先转换为android studio调试用的jks签名文件。而keytool-importkeypair可以用来生成Android 系统签名,关联地址如下:https://github.com/getfatday/keytool-importkeypair这里需要注意,以下命令需要在linux执行(MAC好像也行),但是window.

2021-07-19 16:52:22 2337 2

原创 Arouter 原理记录

Arouter解决了什么问题?怎么解决的?带着这两个问题简单看了一下Arouter的源码。先说第一个问题,Arouter解决了什么问题?:组件化中由于依赖关系导致Activity等组件不能直接显式调用问题。如下图:这是一个简单的组件化的模型,假设3个model分别有三个Activity:app——Activity_amodelA——Activity_bmodelB——Activity_c正常情况下要实现三个activity之间的跳转可以这样写://1.apps

2020-10-14 17:56:00 117

原创 Android 中usb支持的传输模式

usb的四种传输模式对应的场景:1.批量传输USB协议提供批量传输类型是为了支持在某些不确定的时间内进行大量的数据通信,如打印机、扫描仪、硬盘、光盘等设备2.控制传输USB协议引用控制传输有两方面的原因,一方面,在USB系统中,设备在正常工作之前必须先进行配置,USB主机必须为设备分配总线上唯一的设备地址,并完成读取设备的各种描述符,根据描述符的需求为设备的端点配置管道,分配带宽等工作。另一方面,在设备的工作过程中,主机希望能及时地获取设备的当状态,或者设备出现问题时希望主机能及时做出补救措

2020-09-30 17:30:04 1135

原创 build type is not debuggable

Android studio调试时不显示变量,且通过add to watches 添加的参数变量都显示Cannot find local variable。通过debug运行时提示“build type is not debuggable”。根据提示可知由于编译不是debug模式导致的。首先查看build.gradle中是否对 debuggable 参数进行了配置。我这里没有配置,所以打开右侧Build Variants发现由于之前编译release版本的apk,所以在此处将编译类型默认设置

2020-08-25 12:02:52 2228

原创 判断Android 下app是否系统签名

如果有个工具类需要系统权限的应用才能调用(Permission is only granted to system apps),怎么判断是否具有系统级权限?找个系统权限,判断一下: private boolean isSystemApp(String pkgName) { boolean isSystemApp ; PackageManager pm = getPackageManager(); //下面是一.

2020-08-21 17:23:50 2206

原创 Android 下一种快速获取当前设备ip的方式

主要是利用Linux的ip route命令“ip route show”该命令不需要权限,直接通过Runtime执行即可,目前在7.1.2 、8.0等设备上测试过,再高版本未测试。代码:private void getLocalIp() { Process process = null; try { process = Runtime.getRuntime().exec("ip route show "); } ca

2020-08-20 09:11:04 627

原创 对于CountDownLatch和CyclicBarrier使用场景的理解

一.CountDownLatch1:多个线程等待某个线程执行完成时再开始执行,如果用一条黑线表示一个线程的话,如下图:2:某个线程等待多个线程执行完成时再开始执行,如果用一条黑线表示一个线程的话,如下图:二.CyclicBarrier 多个线程都完成各自指定逻辑的时候再继续执行剩余逻辑示例1: private static void oneWaitMore() throws InterruptedException { final Coun..

2020-06-17 12:13:00 784 1

转载 win10 javac、javah不是内部命令或外部命令

转载:https://blog.csdn.net/RonnieRocket/article/details/83000603"Win10"中Path变量中是不识别%JAVA_HOME%这样的相对路径的,必须手动展开为绝对路径才可以

2019-09-23 15:17:00 509

转载 Android 中屏幕相关参数获取方法

SW: Configuration config = getResources().getConfiguration();int smallestScreenWidth = config.smallestScreenWidthDp;OTHER Display display = getWindow().getWindowManager().getDefault...

2019-04-02 15:58:35 452

原创 android中的Window

1.通过LayoutParams了解Window分类这里的WindowManager#LayoutParams继承的ViewGroup.LayoutParams,并实现了序列化(因为WindowManager和WindowManagerService的交互是一个IPC过程需要序列化)。 我们可以看到LayoutParams的构造函数中有两个比较重要的参数:flags和type。 Fla...

2018-11-30 17:20:53 1929

原创 BLE相关类与主要方法

一.类整理Bluetooth相关类如图所示,其中le包下位api level 21新增类,下面着重介绍红线类1. BluetoothAdapter public final class BluetoothAdapter extends Object  java.lang.Object    ↳ android.bluetooth....

2018-11-14 15:09:38 461

原创 NIO 的示例源码(from Thinking in Enterprise Java)

最近在整理NIO相关的知识,我个人毛病,不愿意在word里记录源码,所以直接赋值在这里了。(注意:本文不涉及任何讲解,代码仅示例用,不可直接用于项目)首先是一段伪代码,梳理了怎么使用selectorpackage niotest;//: TIEJ:X1:NonBlockingIO.java//Socket and selector configuration for non-b...

2018-09-13 18:30:50 406

原创 多线程协作——wait、notify方法

wait()方法1.Causes the current thread to wait until another thread invokes the java.lang.Object.notify() method or the java.lang.Object.notifyAll() method for this object. In other words, this method ...

2018-07-30 15:41:12 226

原创 守护线程和用户线程

         一直想整理一下线程方面的知识,线程无处不在,这部分在开发中零零散散的用到,所以一直想把自己用到过的知识点整理一下,今天先提一下守护线程。什么是守护线程?        我所理解的守护线程就像是绑定了我们程序的一个线程,程序在的时候它才可能存在(不一定存在,要看我们什么时候start()),程序结束他也就结束了。当所有的非守护线程结束时,程序也就终止了,同时会杀死进程中的所...

2018-07-26 14:57:16 435

原创 HandlerThread的应用场景

HandlerThread是什么?        它就是一个线程,一个实现了Handler通信机制的线程,也就是说不用我们再去实现Looper的一系列工作了。实现了这个功能之后,这个线程就和我们的主线程类似。我们也可以像是在主线程一样快乐的使用Handler了,而且也不用担心阻塞主线程了。个人认为HandlerThread有以下优点:1.众所周知普通的Thread一旦执行完,就结束。然...

2018-07-26 14:33:05 2144

原创 注解入坑笔记:关于注解使用必须了解的——Annotation、AbstraceProcessor、APT

 一.前言:        了解一个东西通常是因为它有用,我主要是为了了解现在的一些主流框架(如butterknife)的实现原理才关注Annotation,所以这篇文章是记录我在实现注解内容获取时遇到的问题。因此看这篇文章的朋友首先你需要了解Annotation的基础知识,包括什么是注解,元注解,自定义注解。靠,什么都知道了,还看这篇文章作甚?这篇文章主要是记录什么问题的呢?ok,看一下下面这段...

2018-04-26 15:05:13 2491

原创 scheduleAtFixedRate与scheduleWithFixedDelay

public class TestThread { private static ScheduledExecutorService eService; private static long time; public static void main(String[] args) { time=System.currentTimeMillis(); eService=Execut

2017-12-27 10:20:06 1095

原创 性能优化工具2——MemoryAnalyzer(MAT)内存泄露的简单检测

以下用MemoryAnalyzer对内存泄漏的检测作简单介绍:     首先androidStudio自带Memory Monitor可以分析内存泄漏问题,方法如下,当我们执行了一系列操作后点击垃圾回收(需要先进行垃圾回收,这样才能发现那些该回收的类没有被回收掉)然后就可以点击 dump java heap 进行分析了:    点开后如图2:     如上class name下

2017-12-19 11:57:01 1214

原创 性能优化工具1——android studio monitors 之 start allocation tracking

先上图看在哪里使用,图1:    使用很简单,红色圈内的按钮点击一次开始跟踪,再次点击结束,监测的区域则为阴影区域(黄色圈内) 从 allocation tracking 字面意思的理解:跟踪资源的分配,我这里主要看的是heap堆空间一.什么时候需要用到这个功能     正常情况下,我们不进行操作时内存应该是处在一个平稳状态,或者平缓上升的状态如图2:     

2017-12-18 16:07:01 560

原创 补码的运算

补码:计算机中的符号数有三种表示方法,即原码、反码和补码。三种表示方法均有符号位和数值位两部分,符号位都是用0表示“正”,用1表示“负”,而数值位,三种表示方法各不相同。在计算机系统中,数值一律用补码来表示和存储。原因在于,使用补码,可以将符号位和数值域统一处理;同时,加法和减法也可以统一处理。此外,补码与原码相互转换,其运算过程是相同的,不需要额外的硬件电路。有了反码可以统一处理加法减法...

2017-10-16 14:26:08 2940

原创 反码计算典型实例

        计算器运算使用的是加法器(不同于数学上减法同于加上一个负数的概念,以补码为例:-1其实是等于+255,而不是数学上的+(-1),这涉及到模的概念,不要记混。也正是因为这样,减法器才显得不那么必要)这样的话,原码进行减法计算会有什么问题,看下:      例如1 - 1 = [00000001]原 + [10000001]原 = [10000010]原 = -...

2017-10-12 17:44:52 3020

转载 文件编码问题

摘自:https://my.oschina.net/heweipo/blog/384509    作者:learn_more   最近写一个读取本地txt文件的功能,读取的文本有gbk和utf-8的格式,所以不能固定编码格式,只能动态判断,在网上找到了作者的这篇文章。      读取文件流时,经常会遇到乱码的现象,造成乱码的原因当然不可能是一个,这里主要介绍因为文件编码格式

2017-04-20 10:22:46 430 2

原创 android studio—— Github 从创建到提交

git 使用过程中真是会出现各种各样的问题,我就是想把我的项目放到github上,并且本地可以用android studio 的ui直接操作,在知晓一些git知识的情况下还是遇到了很多问题。这篇文章就简单记录一下将项目导入github的步骤,关于git的命令以及可能出现的错误等不做详解;因为亲测步骤,只要按照步骤来至少不会报错。1.安装git,不多说2.配置git信息,config

2017-04-17 16:34:32 245

转载 github 公钥配置

出处:http://www.cnblogs.com/qcwblog/p/5709720.htmlWarning: Permanently added the RSA host key for IP address '192.30.253.113' to the list of known hosts. Permission denied (publickey). fatal: Could

2017-04-17 14:05:31 719

原创 app:layout_scrollFlags

ScrollFlags共有五种常量值供AppBarLayout的Children View使用,在xml布局文件中通过app:layout_scrollFlags设置,对应的值为:scroll,enterAlways,enterAlwaysCollapsed,snap,exitUntilCollapsed;也可以在代码中通过setScrollFlags(int)方法使用以下文字记录(无效果图)

2017-03-24 12:57:21 2280

原创 android studio使用记录

1.运行java             eclipse可以直接新建java工程,如果我们平时需要写一些简单的算法demo,没必要启动虚拟机时,可以直接在java工程中测试。          方法:New ——Model——Java Library          then:添加类,添加main方法直接右键 run 即可2.android studio运行java时控制

2017-02-06 17:01:57 263

原创 Long和long的区别

Long和long的区别:问题产生原因:使用greendao的过程中,               @Id(autoincrement =true)                privateLong Id;               对于自增id设置中一直强调是Long型,这样穿null就可以实现自增;我当时就在疑惑long怎么可以在构造函数中传nul

2017-01-22 11:59:02 970

原创 DialogFragment使用记录

dialogfragment

2017-01-12 17:01:21 362

原创 Errors running builder 'Android Package Builder' on project 解决办法

下载了android studio,更新了最新的sdk,并且和eclipse用的sdk放在了一起,当再次打开eclipse的项目运行时就出现了如图的错误:从网上查了一下,找了好久才找到的,原因如下:1.eclipse中安卓的buildtools默认是用sdkmanager里版本最高的,我已经下载了Android7.0,所以buildtools是24.0.12.但是电脑上的JDK为了跟后

2017-01-11 16:13:23 11951 11

原创 Canvas类使用过程中的总结

一.drawText   1. canvas.drawText(text, x, y, paint);     text和paint不必多说,x,y确定了字的位置,其中x默认是这个字符串的左边在屏幕的位置,y是指定这个字符baseline在屏幕上的位置。    例如:canvas.drawText(text, getWidth()/2, getHeight()/2, mPaint)

2017-01-06 16:54:43 315

转载 Android 自定义View属性相关细节

从鸿洋的公众号上看到的,在博客上没找到,自己也一直疑惑所以记了下来。(1.19日更新:擦,微信图片被屏蔽了,害得我自己专门截图)自定义View中构造方法中调用初始化代码,两种写法的区别(1)第一种(2)第二种      在每个方法中通过自己定义的init()方法初始化数据。对于两种写法,大家都不陌生吧,肯定的,谁都见过,但是很少有人会去问:这两种有什么区别呢?说实话,区别不大,但是在使用场景上还是...

2017-01-05 15:45:05 269

转载 匿名内部类

java中的匿名内部类总结匿名内部类也就是没有名字的内部类正因为没有名字,所以匿名内部类只能使用一次,它通常用来简化代码编写但使用匿名内部类还有个前提条件:必须继承一个父类或实现一个接口 实例1:不使用匿名内部类来实现抽象方法

2016-12-23 09:28:16 180

转载 android基本架构

android基本架构转载:http://www.cnblogs.com/lijunamneg/archive/2013/01/18/2866953.htmlAndroid其本质就是在标准的Linux系统上增加了Java虚拟机Dalvik,并在Dalvik虚拟机上搭建了一个JAVA的application framework,所有的应用程序都是基于JAVA的application

2016-12-19 15:42:36 215

转载 android事件分发——ViewGroup

版权声明:本文出自郭霖的博客转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/9153761记得在前面的文章中,我带大家一起从源码的角度分析了Android中View的事件分发机制,相信阅读过的朋友对View的事件分发已经有比较深刻的理解了。还未阅读过的朋友,请先参考 Android事件分发机制完全

2016-11-16 17:43:34 234

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除