Android开发
文章平均质量分 77
yellow1688
这个作者很懒,什么都没留下…
展开
-
python脚本打包apk-上传到内测平台-企业微信通知
python脚本完成Android项目打包apk,然后上传到服务器或者上传到fir,最后在企业微信发送消息原创 2022-09-20 11:38:27 · 995 阅读 · 1 评论 -
关于build.gradle中的packagingOptions配置参数
关于build.gradle中的packagingOptions配置参数使用方法1. exclude2. pickFirst3. doNotStrip4. merge引入库少配置该参数出现的问题问题解决本文一来带大家了解一下这个配置参数使用方法,二来说说这个配置参数会引起哪些问题。使用方法packagingOptions常见的设置项有exclude、pickFirst、doNotStrip、merge。1. exclude过滤掉某些文件或者目录不添加到APK中,作用于APK,不能过滤aar和jar原创 2021-10-08 14:53:24 · 1151 阅读 · 0 评论 -
Android进阶之路-自定义ButterKnife(中)
众所周知,android项目通过gradle构建工具编译打包的时候,会执行很多task任务。大致会经历以下几个阶段**.java文件-->.class文件-->.dex文件-->.apk文件**ButterKnife的原理就是编译的时候动态生成XXX$ViewBinder类,在我们调用BufferKnife.bind(this)的时候,通过动态的类加载方式创建出这个ViewBinder类的实例,并且调用bind()方法完成给带有注解的对象进行id绑定的操作。原创 2021-07-03 22:37:02 · 236 阅读 · 3 评论 -
Android进阶之路-自定义ButterKnife(下)
Android进阶之路-自定义ButterKnife(下)原创 2021-07-03 22:36:17 · 118 阅读 · 0 评论 -
Android Profile 检测结果分析详解$是什么意思
众所周知,Android profile工具可以进行内存分析。网上也有很多文章介绍,例如:https://www.jianshu.com/p/e75680772375但是你真的清楚分析报告的每个字段的意义么?就问一个简单的,如下图的VerticalTextSwitcher$1是什么意思?不知道就往下看。XXXX$1,XXXX$2...表示XXXX类里的内部类,右键jump to source能够直接定位到代码中具体的内部类位置。如果重新定义一个类来继承内部类,就有了名字,如下..原创 2021-03-19 17:02:34 · 412 阅读 · 1 评论 -
Android高级开发进阶之路4——增量更新(bsdiff,bspatch,bzip,ndk)
目录增量更新介绍效果步骤总结增量更新最近换了个新手机,号称2019年的android机皇一加7plus。面对这90z的屏幕,原本不玩游戏的我也入了王者农药的坑!不过很少玩,所以基本上每次玩都要下载补丁更新才能玩。今天我们就来讲一下Android应用的增量更新。介绍优点: 节省用户更新新版本的流量、时间、内存空间。基本流程如下:app...原创 2019-10-16 19:55:33 · 870 阅读 · 0 评论 -
初探Arouter框架
学习Arouter框架最近公司需要重构项目,需要用到jecket page和Arouter框架。利用一晚上的时间将这两个东西快速地学习一下。·首先是ArouterARouter官方地址:https://github.com/alibaba/ARouter/blob/master/README_CN.md背景传统的Activity页面跳转有两种方式,一种是显示跳...原创 2019-06-11 00:41:43 · 725 阅读 · 0 评论 -
Android性能分析工具的使用
最近下来了一个比较棘手的任务,优化项目的启动速度!我们解决问题的第一步,首先就是找到问题,我们需要借助分析工具的帮助。熟练使用分析工具准确定位问题的关键,下面来介绍一下android代码的分析工具。常用的Android代码分析工具:1、Android profiler2、TraceViewAndroid Profiler工具:Android Studio 3.0+An...原创 2019-06-04 10:38:40 · 1384 阅读 · 0 评论 -
Android Jetpack套件之Paging分页组件
Google 2018 I/O大会上,Google正式推出了AndroidJetpack——这是一套组件、工具和指导,可以帮助开发者构建出色的 Android 应用。架构组件可帮助您设计稳健、可测试且易维护的应用。 数据绑定 以声明方式将可观察数据绑定到界面元素 Lifecycles 管理您的 Activity 和 Fragment 生命周期 LiveData...原创 2019-06-22 00:07:30 · 725 阅读 · 0 评论 -
Android Jetpack套件之Navigation导航组件
首先记录一个坑:no current navigation node06-26 14:42:25.787 25913-25913/com.bluetree.bytepay2 E/AndroidRuntime: FATAL EXCEPTION: main Process: com.bluetree.bytepay2, PID: 25913 java.lang.IllegalSt...原创 2019-06-26 18:14:56 · 1696 阅读 · 2 评论 -
Android如何构建自己的库在build.gradle中引用-教程+跳坑
开发Android也有一定的年头的,承蒙大神们通过不懈的努力带给我们众多的便利!或许也到自己贡献的时候了,那么我们先学习一下如何构建自己的库,并且在gradle中的引用!步骤前期准备:新建一个project,提交到github上面去创建lib的module这个module里的代码就是别人可以引用的代码创建你分享的代码,例如下图在github上...原创 2019-06-28 11:08:56 · 2761 阅读 · 2 评论 -
Android高级开发进阶之路2——手写butterknife(注解,注解处理器,类加载器)
Android高级开发进阶之路2——手写butterknife(注解,注解处理器,类加载器)首先我们来简单讲讲ButterKnife的工作过程:引入库:compile 'com.jakewharton:butterknife:8.8.1'annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'使用:...原创 2019-08-30 23:36:17 · 366 阅读 · 2 评论 -
Android高级开发进阶之路3——动态换肤(监听xml布局初始化,动态加载类,加载插件资源文件)
动态换肤(监听xml布局初始化,动态加载类,加载插件资源文件)一般小公司是不会接触到换肤的,尤其是动态下载皮肤插件来实现换肤。那么,今天我们来一探究竟。如何实现加载从网上下载的皮肤插件,并且替换到相应的控件中!大致涉及到4个步骤:1、下载皮肤插件(通常为apk,后期用skin.apk来表示皮肤插件)到本地2、根据皮肤插件skin.apk的绝对路径,加载插件里的资源文件3、准...原创 2019-10-08 08:45:46 · 358 阅读 · 0 评论 -
Android开发模式万佛朝中MVX(MVC、MVP、MVVM)
今天公司的测试服务器开小差了,后台被吐槽的体无完肤,虽然我们都知道跟他没有什么关系,但是生活需要乐趣,总要有人背锅,哈哈!~~~暂时没有环境开发了,那就分享一下之前做的一篇关于Android开发模式的总结,MVC,MVP,MVVM对于刚了解或者没有好好归纳总结的朋友来说,特别是那些像我记性很差的朋友来说,很容易忘记。下面我们一起归纳总结一下,这样屡清楚他们的关系我们用起来就可以迎刃有余,也不会...原创 2019-10-08 18:05:42 · 308 阅读 · 0 评论 -
参透Android的JNI,NDK
什么是NDK,跟JNI之间有什么关系原生开发工具包 (NDK) :是一套工具,允许您为 Android 使用 C 和 C++ 代码,并提供众多平台库。Java 原生接口 (JNI) :JNI是一个协议,这个协议用来沟通java代码和外部的本地代码(c/c++),外部的c/c++代码也可以调用java代码。需要NDK的原因进一步提升设备性能,以实现低延迟时间,或运行计算密集型应用,如...原创 2019-05-14 14:47:37 · 178 阅读 · 0 评论 -
一行代码实现Recycleview拖拽排序
公司的老项目需要加一个拖拽排序的功能,以前是用listview来实现的,自定义listview,然后再onInterceptTouchEvent中拦截DOWN的事件生成一个新的View,达到一个拖动的效果。这个思想是没有毛病,就是太繁琐了。Recycleview的效果就非常好,最后简单封装了一下,给大家使用:首先我们需要一个工具类:DragRecycleViewHelperi...原创 2019-04-18 15:10:27 · 458 阅读 · 0 评论 -
Android Jetpacket套件之LiveData+ViewModel
Android Jetpacket套件之LiveData+ViewModel最近很火的一个mvvm模式开发,其实原来2017年以前就有databinding的模式了。2018年的i/o大会Google推出的这个全家桶,让开发变得更加简单。一般新的东西到成熟估计还要2,3年吧,八卦的我怎么安奈得住,直接教程吧。好处:数据驱动模式(也就是数据有变化会驱动界面刷新),解耦性强。团队开发...原创 2019-07-10 14:55:08 · 944 阅读 · 0 评论 -
TCP/IP,Http,Socket,XMPP的区别
转载自:http://blog.csdn.net/skyboy11yk/article/details/24304461网络由下往上分为 物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。 通过初步的了解,我知道IP协议对应于网络层,TCP协议对应于传输层,而HTTP协议对应于应用层, 三者从本质上来说没有可比性, socket转载 2014-09-25 22:27:58 · 518 阅读 · 0 评论 -
新手学Socket,及常见问题解决,看完肯定学会Socket,demo绝对没问题
这两天一直在研究Socket编程,其实也说不上研究吧,就是想试一下Socket这个协议,了解一下而已。 首先,这里附上对Socket的初步了解:先看看socket通信基础:所谓socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄。应用程序通常通过"套接字"向网络发出请求或者应答网络请求。 Socket和ServerSocket类库位于java.net包中原创 2014-09-17 23:07:28 · 654 阅读 · 0 评论 -
android中fragment和activity之间相互通信
android中fragment和activity之间相互通信在用到fragment的时候,老是会遇到一个问题,就是fragment与activity之间的通信。下面就来记录一下activity和fragment之间 通过实现接口来互相通信的方法。1. activity 向fragment发出通信,就这么写:private OnMainListene转载 2014-10-29 11:04:36 · 534 阅读 · 0 评论 -
socket一个多线程多客户端即时聊天学习
转载:1.Socket是代表两台机器之间网络连接的对象(java.net.Socket)。 Socket的建立如下,参数分别是服务器端的IP地址和端口号: Socket socket = new Socket("167.5.75.1",5000);2. 客户端(Client)Socket的使用 2.1 从Socket读出数据步骤:转载 2014-10-10 20:27:14 · 2168 阅读 · 0 评论 -
关于导包,报极光出错的问题,java.lang.IllegalArgumentException
前提:各种设置已经按极光的说明文档进行正确的配置,调试的时候可以正常使用。问题:为何就是无法打包程序签名包导出呢?有些网站说多操作几次就可以了,我操作了一个上午还是不行呢?还是报以下的错误呢?原因:搞了一上午?原来出现这种错误是因为Android的sdk代码混淆工具版本太旧了,所以导致打包程序报错!解决方案:只要我们更新那个代原创 2015-06-02 11:08:42 · 1368 阅读 · 0 评论 -
android 按钮按下时改变字体颜色
android 按钮按下时改变字体颜色 (2012-06-01 14:55:44)转载▼标签: it 1.新建 drawable/button_font_style.xml 2.添加至需要的xml里转载 2014-10-22 16:06:04 · 1004 阅读 · 0 评论 -
(微信框架之雏形)ViewPager+Fragment实现滑动标签页
ViewPager + Fragment实现滑动标签页简单适合新手的框架原创 2015-07-16 11:36:30 · 669 阅读 · 0 评论 -
socket一个server多个client间的通讯学习历程和demo
关于socket协议的一个server(服务器)多个client(客户端)间的即使聊天实现 这个月一直在想弄明白即时聊天这这个模块,原来一直以为是要用到socket协议的。不过,上网查了一下资料,都说是即时聊天软件用的基本上都是XMPP技术的,然后又查了一下XMPP这个东西,原来也是一个协议,封装好的一个,然后就没有去深入了解了,先用这个socket来实现看看,毕竟这个socket名原创 2014-10-11 21:29:33 · 6724 阅读 · 3 评论 -
自定义ViewGroup——圆形排列LinearLayout
自定义ViewGroup——圆形排列LinearLayout官方的控件远远无法满足客户的需求了,很多时候需要自己去定义需要的View和ViewGroup。前段时间因为公司的项目非常赶,自己写好的东西都没有时间记录下来,现在稍微好点,就在博客这里留下点足迹。之前一直对onMeasure(),onLayout(),onDraw()这几个方法似懂非懂的,如今顺便复习一下。如题,我原创 2016-05-23 12:18:13 · 2944 阅读 · 0 评论 -
ViewPager+Fragment避免重复createview
ViewPager+Fragment避免重复createview每次使用ViewPager+Fragment来作为app的框架的时候都要格外小心,因为他们的生命周期有点奇怪,并没有Activity那样来得自然。如何奇怪呢,请看下面日志打开app,一开始为第一个Fragment02-09 14:02:12.551 30159-30159/com.tianjiyun.glyc原创 2017-02-09 14:55:33 · 2736 阅读 · 0 评论 -
xutils3.0 post请求网络,后台无法接收到参数
xutils3.0 post请求网络遇到的那些坑最近公司项目比较赶,所以直接用了一个集成的xutils3.0。跟php的同事对接口的时候发现,用网上的post案例请求数据的时候,php端无法接收到数据,但是ios端post的数据php是可以接收到的。百度了半天没有百度出答案,后来自己瞎搞发现了点眉目,现在分享出来给后人~~~原因:提交表单的方式有以下几种:原创 2017-03-31 14:10:12 · 4022 阅读 · 4 评论 -
开发Android高德地图
Android高德地图记录运动轨迹,并自动定位视图到2点之间且自动缩放废话不错说,这次我们来实现一个记录运动路径的功能,当然需要有高德地图sdk的帮助,感谢高德地图。如下:首先把高德地图的sdk集成进项目,这个高德地图的开放平台网站已经说的很清楚了,我就不在这里多废话了。http://lbs.amap.com/api/android-sdk/summary/原创 2017-05-11 15:46:50 · 1837 阅读 · 8 评论 -
HelloChart框架动态加载数据
一个动态加载数据的图表,首次进入加载20条,并且视图显示在最右边,然后滑动到最左边的时候会再动态加载20条数据原创 2017-06-21 10:48:47 · 2944 阅读 · 1 评论 -
升级到android studio 3.0版本的跳坑手册
随着android studio 3.0稳定版的发布,广大开发者都开始尝鲜了,但是尝试新事物是要付出代价的。以下是我掉过的坑,发出来希望能令大家快速跳坑,以便更快用上新版AS出现错误如下Error:All flavors must now belong to a named flavor dimension. Learn more at https://d.android.com原创 2018-01-25 15:57:24 · 567 阅读 · 0 评论 -
Bmob后端云——Android再也不担心没有后台了
虽然说团队精神不可无,但是有时候想搞个简单的APP还需要欠后台一个人情,而且人家也不一定有空,特别麻烦。难道Android开发就是这么局限么?脱离了后台Android就只能自己写来玩玩本地的功能吗?答案肯定是否定的,BaaS(后端即服务:Backend as a Service)公司为移动应用开发者提供整合云后端的边界服务。这里面的一个代表就是Bmob,当然BAT还有亚马逊 ,都有这类产品,这里我...原创 2018-03-20 16:30:44 · 8887 阅读 · 0 评论 -
全方位Android优化APP启动速度的
最近进了一家外包公司,这代码就不吐槽了,接过外包公司的二手代码的应该都能理解。虽然说给我的评级不算低,2天熟悉代码,上来就一大波需求。好吧,微笑面对吧,毕竟这对我们程序猿来说在正常不过了。想想也是,比某公司要求手机主题要根据手机壳来变颜色正常得多。主要有三个方面会影响到app的启动速度, 原因一:启动页没有设置带背景的主题style.xml----><style na...原创 2018-11-08 17:06:49 · 555 阅读 · 0 评论 -
如何使用github上的android开源项目
我就以PullToRefresh为例,从头开始说吧。下载zip,解压到桌面打开eclipse,File-Import-Existing Android Code Into Workspace选中library文件,导入到eclipse中打开此library,右键library,properties-Android-Library-勾选Is Library打开你的程序后,右键原创 2014-09-18 15:49:51 · 1711 阅读 · 1 评论