Android学习
文章平均质量分 71
良秋
wechat: ww286701853
展开
-
repository ‘Gradle Libs‘ was added by unknown code
问题Build was configured to prefer settings repositories over project repositories but repository ‘Gradle Libs’ was added by unknown code解决settings.gradle中,去除repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)dependencyResolutionManagement {原创 2021-11-11 11:28:38 · 4436 阅读 · 3 评论 -
使用Kotlin编写Gradle插件
1. 首先在根目录的buid.gradle中添加编译期kotlin插件依赖buildscript { ext.kotlin_version = '1.3.72' ext.gradleVersion = '3.2.1' repositories { google() jcenter() } dependencies { classpath "com.android.tools.build:gradle:$gradleVe原创 2020-08-27 11:43:24 · 4245 阅读 · 0 评论 -
android 线程使用监控思路分享
Java线程Hook使用SandHook监控Thread#start()函数的调用https://blog.csdn.net/ganyao939543405/article/details/86661040Native线程Hook使用XHook监控pthread_create方法的调用导出堆栈信息hook到线程启动动作之后,需要导出堆栈信息,分析堆栈信息能够知道启动线程的动作来自于哪个业务模块。问题因为java的线程最后也是走到native的pthread_create方法,所以hook到p原创 2020-06-12 10:45:41 · 2047 阅读 · 0 评论 -
AndroidStudio使用localMaven
简介有时候开发一个三方库,开发阶段并不希望提交到服务器maven,只想提供给本地的其他项目使用的时候,可以使用localMaven,将三方库提交到本地计算机仓库,然后其他项目将localMaven配置到仓库查找列表,这样,可以避免不断的往服务器提交三方库而需要不断的提升版本号的问题。发布三方库三方库build.gradle配置apply plugin: 'maven'...原创 2018-09-04 11:44:43 · 5393 阅读 · 0 评论 -
Mac OS10.12 编译Android源码8.1
拉取源码自行百度启动编译自行百度编译遇见的坑源码拉取,以及编译顺序大家都会,但是编译坑太多,坑得记一下,以免后面再掉下去。Fuck Jack-Serverjack-server报错如下[ 53% 48295/89583] Ensuring Jack server is installed and startedFAILED: setup-jack-se...原创 2018-07-21 11:02:01 · 7705 阅读 · 7 评论 -
Android native memory leak detect (Android native内存泄露检测)
Android native memory leak detect (Android native泄露检测)简介Android应用中,经常会有业务需要使用到Native实现。比如加密,音视频播放等。也就是常见的二进制文件xxx.so这部分代码,申请的内存不走Java Heap管理。那么一旦发生内存泄露,无法使用导出MAT来进行查看。本篇文章将讲解如何使用Google霸霸提供的方...原创 2018-07-13 16:02:37 · 17095 阅读 · 26 评论 -
Android NDK javah生成头文件
NDK开发生成头文件javah用法 javah [options] <classes>其中, [options] 包括: -o <file> 输出文件 (只能使用 -d 或 -o 之一) -d <dir> 输出目录 -v -verbos原创 2018-06-07 18:05:16 · 575 阅读 · 0 评论 -
Android Studio R类找不到(Mac)
现象Mac系统的Android Studio出现R类找不到问题,即使是clean之后也找不到。解决方案cd /Applications/Android\ Studio\ 3.app/Contents/bin这里的Android Studio 3.app根据你自己的studio路径做更改当然你可以通过Finder右键进入 编辑该路径下的idea.properties原创 2018-01-26 10:59:00 · 924 阅读 · 0 评论 -
Android查看每个线程CPU占用情况,以及工作内容分析
简介在使用Android Studio开发的时候,有时候会发现手机CPU使用特别高,但是又不确定哪个线程占用高。除了能够使用android profiler查看外,还可以使用命令来查看。命令adb shell top使用参数:Usage: top [ -m max_procs ] [ -n iterations ] [ -d delay ] [ -s sort_co原创 2018-01-12 17:10:38 · 54326 阅读 · 2 评论 -
Android 不同布局类型measure、layout、draw耗时对比
内容RelativeLayout、LinearLayout、FrameLayout、ConstraintLayout这四种类型的measure、layout、draw耗时对比。测试试图结构:测试方式使用一个结构非常深的试图结构,重复执行measure、layout、draw各1000次。计算耗时。结果(单位:ms):代码:public cla原创 2018-01-11 18:18:57 · 4151 阅读 · 0 评论 -
Android Studio 配置
R文件飘红如果能够编译通过,且clean之后还是飘红,试试下面的方法。点击 Help > Edit Custom Properties。如果您之前从未编辑过 IDE 属性,Android Studio 将提示您新建一个 idea.properties 文件。点击 Yes 创建文件。此时 idea.properties 文件将在 Android Studio 的编辑器窗口中打开。编辑文...原创 2018-12-03 14:50:31 · 445 阅读 · 0 评论 -
Android ProGuard 还原堆栈
使用Android SDK还原位置: <android sdk>/tools/proguard/binproguardgui.sh GUI工具retrace.sh 命令行工具retrace.sh -verbose mapping.txt stacktrace.txt > ./output.txt其中-verbose代表显示返回类型以及参数类型(一般用不上)如果你...原创 2019-02-19 19:05:16 · 1387 阅读 · 0 评论 -
Android 混淆配置
混淆文件基础配置# 在这里添加项目的代码混淆规则# 混淆规则请参考:http://proguard.sourceforge.net/index.html#manual/usage.html##################### 一般使用默认 ###################### 不使用大小写混合类名,混淆后的类名为小写-dontusemixedcaseclassnam...原创 2019-05-06 11:40:34 · 1558 阅读 · 0 评论 -
Gradle删除本地库文件
简介删除本地Gradle下载好的库版本环境Mac OS位置~/.gradle/caches/modules-2/files-2.1/找到自己的库对应的group,删除即可原创 2019-05-10 12:44:51 · 4535 阅读 · 0 评论 -
Android View onVisibilityChanged onAttachedToWindow onDetachedFromWindow
源码SDK: 24简介最近碰到一个问题,某一个Fragment里,有一个View上有一个动画,而当Fragment不可见的时候(切换到别的Fragment)。这时候,View的动画应该停止,以便节省主线程计算动画值,所以研究了View的onVisibilityChanged方法,在View不可见的时候关闭动画。onAttachedToWindow与onDetachedFromW...原创 2019-05-30 19:08:40 · 7839 阅读 · 1 评论 -
Android Binder实现浅析-Binder驱动
简介Android是如何实现跨进程通信的,大家熟悉的Binder是什么,怎么设计的,进程间的数据如何发送接收的。本文将以及解析,并对Binder驱动实现、Native层实现、Java层实现三块做一个总结分析。Binder学习思路Binder与传统IPC的区别Binder驱动的内部设计、数据结构Binder驱动与应用程序进程(C/S)之间的通信过程Android应用程序通过Binder...原创 2019-07-04 10:53:34 · 5072 阅读 · 3 评论 -
Android NDK 剥离符号信息
~/android-ndk-r14b/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64/bin/arm-linux-androideabi-strip --strip-all xxxx.so原创 2019-08-02 15:55:38 · 1352 阅读 · 0 评论 -
Android 线程状态
Thread.javaThread.cpp说明TERMINATEDZOMBIE线程死亡,停止运行RUNNABLERUNNING/RUNNABLE线程可运行或正在运行TIMED_WAITINGTIMED_WAIT执行了带有超时参数的wait、sleep或join函数BLOCKEDMONITOR线程阻塞,等待获取对象锁WAITINGWAI...原创 2019-08-02 10:36:30 · 1489 阅读 · 0 评论 -
Android图形显示系统(一)
本文讲解的内容是Android4.1以后的系统机制,将从整体上分析Android图形显示系统的结构,不深入分析每一层内部的代码实现,更多的是使用流程图和结构图来让大家理解Android是如何绘制、合成图形并显示到屏幕上。本文将从三个层次进行讲解原创 2017-05-03 17:03:02 · 22971 阅读 · 17 评论 -
View#post与Handler#post的区别,以及导致的内存泄漏分析
简述: 写这篇文章的缘由是最近项目中查内存泄漏时,发现最终原因是由于异步线程调用View的的post方法导致的。 为何我会使用异步线程调用View的post方法,是因为项目中需要用到很多复杂的自定义布局,需要提前解析进入内存,防止在主线程解析导致卡顿,实现方法是在Application启动的时候,使用异步线程解析这些布局,等需要使用的时候直接从内存中拿来用。 ViewRootImpl#RunQueue原创 2017-04-09 00:34:11 · 14894 阅读 · 9 评论 -
使用cardview和recycleview时碰到的一些问题
前言: 本文主要是记录在使用cardview和recycleview时碰到的一些问题:一: 需求:项目中需要把从sdk/extras下的cardview库工程打包成jar包给自己的工程使用 (不直接使用源码的原因是因为cardview库需要的编译SDK版本为android 5.0及以上)问题:cardview中代码有指定R文件路径解决方案: 1. 将资源文件导入到自己的主工程原创 2015-10-23 09:27:35 · 965 阅读 · 0 评论 -
android:gravity与android:layout_gravity的区别,以及代码设置对应属性
记录一下,怕以后忘记:属性说明:android:gravity: ① RelativeLayout、LinearLayout,等容器的子View相对自身的位置。 PS:FrameLayout没有该属性,大家可以在XML文件中试试 - -… ② Button、TextView等有内容的View,其内容相对自身的位置。 PS:部分View也没有该属性,如ImageView。and原创 2015-11-06 11:31:34 · 4022 阅读 · 0 评论 -
区分Activity的四种加载模式(转)
本文出处:http://marshal.easymorse.com/archives/2950在多Activity开发中,有可能是自己应用之间的Activity跳转,或者夹带其他应用的可复用Activity。可能会希望跳转到原来某个Activity实例,而不是产生大量重复的Activity。这需要为Activity配置特定的加载模式,而不是使用默认的加载模式。加转载 2014-04-02 01:00:51 · 945 阅读 · 0 评论 -
Ubuntu 下搭建 Android 开发环境(图文)
随着智能手机、平板电脑等越来越普及,现在的移动平台开发越来越火,IOS、Android等等,以前一直没有开发过移动平台的应用,然而网上的N多教程全是Windows平台的,而我却坚持这Linux桌面,那么这么新鲜、这么火、这么有前景的开发,我也先起个头,把环境搭建起来先。1.安装JDK请看这里 > 《Linux 下安装配置 JDK7》2.安装Eclipse现在Ecli转载 2013-12-01 01:38:21 · 2617 阅读 · 0 评论 -
Cursor finalized without prior close()
Cursor cursor = resolver.query(URI, columns, PhoneLookup.HAS_PHONE_NUMBER+"=1", null, null);//限定只返回有号码的联系人while(cursor.moveToNext()){ String phoneNum=""; Cursor cursor2=resolver.query(ContactsContract原创 2013-09-20 16:03:12 · 10647 阅读 · 0 评论 -
android camera 竖直拍照 获取竖直方向照片 做缩放处理
一、拍照时竖直预览:实现原理①:设置拍照的Activity为横屏实现①:在AndroidManifest.xml相应的activity添加一句 android:screenOrientation="landscape"缺点:Activity设置为横屏之后,上面的按钮等相应的也会旋转。实现原理②:设置预览效果为竖直方向实现②:在Camera对象初始化之后,设置Camera原创 2013-09-25 03:15:49 · 8552 阅读 · 0 评论 -
android camera无预览拍照 后台拍照
前言:相信有许多人和我一样,希望在不让用户知道的情况下,使用后台Server调用摄像头拍照,在网上找了不少资料,大致都讲到不预览无法实现拍照,涉及到用户隐私,属于非法调用摄像头...怎么办!!!曾经看到一篇博文,里面有一句经典的话:没有什么是绝对的,没有什么是绕不过去的。接下来就来分析一下怎么绕过去,实现不预览拍照。要求①:不让用户看到拍照界面难点:预览界面必须在一个Act原创 2013-09-30 23:43:10 · 23209 阅读 · 17 评论 -
Android开发 MeasureSpec介绍
首先发原文地址:http://blog.csdn.net/failure01/article/details/8577013在自定义View和ViewGroup的时候,我们经常会遇到int型的MeasureSpec来表示一个组件的大小,这个变量里面不仅有组件的尺寸大小,还有大小的模式。这个大小的模式,有点难以理解。在系统中组件的大小模式有三种:转载 2015-09-23 15:41:26 · 634 阅读 · 0 评论 -
Android 使用handler实现线程间发送消息 (主线程 与 子线程之间)、(子线程 与 子线程之间)
关键字:Android 使用handler实现线程间发送消息 (主线程 与 子线程之间)、(子线程 与 子线程之间)相信大家平时都有使用到异步线程往主线程(UI线程)发送消息的情况。本文主要研究Handler的消息发送。包括主线程往子线程发送消息,子线程之间互相发送消息。一、主线程向子线程发送消息。实现过程比较简单:主线程发送消息到异步线程,异步线程原创 2015-07-26 19:46:09 · 6030 阅读 · 0 评论 -
Android IntentService的使用与源码解析
尊重原创,转载请注明出处:http://blog.csdn.net/a740169405/article/details/50274537前言: 大家都知道,Service是Android中运行在后台的,不可见的服务。 但其和异步线程又不一样,因为Service是运行在主线程,也就是UI线程里。所以我们并不能在Service中执行耗时的操作。 为了解决这个问题,大家可能回在Servi原创 2015-12-12 15:48:23 · 1032 阅读 · 0 评论 -
Android-LayoutInflater布局文件解析过程分析
简单的说,LayoutInflater就是是一个用来解析xml布局文件的类。今天该篇文章将对LayoutInflater类进行分析,内容包括: 1. LayoutInflater在哪里创建的 2. 如何获取LayoutInflater 3. 视图的创建过程(xml转换成View的过程) 4. inflate的两个重要参数(root、attachToRoot)布局文件解析过程分析原创 2017-02-16 23:50:33 · 3240 阅读 · 1 评论 -
Android 布局优化之include与merge
官方提供了三个用来优化布局的标签,分别是include、merge与ViewStub,其中ViewStub是动态加载视图到内存,大家可以查阅:Android UI布局优化之ViewStub 一、include布局重用:在Android的应用程序开发原创 2016-01-15 11:30:26 · 28406 阅读 · 0 评论 -
关于Universal-Image-Loader加载同一张图只成功一张的问题
ImageLoader#loadImage(java.lang.String, ImageLoadingListener);当使用这个方法加载图片的时候,如果同一本地路径下的图片被加载多次。 你会发现除了最后一个加载任务成功收到onComplete回调,前面的加载任务 都是onCanceled方法被回调。研究了一下ImagerLoader的源码,会发现最后调用的还是displayImage方法原创 2016-05-19 20:06:19 · 3844 阅读 · 4 评论 -
Android UI布局优化之ViewStub
尊重原创,转载请注明出处:http://blog.csdn.net/a740169405/article/details/50351013前言:在设计模式的单利模式中,懒汉式和饿汉式是其中两种。一种是在类被加载的时候就完成单例对象的初始化,一种是在需要使用该单例的时候才初始化。在android的视图设计中,同样需要使用的这样的设计模式。这样的视图加载起来需要耗费很多的时间。在这几...原创 2016-01-15 13:50:18 · 12909 阅读 · 7 评论 -
仿Android 5.0 侧滑菜单按钮动画 以及侧滑菜单联动
标签:android 5.0 侧滑菜单 按钮过度动画前阵子看到Android 5.0 的新的侧滑菜单按钮,其有打开和关闭两种状态,状态之间切换时也会有动画过度。突发奇想的自己实现了一个。效果实现是引用了NineOldAndroids开源库来实现动画效果,自己只是加了一些基本的逻辑处理。·原创 2015-12-13 18:09:24 · 3718 阅读 · 0 评论 -
Android 自定义万能的抽屉布局(侧滑菜单)GenericDrawerLayout
大家应该对侧滑菜单很熟悉了,大多数是从左侧滑出。其实实现原理是v4支持包提供的一个类DrawerLayout。今天我要带大家自己定义一个DrawerLayout,并且支持从屏幕四个边缘划出来。GO~先看看效果图:原创 2015-11-08 22:15:38 · 11483 阅读 · 10 评论 -
使用Source Insight查看Android Framework 源码
前言: 本片文章记录如何下载android framework层源码,并导入到source insight软件里,最后再简单介绍一下source insight的一些使用技巧。一、下载framework源码: google已经把framework源码托管在了gitHub上原创 2015-11-24 22:48:17 · 13336 阅读 · 1 评论 -
android HandlerThread源码解析
尊重原创,转载请注明出处:http://blog.csdn.net/a740169405/article/details/50257001HandlerThread概述:HandlerThread是一个线程类。HandlerThread内部创建了一个消息队列,其他线程可以通过Handler向其发送消息。HandlerThread按照消息的发送顺序依次对消息进行处理。HandlerThread原创 2015-12-11 23:16:40 · 2344 阅读 · 0 评论 -
java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
Looper.prepare(); //开头 Builder builder = new Builder(MyBurglarService.this); //这里我的MyBurglarService是我的一个线程//在这设置builder的属性AlerDialog dialog = builder.create();dialog.getWindow().set原创 2013-09-16 09:13:31 · 6202 阅读 · 1 评论