Android开发
goldxclub
QQ: 304826529
展开
-
全平台的Crash解决方案
重视CrashCrash对移动端应用的用户留存率、口碑和收入都有非常大的影响!https://bugly.qq.com/introduction原创 2016-08-15 18:12:29 · 394 阅读 · 0 评论 -
Android性能优化之过渡绘制(一)
博客有一段时间没有更新了,到了新公司后,一直比较忙,博客也更新地不那么频繁了,倒是利用这个VPS搭建的VPN每天都在用,速度也蛮不错的。最近一直在看Android上和性能相关的部分,也就是所谓的Android性能优化,才发现Android性能这一块,自己懂得还是太少了,所以从上层开始看,也算是一点一点入门吧。这个系列将讲解学习过程中总结的和性能相关的内容。首先将讲解一下GPU过渡绘制,也是转载 2016-09-19 18:33:51 · 379 阅读 · 0 评论 -
Linux下利用backtrace追踪函数调用堆栈以及定位段错误
一般察看函数运行时堆栈的方法是使用GDB(bt命令)之类的外部调试器,但是,有些时候为了分析程序的BUG,(主要针对长时间运行程序的分析),在程序出错时打印出函数的调用堆栈是非常有用的。在glibc头文件"execinfo.h"中声明了三个函数用于获取当前线程的函数调用堆栈。int backtrace(void **buffer,int size) 该函数用于转载 2016-09-19 18:58:21 · 230 阅读 · 0 评论 -
backtrace 和 backtrace_symbols 打印函数调用关系
backtrace.c点击(此处)折叠或打开#include stdio.h>#include stdlib.h>#include execinfo.h>#define MAX_LEVEL 4void test2(){// printf("func:%s,line:%d\n",__FUNCTI转载 2016-09-20 10:54:31 · 401 阅读 · 0 评论 -
Android下面打印进程函数调用堆栈(dump backtrace)的方法
1. 为什么要打印函数调用堆栈?打印调用堆栈可以直接把问题发生时的函数调用关系打出来,非常有利于理解函数调用关系。比如函数A可能被B/C/D调用,如果只看代码,B/C/D谁调用A都有可能,如果打印出调用堆栈,直接就把谁调的打出来了。不仅如此,打印函数调用堆栈还有另一个好处。在Android代码里,函数命名很多雷同的,虚函数调用,几个类里的函数名相同等,即使用sour转载 2016-09-21 15:25:17 · 621 阅读 · 0 评论 -
Android下打印调试堆栈方法
打印堆栈是调试的常用方法,一般在系统异常时,我们可以将异常情况下的堆栈打印出来,这样十分方便错误查找。实际上还有另外一个非常有用的功能:分析代码的行为。android代码太过庞大复杂了,完全的静态分析经常是无从下手,因此通过打印堆栈的动态分析也十分必要。Android打印堆栈的方法,简单归类一下 1. zygote的堆栈dump实际上这个可以同时dump jav转载 2016-09-21 15:31:29 · 274 阅读 · 0 评论 -
SSL原理及应用(1)SSL协议体系结构
SSL(Secure Sockets Layer ,安全套接层),是为网络通信提供安全及数据完整性的一种安全协议。由Netscape研发,用以保障在Internet上数据传输的安全,利用数据加密(Encryption)技术,确保数据在网络上的传输过程中不会被截取及窃听。当前几乎所有浏览器都支持SSL,但是支持的版本有所不同。从图8-1中可以看到,IE同时支持SSL 2.0和SSL 3.0两个版转载 2016-10-11 18:47:55 · 2460 阅读 · 0 评论 -
Android面试题——5.常见面试官提问Android面试题①
一般的面试流程是笔试完就接着是面试了,面试时技术经理会问你一些你工作中遇到的Android方面的问题,谈谈你所做的项目,和在项目中所扮演的角色。今天我就给大家整理一些,面试中常见的面试官提的一些问题?1.要做一个尽可能流畅的ListView,你平时在工作中如何进行优化的? ①Item布局,层级越少越好,使用hierarchyview工具查看优化。 ②复用convertView转载 2016-10-11 19:43:25 · 295 阅读 · 0 评论 -
国内一线互联网公司内部面试题库
以下面试题来自于百度、小米、乐视、美团、58、猎豹、360、新浪、搜狐内部题库熟悉本文中列出的知识点会大大增加通过前两轮技术面试的几率。一、java基础1.接口的意义(百度)规范、扩展、回调2.抽象类的意义(乐视)为其子类提供一个公共的类型 封装子类中得重复内容 定义抽象方法,子类虽然有不同的实现 但是定义是一致的3.内部类的作用(百度,乐视)转载 2016-10-11 20:06:25 · 634 阅读 · 0 评论 -
SSL协议握手过程报文解析
仅供学习使用,转载来源http://www.cnblogs.com/piyeyong/archive/2010/07/02/1770208.htmlSSL建立握手连接目的:1.身份的验证,client与server确认对方是它相连接的,而不是第三方冒充的,通过证书实现2.client与server交换session key,用于连接后数据的传输加密和hash校验转载 2016-10-11 20:26:56 · 1403 阅读 · 0 评论 -
JNI官方规范中文版——如何使用JNI中的global reference和local reference
JNI提供了一些实例和数组类型(jobject、jclass、jstring、jarray等)作为不透明的引用供本地代码使用。本地代码永远不会直接操作引用指向的VM内部的数据内容。要进行这些操作,必须通过使用JNI操作一个不引用来间接操作数据内容。因为只操作引用,你不必担心特定JVM中对象的存储方式等信息。这样的话,你有必要了解一下JNI中的几种不同的引用:1、 JNI支持三种引用:局部引转载 2016-09-26 19:05:12 · 723 阅读 · 0 评论 -
JNI中如何打印Call Stack
NDK里面好像没有专门打印Call Stack的函数,正好又要用到这个功能,Google了一翻,可以用stack unwind相关的API实现。关于什么是stack unwind的解释如下:http://www.ibm.com/support/knowledgecenter/SSAE4W_9.0.0/com.ibm.xlcpp111.aix.doc/language_ref转载 2016-09-28 18:24:13 · 492 阅读 · 0 评论 -
如何打出Android程序调用stack trace
找出程序的调用堆栈 trace 可以知道是谁调用了这个接口,也能快速学习程序的调用流程,非常实用。但需要注意的是,不能在正式代码中使用,只能用于调试,这个非常耗资源也会造成 log 泛滥。下面就介绍如何在 Android Java/C++/C 程序当中打印出程序调用 trace,如果需要在其他环境中使用的话 C++/C 部分需要移植 corkscrew 库。Java非常简单,创建一个 T转载 2016-09-28 20:57:34 · 254 阅读 · 0 评论 -
国内一线互联网公司内部面试题库
以下面试题来自于百度、小米、乐视、美团、58、猎豹、360、新浪、搜狐内部题库熟悉本文中列出的知识点会大大增加通过前两轮技术面试的几率。一、java基础1.接口的意义(百度)规范、扩展、回调2.抽象类的意义(乐视)为其子类提供一个公共的类型 封装子类中得重复内容 定义抽象方法,子类虽然有不同的实现 但是定义是一致的3.内部类的作用(百度,乐视)内部类可以用多个实转载 2016-09-29 11:40:01 · 787 阅读 · 0 评论 -
在linux下把.so文件反汇编
如果是arm架构的可以这样。arm-linux-objdump -d libxxx.so > libxxx.S其中arm-Linux-objdump换成相应的工具前缀就行。Android的编译器都存在 prebuild目录下,prebuilt\linux-x86\toolchain\arm-eabi-4.4.3\arm-eabi\bin转载 2016-10-18 16:53:33 · 9551 阅读 · 0 评论 -
OpenSSL简介及在Windows、Linux、Mac系统上的编译步骤
OpenSSL介绍:OpenSSL是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。SSL是SecureSockets Layer(安全套接层协议)的缩写,可以在Internet上提供秘密性传输。其目标是保证两个应用间通信的保密性和可靠性,可在服务器端和用户端同时实现支持。已经成为Internet上保密通转载 2016-10-19 18:13:20 · 342 阅读 · 0 评论 -
java.lang.UnsupportedClassVersionError: com/android/dx/command/Main : Unsupported major.minor versio
严重性 代码 说明 项目 文件 行 禁止显示状态错误 xamarin java.lang.UnsupportedClassVersionError: com/android/dx/command/Main : Unsupported major.minor version 52.0xamaC:\Program Files (x86)\MSBuild\Xamarin\Androi转载 2017-03-30 10:46:42 · 1496 阅读 · 0 评论 -
Android性能优化之Systrace工具介绍(一)
本文是Android性能优化工具系列的第一篇,这个系列主要介绍Android性能优化过程中会使用到的一些工具,以及如何用这些工具来发现问题和解决问题。在性能优化方面,Android有不少性能工具供大家来使用,按照我们一贯地 “发现问题-解决问题”的思路来看,发现问题才是最主要的,一上来就想着如何去解决问题,反而会事倍功半。这一篇先来简单介绍一下Systrace这个工具。Systra转载 2016-09-19 18:32:45 · 1768 阅读 · 0 评论 -
HTTP 协议详解
当今web程序的开发技术真是百家争鸣,ASP.NET, PHP, JSP,Perl, AJAX 等等。 无论Web技术在未来如何发展,理解Web程序之间通信的基本协议相当重要, 因为它让我们理解了Web应用程序的内部工作. 本文将对HTTP协议进行详细的实例讲解,内容较多,希望大家耐心看。也希望对大家的开发工作或者测试工作有所帮助。使用Fiddler工具非常方便地捕获HTTP Request和HT转载 2016-08-26 19:58:51 · 494 阅读 · 0 评论 -
Android热修复实践应用--AndFix
一直关注App的热修复的技术发展,之前做的应用也没用使用到什么热修复开源框架。在App的热修复框架没有流行之前,做的应用上线后发现一个小小的Bug,就要马上发一个新的版本。我亲身经历过一周发两个版本,真的折腾用户的节奏~~所以,要开始考虑引入热修复。下面记录使用开源框架阿里巴巴的AndFix过程。实现的原理这里说的不是热修复怎么实现修bug的原理,这里说的是怎么使用AndFix。如果你转载 2016-08-31 11:27:15 · 234 阅读 · 0 评论 -
Android性能优化之避免过度渲染
1)Why Rendering Performance Matters现在有不少App为了达到很华丽的视觉效果,会需要在界面上层叠很多的视图组件,但是这会很容易引起性能问题。如何平衡Design与Performance就很需要智慧了。2)Defining ‘Jank’大多数手机的屏幕刷新频率是60hz,如果在1000/60=16.67ms内没有办法把这一帧的任务执行完毕,就转载 2016-08-22 18:34:28 · 518 阅读 · 0 评论 -
make版本不符合要求,不能编译android的解决方法
Android can only be built by versions 3.81 and 3.82下载地址ftp://ftp.gnu.org/gnu/make/make3.8.2的安装步骤:tar -zxvf make3.8.2.tar.gz在make-3.8.2目录下./configuremakemake install一般情况转载 2016-09-13 09:54:47 · 317 阅读 · 0 评论 -
广播接收器 broadcast sendOrderedBroadcast android
广播接收器: 广播接收者(BroadcastReceiver)用于监听系统事件或应用程序事件,通过调用Context.sendBroadcast()、Context.sendOrderedBroadcast()可以向系统发送广播意图,通过广播一个意图(Intent)可以被多个广播接收者所接收,从而可以在不用修改原始的应用程序的情况下,让你对事件作出反应。 其中C转载 2016-08-22 19:11:20 · 423 阅读 · 0 评论 -
Android如何判断应用程序是安装在手机内存中还是SD卡
[java] view plain copy/** * 判断包名所对应的应用是否安装在SD卡上 * @param packageName * @return, true if install on SD card */ public static boolean isInstallOnSDCard(String packag转载 2016-08-22 19:48:11 · 2441 阅读 · 0 评论 -
Android开发内存管理之道
相信一步步走过来的Android从业者,每个人都会遇到OOM的情况。如何避免和防范OOM的出现,对于每一个程序员来说确实是一门必不可少的能力。今天我们就谈谈在Android平台下内存的管理之道,开始今天的主题之前,先再次回顾两个概念。内存泄漏:对象在内存heap堆中中分配的空间,当不再使用或没有引用指向的情况下,仍不能被GC正常回收的情况。多数出现在不合理的编码情况下,比如在 Activi转载 2016-08-22 20:04:34 · 171 阅读 · 0 评论 -
Android.mk解析
1. Android.mk示例LOCAL_PATH := $(call my-dir) #指定当前目录 include $(CLEAR_VARS) #清除一些变量的值,但是LOCAL_PATH除外LOCAL_MODULE_TAGS := optional #编译选项便是在何种情况下编译 LOCAL_SRC_转载 2016-09-13 19:13:26 · 271 阅读 · 0 评论 -
NDK 异常检测与抛出
1.定位so库中的异常http://www.csdn.net/article/2014-12-30/2823366-Locate-Android-NDKAndroid2.在代码中捕获异常NDK 是native 编程的开发环境,使用的是C或C++语言,在这个过程中,更多的是使用c与c++的混编,因为在计算机底层,c提供了丰富的函数库,所以即使使用C++,也需要不可避免的进行c转载 2016-09-14 11:35:11 · 637 阅读 · 0 评论 -
JNI/NDK开发指南(十一)——JNI异常处理
转载请注明出处:http://blog.csdn.net/xyang81/article/details/45770551异常简介异常,显而意见就是程序在运行期间没有按照正常的程序逻辑执行,在执行过程当中出现了某种错误,导致程序崩溃。在Java中异常分为运行时异常(RuntimeException)和编译时异常,在程序中有可能运行期间发生异常的逻辑我们会用try…catch…来处理转载 2016-09-14 11:48:08 · 219 阅读 · 0 评论 -
Android4.4 webview chromium显示网页的chromium内核结构
ndroid4.4 webview chromium显示网页的chromium内核结构关闭关闭android4.4 webview chromium是单进程的,图中所有组件都运行在Browser进程中。按从上而下的顺序介绍这张图中与显示网页相关的chromium内核结构。1.转载 2016-09-02 17:32:43 · 1483 阅读 · 0 评论 -
Android源码的编译(4.4.2)
1. 将android源码中下的所有文件,文件夹都加上可执行的权限,因为在编译过程中,你会遇到Permission Denied的错误,这是因为有些可执行文件在运行过程中需要可执行的权限,可是,我怎么知道哪些文件需要什么权限呢,干脆一不做,二不休,我就把android源码目录下的所有文件都加上可执行的权限,那么后续就满血复活啦,只要敲击以下命令即可: sudo chmod -R转载 2016-09-14 16:52:42 · 387 阅读 · 0 评论 -
Java中Synchronized的用法
《编程思想之多线程与多进程(1)——以操作系统的角度述说线程与进程》一文详细讲述了线程、进程的关系及在操作系统中的表现,这是多线程学习必须了解的基础。本文将接着讲一下Java线程同步中的一个重要的概念synchronized.synchronized是Java中的关键字,是一种同步锁。它修饰的对象有以下几种: 1. 修饰一个代码块,被修饰的代码块称为同步语句块,其作用的范围是大括号{}转载 2016-08-24 18:21:39 · 161 阅读 · 0 评论 -
ubuntu 14.10 编译 android 4.4kitkat
由于在windows下开发luncher比较麻烦,决定转到在linux下开发,自己编译源码。以下是安装过程中遇到的问题,需要一一解决:干脆把下面的环境都安装:git gnupg flex bison gperf build-essential zip curl libc6-dev x11proto-core-dev g++-multilib转载 2016-09-18 10:46:15 · 531 阅读 · 0 评论 -
关于android WebViewClient和WebChromeClient
一、Android之WebViewClient与WebChromeClient的区别ANDROID应用开发的时候可能会用到WEBVIEW这个组件,使用过程中可能会接触到WEBVIEWCLIENT与WEBCHROMECLIENT,那么这两个类到底有什么不同呢?WebViewClient主要帮助WebView处理各种通知、请求事件的,比如:onLoadRes转载 2016-08-26 11:55:12 · 208 阅读 · 0 评论 -
给Android系统安装busybox
busybox号称Linux平台的瑞士军刀,它集成了100多个最常用的Linux命令和工具的软件。其中包含一些常用的工具,如ls,cat,echo等等;也包含了一些更强大,更复杂的工具,如grep,find,mount,telnet等等。这些工具在标准Linux系统上都有,但Android系统却去掉了其中的大部分工具,所以在调试和研究Android系统时有些不方便。为此,我们需要自己手动安装bus转载 2016-09-06 10:10:50 · 1848 阅读 · 1 评论 -
android模拟器上网设置
在命令行中输入:emulator @模拟器名称启动Android 模拟器后, 输入:adb shell进入adb shell模式:通过setprop命令进行设置设置dns,一般如果是通过路由器上网,可以把 dns设置为路由器的默认网关。192.168.1.1。setprop net.dns1 192.168.1.1另外就是设置代理了转载 2016-09-06 11:15:45 · 463 阅读 · 0 评论 -
AndroidStudio之如何使用aar
一. 简介aar是一个类似于jar的文件格式。但是他们之间是有区别的。jar:仅仅包含class和清单文件,没有资源文件。aar:包含了class文件和资源文件。说白了就是Android的专属“jar”将代码打包成aar文件,可以在一定程度上加快AndroidStudio的速度。尤其是将Module打包成aar文件,提升的效果很显著。二. 如何得到aar转载 2017-03-31 11:31:21 · 637 阅读 · 0 评论