![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
android
婵婵子~
往事不记,后事不提,做个成长的小朋友
展开
-
Android 快速搭建App架构
如何搭建App的基本框架,这个问题考察了Android的技术选型以及整体架构的能力。有一定经验的Android开发者,或多或少都有自己的一套基础开发工具集,这些工具包含了开源的第三方库和自己开发的库。App的整体架构:应用层和基础层应用层用于展示效果,直面用户基础层用于实现,提供App的公有的东西,避免重复技术选型的考量点: 选择第三方库一般综合考虑如下几点:提供的特性是否满足项目的需求是原创 2017-11-16 18:29:16 · 840 阅读 · 1 评论 -
gradle 修改apk 名称
修改library模块build 生成的aar包apply plugin: 'com.android.library'//修改release版本生成的aar的名字 libraryVariants.all { variant -> variant.outputs.each { output -> if (output.outputFile != nu原创 2017-05-31 09:21:45 · 2428 阅读 · 0 评论 -
android 集成极光推送
创建极光推送的开发者账号,完成后会指导你下载导入相应sdk包android sdk的集成jcenter自动集成,不需要在项目中添加jar和so,jcenter会自动完成依赖,在AndroidManifest.xml不需要添加任何的配置,jcenter会自动导入在 Project根目录下的gradle配置jcenter的支持allprojects { repositories {原创 2017-05-31 09:55:39 · 298 阅读 · 0 评论 -
native和java堆栈不同可能引发的问题
在Dalvik的实现中,native的代码和java的代码使用不同的堆栈,而且大小也不同,通常java的堆栈大小为32kb,native的堆栈大小通常为1mb.但是在ART中,native和java使用相同的堆栈。ART线程的堆栈大小通常情况下和Dalvik中相同,如果堆栈太小引发程序出错,可以在程序中指定堆栈的大小。在java中,Thread类的构造方法可以指定堆栈的大小。在JNI中,对于运行有j原创 2016-11-28 17:38:22 · 1526 阅读 · 1 评论 -
android之侧滑菜单
Navigation(library)环境要求:API14以上和android support v7 23.2.1 (AppCompatActivity + Toolbar)怎样使用Gradledependencies { compile 'br.com.liveo:navigationdrawer-material:2.5.1'}Maven<dependency> <gro原创 2016-11-29 11:14:58 · 327 阅读 · 0 评论 -
android 之浅谈UDP与TCP网络编程
TCP与UDP的区别TCP 和UDP都是传输层的协议, 但TCP是面向连接、可靠的字节流服务,传输速度慢,而UDP是用户数据报协议,是一种面向数据报的协议,不需要建立连接,传输速度快。 对于TCP要经过3次握手: 第一次握手:请求端发送一条消息到服务端,服务端收到消息。 第二次握手:接收端接收到消息后发送一条消息给请求端,表示服务端已经收到了消息 第三次握手:请求端接收到服务端返回的消息,证原创 2017-01-05 16:00:04 · 367 阅读 · 0 评论 -
JavaMail发送邮件失败决解办法
出现的问题,如下:DEBUG: setDebug: JavaMail version 1.4.7DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Oracle]DEBUG SMTP: useEhlo true, useAuth trueDEBUG原创 2017-01-14 16:07:34 · 6046 阅读 · 0 评论 -
android依赖第三方库
1.本地依赖,如下:compile project(':msqframework')2.jar包依赖,如下:compile fileTree(include: ['*.jar'], dir: 'libs')compile files('libs/sharesdk/MobCommons.jar')3.aar包依赖,如下:repositories { maven { url "https://j原创 2016-10-08 09:51:29 · 386 阅读 · 0 评论 -
android AsyncTask
android AsyncTask介绍1 ) AsyncTask实现的原理,和适用的优缺点AsyncTask,是android提供的轻量级的异步类,可以直接继承AsyncTask,在类中实现异步操作,并提供接口反馈当前异步执行的程度(可以通过接口实现UI进度更新),最后反馈执行的结果给UI主线程.使用的优点:简单,快捷过程可控使用的缺点: - 在使用多个异步操作和并需要进行Ui变更时,就变原创 2016-10-08 16:11:56 · 281 阅读 · 0 评论 -
android PopupWindow的使用和分析
PopupWindow使用PopupWindow这个类来实现弹出框,可以使用任意布局,这个弹出框是悬浮在activity上的。使用如下://region popupwindow process private PopupWindow pw; private void showPopupWindow(){ View view = LayoutInflater.from原创 2017-05-26 15:33:02 · 341 阅读 · 0 评论 -
基于Canvas绘制的图表
自定义viewpackage com.msqsoft.hodi_rent_app.view;import android.content.Context;import android.graphics.Bitmap;import android.graphics.Bitmap.Config;import android.graphics.BitmapFactory;import andro原创 2017-05-16 15:19:56 · 678 阅读 · 0 评论 -
android studio导入项目出错:Error:Execution failed for task ':app:processDebugManifest'. > Manifest merger
android studio导入项目出错:Error:Execution failed for task ‘:app:processDebugManifest’. > Manifest merger failed with multiple errors, see logs解决方式:这个情况是有不同版本的 SDK 并不能合并,建议降低主程序target SDK版本原创 2017-11-14 09:37:22 · 458 阅读 · 0 评论 -
Android6.0动态权限申请
6.0权限的基本知识,以下是需要单独申请的权限,共分为9组,每组只要有一个权限申请成功了,就默认整组权限都可以使用了。group:android.permission-group.CONTACTS permission:android.permission.WRITE_CONTACTS permission:android.permission.GET_ACCOUNTS原创 2017-11-14 09:36:23 · 184 阅读 · 0 评论 -
MultiDex解决64K限制的问题
64k – 64k方法数问题,本质上是指Android Dalvik可执行文件.dex中java方法数引用超过65536(65536/1024=64K)MultiDex只是一个不得而为之的方案,集成到项目中,需要经过完整的测试才能上线,可能降低性能等问题避免出现64K问题,最佳实践是永远保持应用的方法数低于64K原创 2017-11-17 14:03:08 · 311 阅读 · 0 评论 -
ANR
ANR 是Android中一个独立的概念,全称是Application Not Responding(应用程序无法响应)。ANR产生的原因只有当应用程序的UI线程响应超时才会引起ANR,超时的原因一般有2种:当前的事件没有得到处理,例如UI 线程正在响应另一个事件,当前事件由于某种原因被阻塞了。当前事件正在处理,但由于耗时太长没能及时处理完成典型的ANR问题场景UI线程存在耗时操作,例如UI原创 2017-08-11 17:17:32 · 421 阅读 · 0 评论 -
Android 注解
Android 应用开发对注解的应用达到了淋漓尽致的地步,无论是运行是注解,还是编译时注解,或是标准注解,都被广泛应用。Android Support Library 专门推出注解库Support Annotation,各种开源函数库也应用注解,例如REST网络请求。注解的定义 注解是java语言的特性之一,它是在源代码插入的标签,这些标签在后面的编译或者运行过程中起到某种作用,每个注解都必须通过原创 2017-08-11 16:35:00 · 188 阅读 · 0 评论 -
android 获取当前系统的语言
Locale locale = context.getResources().getConfiguration().locale; String language = locale.getLanguage(); if (language.contains(“en”)){ inputStream = context.getResources原创 2017-08-11 14:07:29 · 11454 阅读 · 0 评论 -
NDK之ABI
简介:早期的android系统几乎只支持ARMv5的CPU架构,发展到现在,android目前支持7种不同的cpu架构armv5armv7x86mipsarmv8mips6x86_64 每一种架构关联着一种ABI,那么什么是ABI呢?ABI是Application Binary Interface的缩写,就是应用程序二进制接口,定义了二进制文件(android平台专指.so文件)如原创 2017-08-03 08:58:23 · 595 阅读 · 0 评论 -
android JMessage集成
认识极光IM极光IM – JMessage,帮助 App 解决应用内聊天和跨应用聊天问题,开发者可集成SDK,快速实现稳定可靠的聊天功能。目前提供 iOS / Android / web 的 SDK,以及 Rest API 和后台管理系统,满足开发者不同场景下的需求,大大减少开发成本,提高效率。 模块化的极光开发者SDK模块化的极光,一个JCore+N个服务,如图:JMessage 与JPush的原创 2017-04-26 10:56:45 · 807 阅读 · 0 评论 -
android Monkey
monkey是什么?Monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设备中。它向系统发送伪随机的用户事件流(如按键输入、触摸屏输入、手势输入等),实现对正在开发的应用程序进行压力测试。Monkey测试是一种为了测试软件的稳定性、健壮性的快速有效的方法。Monkey的基本用法1.在终端利用命令行启动monkey 2.可以使用脚本来启动monkey,一般使用python 由于原创 2016-10-09 15:15:44 · 249 阅读 · 0 评论 -
java.lang.NoClassDefFoundError org.jivesoftware.smackx.packet.DiscoverInfo$Identity
java.lang.NoClassDefFoundErrororg.jivesoftware.smackx.packet.DiscoverInfo$Identityjava.lang.RuntimeException:Unable to create application com.msqsoft.hodicloud.utils.MyApplication: java.lang.IllegalS原创 2016-10-24 16:47:53 · 739 阅读 · 0 评论 -
android 单点登录
单点登录:同一个帐号不能同时在不同设备登录,如果A设备登录,然后B设备也用同一个帐号登录,A设备就会强制下线服务端: 服务端需要集成Token,每次在app登录时为app分配新的token,如果在某次http请求中app传递的token不是最新的,则需要重新登录android端监听 app如何知道该用户在其他设备登录,有3种方法来验证 1.api请求返回特定的code 缺点:要在api请求之原创 2016-10-25 14:22:08 · 1688 阅读 · 0 评论 -
gradle 自动打包签名
自动打包签名利用gradle管理机制,编写脚本,从而实现android自动签名 1.首先生成签名文件.jks; 2。在app目录下创建secure.properties文件,打开该文件写入签名文件的密码和别名的密码,如下:key.store.password=123456key.alias.password=1234563.在build.gradle配置文件中,写脚本,如下:signingCo原创 2016-10-08 09:19:42 · 544 阅读 · 0 评论 -
Windows下ADB命令使用
adb devices //查找连接的设备 adb install adb unstall //卸载apkadb push //复制文件到手机adb pull //复制手机文件到电脑adb reboot //重启设备adb shell //登陆设备adb shell am start -n [应用包名/启动页的的路径] //启动应用的某一页面adb shell pm lis原创 2016-09-29 17:48:49 · 5235 阅读 · 0 评论 -
Proguard代码混淆
代码混淆是一件非常繁琐的事情,大量的第三方库和引用代码的混淆设置非常容易错,http://proguard.herokuapp.com/这可以帮助开发者快速地生成第三方库可以使用的混淆代码设置原创 2016-09-27 19:57:01 · 354 阅读 · 0 评论 -
gitignore自动生成
gitignore文件是Git版本控制中的忽略文件,可以自行设置不用Git进行控制的文件。例如.class等https://www.gitignore.io/这个网址可以帮助开发者快速生成推荐的gitignore文件。原创 2016-09-27 19:50:17 · 1508 阅读 · 0 评论 -
Activity的4种launchMode
launchMode介绍launchMode在多个Activity跳转的过程中扮演着重要的角色,它可以决定是否生成新的Activity实例,是否重用已存在的Activity实例,是否和其他Activity实例公用一个task里。这里简单介绍一下task的概念,task是一个具有栈结构的对象,一个task可以管理多个Activity,启动一个应用,也就创建一个与之对应的task。 Activity一原创 2016-09-27 17:39:26 · 278 阅读 · 0 评论 -
Gradle之多渠道打包
多渠道打包所谓多渠道打包,实际上是在代码层面上标记不同的渠道名,从而便于统计应用市场apk的下载量, 利用Gradle进行多渠道打包,开发者从之前的ant打包中解放出来,Gradle进行简单多了,只需要在Gradle脚本中进行简单的配置,即可完成多渠道打包。创建渠道占位符 首先在AndroidMainifest文件的Application节点下,创建meta-data节点:<meta-data原创 2016-09-18 16:44:35 · 218 阅读 · 0 评论 -
Gradle认识
Gradle认识Android Studio 的核心是Google新推出的Gradle编译系统。gradle用于替代Eclipse所使用的ant作为android的编译工具,相对于ant编译工具,gradle吸纳了ant的脚本特性、Maven丰富的依赖管理策略和强大的插件式环境。所以它比ant上手要难。 gradle只是构建工具,而新的版本总是在更迭,所以使用Gradle Wrapper将会是一个原创 2016-09-18 14:44:21 · 469 阅读 · 0 评论 -
AndFix热补丁修复
AndFix热补丁修复AndFix,全称是Android hot-fix。是阿里开源的一个热补丁框架,允许APP在不重新发布版本的情况下修复线上的bug。支持Android 2.3 到 6.0,并且支持arm 与 X86系统架构的设备。完美支持Dalvik与ART的Runtime,补丁文件是以 .apatch 结尾的文件。andFix修复的流程:andFix修复的原理:具体使用1.去GitHub:h原创 2016-09-12 16:23:36 · 360 阅读 · 0 评论 -
LoadingDrawable原理与实现
LoadingDrawableLoadingDrawable继承Drawable(不懂的话可以先往后看)并实现接口Animatable编写的动画加载库,本项目采用策略模式(Strategy),构造函数必须传入LoadingRenderer的子类,并通过回调Callback与LoadingRenderer进行交互。LoadingRenderer主要负责LoadingDrawable的measure和d原创 2016-11-28 16:20:04 · 1606 阅读 · 0 评论 -
android Animation
动画的介绍 android的animation一共4种类型:alpha、scale、translate、rotate(透明度、缩放、位置移动、旋转) 2. 动画的模式 一种是渐变型的:alpha和scale 一种是转动型的:translate和rotateanimation的使用,分为2种,一种是在xml加入动画,然后动态加载xml;第二种是java代码声明对象。 在xml文件中定义动画原创 2016-11-24 17:30:48 · 279 阅读 · 0 评论 -
重写onKeyDown方法,监控返回键、菜单键和Home键
1、重写onKeyDown方法监控返回键、菜单键@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) { if(keyCode == KeyEvent.KEYCODE_BACK) { // 监控返回键 new Builder(TestActivity.this).setTitle("提示原创 2016-11-02 10:16:21 · 1802 阅读 · 0 评论 -
android 热修复方案
andfix是一个在线修复bug,支持android2.3到7.0版本,支持32/64位的ARM和X86架构的cpu. andfix补丁的流程如下: 1. 在线app运行中,发现有bug,该版本为A 2. 修复bug重新生成新的版本,该版本为B 3. 使用apkpatch工具,版本A和版本B的APP生 成.apatch后缀的补丁文件,放到服务器预配置好的路径下 4. 在线运原创 2016-11-02 10:49:27 · 479 阅读 · 0 评论 -
android 的apk反编译
使用的工具: 1. apktool 2. dex2jar 3. jd-gui 原理: apktool把apk里的资源文件和签名文件提取出来 dex2jar将apk后缀改为zip或rar后,解压出来的classes.dex转为jar包 jd-gui是查看dex2jar生成的文件apktool反编译流程: 1. 下载工具apktool,解压得到,如下图: 2.配置java的环境变量原创 2016-11-03 16:19:42 · 255 阅读 · 0 评论 -
Android Studio JNI + NDK
NDK的介绍NDK–Native Development Kit,支持android平台开发C/C++,android平台是由java语言开发的,为什么需要用到C/C++呢?主要的原因是java已经无法满足android的开发,例如底层库的开发–opencv。 NDK提供了一系列的工具,帮助开发C/C++的动态库,并将.so和java应用打包成apk.JNI的介绍JNI–java Native I原创 2016-11-08 10:49:54 · 386 阅读 · 0 评论 -
android studio之OpenCV(native)使用
参考博文:http://blog.csdn.net/sbsujjbcy/article/details/49520791拷贝OpenCV SDK下的native到工程的根目录下,如下图:在main下创建jni目录,如图所示:jni下创建android.mk和application.mk,编辑文件,内容如下:android.mk# Copyright (C) 2009 The Android Op原创 2016-11-09 17:41:22 · 2231 阅读 · 0 评论 -
android 之Opencv(java)使用
去官网下载opencv-android http://opencv.org/解压,文件夹包含了apk,sample,sdk,把sdk的java导入工程目录下作为依赖库,如下:3.拷贝value下的attrs.xml到res下拷贝sdk 里native下的.so库到工程的libs目录下创建一个Activity调用,内容如下:package com.lee.opencvdemo;import原创 2016-11-11 17:23:14 · 622 阅读 · 0 评论 -
android:使用BaseExpandableListAdapter实现可折叠的列表
使用BaseExpandableListAdapter可以实现折叠的列表,例如QQ分组 BaseExpandableListAdapter与BaseAdapter的基本原理是一样的,只是在传值的时候,前者要求传入2组(group和child),后者只需1组即可。 1.重写BaseExpandableListAdapter类,内容如下:package com.hodi.hodi_opencv;im原创 2016-11-23 17:06:38 · 1259 阅读 · 0 评论 -
java开发Binder服务
Binder使用简单,开发一个Binder服务就相对复杂,相比较而言,java开发一个服务比C++要简单的多。 下面写一个比较简单的组件Service,它里面包含了Binder服务。 (1)第一步,编写aidl文件,在java包目录下创建一个aidl文件(IExampleService.aidl),并且根据需求声明方法,然后build一下,内容如下:这里写代码片build后生成IExampleS原创 2016-11-24 11:18:19 · 500 阅读 · 0 评论