Android
ameryzhu
这个作者很懒,什么都没留下…
展开
-
gradle全局设置阿里云仓库
以前总是手动设置,今天在看gradle设置init脚本的时候,看到一个讲可以设置一个gradle启动初试执行脚本,于是想到是否可以在gradle每次初始化时,自动去替换工程中的maven仓库位置,指向阿里云。不然每次run都要开代理。https://www.cnblogs.com/langtianya/p/5220212.html这样我在.gradle下面建一个init.d的文件夹,然后放个build.gradle文件。allprojects { repositories {原创 2020-07-16 22:50:21 · 6800 阅读 · 0 评论 -
Android工程通过Aar远端集成maven仓库中的flutter产物
1.搭建nexus maven仓库2.搭建jenkins3.修改flutter tool中的源码,改变flutter build aar 执行的代码最开始项目是通过源码来依赖flutter工程的,这样,原生的开发人员,避免不了要不断地拉flutter代码,项目复杂后经常容易报错,而非flutter的开发人员调试起来又感到茫然,而且降低工作效率。于是想到把flutter的通过aar集成到原生中。1.搭建nexus maven仓库最好搭建一台ubuntu的机器,这样服务比较稳定。.原创 2020-05-12 16:03:23 · 606 阅读 · 0 评论 -
scrcpy无法启动的问题
问题:提示adb连接失败解决办法:调用scrcpy自带的adb tool,否则会执行ubuntu自带的adb。scrcpy.adb kill-serverscrcpy.adb start-serverscrcpy.adb devicesscrcpy.adb --version会看到和Ubuntu 环境变量中的不一样。如果用系统环境变量中的adb去连端上的server,就会出现adb client(xx) doesn't match server(xx)的错误。...原创 2020-05-09 12:35:16 · 19068 阅读 · 0 评论 -
ADB server version (36) doesn't match this client (41)
1.adb --version查看当前adb的版本2.先where adb可以查看有几个路径提供了adb,一些模拟器比如mumu player之类的会有提供,但他们的版本可能比较老。就会导致client的version和adb server的version不一致。3.到环境变量中把老的adb路径去掉即可。...原创 2019-11-25 15:37:38 · 1608 阅读 · 0 评论 -
RxJava 中observer链是如何形成的?
接着上一篇博客继续分析。Observable.create(new ObservableOnSubscribe<String>() { @Override public void subscribe(ObservableEmitter<String> emitter) throws Exception { ...原创 2018-11-10 16:28:45 · 883 阅读 · 1 评论 -
RxJava 中的observable链是怎样形成的?
要理解RxJava框架,就需要理清楚其链路是怎样形成的。先看一段简单的代码:Observable.create(new ObservableOnSubscribe<String>() { @Override public void subscribe(ObservableEmitter<String> emitter) throws Exception...原创 2018-11-10 15:35:31 · 867 阅读 · 0 评论 -
lottie加载动画,第一次有延迟问题
lottie是airbnb推出的一个直接将AE工程转化为动画的工具。ae.project-->data.json-->LottieComposition-->Lottie动画之前做一个比较复杂的动画,花了两天时间都在画各种弧,计算运动轨迹等等。感觉我不是在编程,我是在算数学。上lottie的过程,花了半天时间调AE动画,因为设计师的电脑上装插件没装成功。所以AE转json文件的过...原创 2018-04-23 11:41:40 · 8545 阅读 · 1 评论 -
Mac环境Android 6.0虚拟机启动黑屏解决办法
到用户所在目录,进入.Android文件夹,该文件夹是隐藏文件夹,删除avd目录,再在模拟机管理器中重新添加新的模拟器。原创 2015-11-28 20:42:03 · 3703 阅读 · 0 评论 -
通过DexClassLoader动态加载代码
动态加载代码,会有多种需求,有的是APK过大,想缩小点;有的是部分代码需要灵活变动,例如视频站点的解析规则。奉上一个Demo,在这个demo中验证了从dexclassloader加载1.db2.,sharedpreference,3.webview,.4. so库,5.context,6.传入listener回调7.加载不同package下的类欢原创 2015-08-06 21:19:46 · 1276 阅读 · 0 评论 -
INSTALL_FAILED_ALREADY_EXISTS
安装时候碰到的一个问题:已经签名的包,重新通过adb install 会提示安装错误。提示:Failure [INSTALL_FAILED_ALREADY_EXISTS]为啥eclipse自己就可以不停滴覆盖重装呢?因为eclipse自动打包是debug的签名,而我打如果是release签名就会出现上面的报错。解决办法:adb install -radb install -r 这里的r原创 2015-01-12 18:03:47 · 22753 阅读 · 1 评论 -
RxJava 线程切换原理
RxJava的线程切换主要涉及到observeOn(),subscribeOn()我们来分析一下这两个方法是怎么做到切换的。observeOn()作用于上一个构造好的Observable实例,RxJava设计比较巧妙的地方是,把线程切换的操作也封装成了Observable放在Observable subscribe()方法和Observer onNext()执行链路中。先分析...原创 2018-11-10 18:08:31 · 617 阅读 · 0 评论 -
Received status code 500 from server: Internal Privoxy Error
发现原因是.gradle目录下的gradle.properties文件中包含了代理,导致公司内部maven库指向的地址找不到。在开启shadowsocks客户端,并在android studio中配置gradle指向某个代理地址后,gradleWrapper会走代理,如果此时要访问内部的maven仓库中的资源,可能会访问失败。如果此时只是关闭shadowsocks中的代理,.gradle目...原创 2018-12-07 18:30:39 · 3384 阅读 · 1 评论 -
Android AppHost源码挂载flutter,gradle sync失败,源码编译不过的常见排查手段:
每次切库,真是件痛苦的事情,一堆环境问题,特别是项目1.gradle sync失败windows: del /s /q *.iml,删除所有的.iml文件,然后删除AppHost,app等目录下里的.idea文件夹。2.Android宿主找不到flutter类检查AppHost中的app工程的build.gradle对flutter依赖是漏掉implementation pr...原创 2019-08-20 19:11:08 · 425 阅读 · 0 评论 -
flutter配置相关的bug
2019-07-23 11:35:07.367 11006-11006/? A/DEBUG: r0 00000000 r1 00002a8c r2 00000006 r3 000000082019-07-23 11:35:07.367 11006-11006/? A/DEBUG: r4 00002a8c r5 00002a8c r6 ffaae8fc ...原创 2019-07-23 11:41:06 · 891 阅读 · 0 评论 -
flutter 上手感悟
Android端flutter开发上手体会:调试效率有了质的提升。flutter上面很多东西比较新,按道理来说从接触dart,到开发出一个flutter页面比Android原生开发要慢很多的,但是很重要一点,flutter支持热重载,dart在debug与release模式下分别是JIT,AOT。开发模式下通过JIT模式,修改代码后,ctrl+s 保存一下,自动刷新到Android手机,1s...原创 2019-07-17 10:08:49 · 1303 阅读 · 1 评论 -
Android jrebel 空指针无法编译
jrebel是热部署的利器,项目中不知道谁升级了gradle版本,导致jrebel无法使用,Android界面开发效率大大降低。亲测将distributionUrl=https\://services.gradle.org/distributions/gradle-5.1.1-all.zip降到distributionUrl=https\://services.gradle.org/...原创 2019-06-13 17:09:12 · 370 阅读 · 0 评论 -
错误: cannot generate view binders java.lang.NullPointerException
被这个bug折磨了一整天。由于项目前期大量代码使用dataBinding写的,现在做组件化,拆分成了很多library module,部分界面代码放到了入到了library module中,问题是:死活也编译不过。问题原因:从源码分析,旧的dataBinding在生成java代码的时候,对于library工程中引用到的variable不会生成get方法,导致编译失败。解决方案...原创 2019-04-22 21:06:46 · 2306 阅读 · 1 评论 -
Android页面渲染时间定量统计
简介通过Hook系统API实现启动时长、生命周期、UI绘制时间的检测,达到定量分析Activity性能问题的目标。背景:随着项目功能越来越多,存在部分页面启动时长过长的问题。需要一套定量统计启动过程中各个流程耗时多少的方案。解决方案:利用对系统ActivityThread中Instrumentation、Handler等系统API的hook,实现自动检测activity ...原创 2019-03-22 14:49:22 · 5588 阅读 · 1 评论 -
DexarchiveMergerException
Error:java.lang.RuntimeException: java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: Unable to merge dexError:java.lang.RuntimeException: com.android.builder.dexing.De...原创 2019-03-11 18:05:29 · 545 阅读 · 0 评论 -
Manifest merger failed with multiple errors, see logs
点进去也没有具体的错误信息显示。这种情况下,就要增加--stacktrace来调试了。找到Error这一行。情况就一目了然了。引入的第三方sdk中的allowBackup属性冲突了。...原创 2019-03-13 21:51:31 · 23896 阅读 · 0 评论 -
关于android模拟器
对于调试较小的应用,adb到手机上安装可以很快,但对于较大size,比如50MB,push到手机安装可能就不是一个好的选择了。调试将耗费大量时间。This is unbearable.今天介绍几款android模拟器来boost你的开发效率。1.NoxPlayer本人安装体验了一下,界面简洁,清爽,Android开发者模式,root,都比较方便,没有定制化,没有广告,原生味道比较好。对...原创 2018-12-22 18:59:30 · 1858 阅读 · 0 评论 -
ndk no rule to make target
最近在开发的Android Wear App中,不少关键模块都调用到了算法,比如记步算法、睡眠算法。而这些算法都是用c++实现的,上层通过jni调用。这里用到了Android的NDK,以前的项目也有用过,例如vitamio的播放器,但没怎么自己编译.so的库。现在涉及到底层算法的修改,于是就涉及到了ndk相关的知识。ndk里有自己的make文件,Android.mk,不同于Makefile原创 2014-11-26 21:49:59 · 2606 阅读 · 0 评论 -
DDMS 中访问需要root权限文件的方法
root的教材此处省略,步骤如下:打开 cmd或者terminal输入 'adb shell'suchmod 777 /data /data/data /data/data/com.application.pacakage /data/data/com.application.pacakage/此时打开 DDMS发现原来无法展开的data目录现在可以展开原创 2014-10-29 16:20:47 · 2606 阅读 · 1 评论 -
Android Studio Gradle 增加对.so 文件的支持
最近在开发Android Wear 手表项目,官方给的Demo全都是gradle 项目。当然我也用eclipse配置了一个可行的环境。问题来了,eclipse,android studio 开发 android wear 哪家技术更强?目前的开发体验是studio更强。开发中碰到一个问题android studio在用gradle build wear app 的时候,不把.so文件打原创 2014-10-27 21:40:48 · 2236 阅读 · 0 评论 -
基于Volley框架的图片渐变显示alpha动画
增加一个自定义的View:import android.content.Context;import android.graphics.Bitmap;import android.graphics.drawable.BitmapDrawable;import android.graphics.drawable.ColorDrawable;import android.graphic原创 2013-11-05 18:32:11 · 1759 阅读 · 0 评论 -
Android Studio 不自动弹起代码提示功能解决办法 do not auto popup code completion
自从安装Android Studio后,更改了更新设置至Canary Channel,我也搭上了Google速度。每周一更新啊!Android系统不断的优化和更新,常常让我感叹。一直喜欢用最新的东西,执着于Geek精神,当然要用最新的Android Studio啊,是吧。升级后不自动弹起代码提醒功能了,而且变量也不标注颜色,简直是气死我了,Google了各种关键词,都没办法。于是猜想是原创 2013-11-03 16:00:01 · 6302 阅读 · 0 评论 -
Adapter Class Cast Exception Removing Footer View from ListView
又好久没写blog了,工作的时候,解决了一些问题,却又觉得时间紧,没空写。习惯需要坚持啊。今天在做ListView滚动自动加载的时候碰到了Adapter Class Cast Exception Removing Footer View from ListView 问题。感到很奇怪,怎么会出类型转换错误呢?以前用的时候怎么没碰到?我最开始在想是不是因为此时还没有给listvie原创 2013-10-24 20:10:07 · 1245 阅读 · 0 评论 -
eclipse解决Android Library Project jar包重复导致的问题
Android Studio部分情况下用起来还是有些不适应的地方,用eclipse熟练了,在赶项目进度的情况下还得重拾eclipse。下面是今天碰到的一个老问题。1.在导入Android Library工程文件的时候要把library一起拷贝到workspace中2.在导入的Android Library工程文件上右键,properties--->Java Build Path--->Or原创 2013-10-11 18:42:18 · 5423 阅读 · 0 评论 -
Android Studio的好处
在2013年Google IO大会的时候看到过Android Studio的一些介绍,于是下载下来用过的试了一试。第一次用,不管新建还是导入项目就会去下载gradle,网络又不好,各种翻墙代理,才用上了,但是没感觉到实际使用的好处,只是知道它的界面编辑功能优化了不少。其实我对新鲜东西都挺愿意尝试的,但是工具不稳定,平时公司里开发不敢拿来上正式的项目,而且很多快捷键和eclipse也不同,实在找不到原创 2013-09-25 21:18:20 · 2685 阅读 · 0 评论 -
Android 透明度百分比转换
Android中色值表示为ARGB,alpha表示透明度。想表示50%的黑色。两位的的alpha为16进制,则表示有2进制数八位,0-255。1)2^8*透明度2)-13)转2进制4)前四位,后四位 分别用16进制数表示。最后百分之50%的黑可以表示为,7F000000。方法可能很笨,欢迎拍砖。原创 2013-09-23 15:53:41 · 3912 阅读 · 0 评论 -
解决eclipse无法打开android-support-v4的源码
新版本的Adt加入了Android Private Libraries,这样在导入新的工程文件的时候,不需要手动来同add library to build path方法来添加android support v4的包。问题也出现了,按F3或者Ctrl+鼠标键在查看support包的源码时,总是无法打开源码,而右键属性中也想添加源码的关联也无用,因为在Java Build Path的Librar原创 2013-09-21 17:38:42 · 4458 阅读 · 0 评论 -
关于使用Logcat辅助理解复杂的类
在读Android源码的过程中,常常会碰到一些类中使用了极多的方法。让人束手无策,甚至沮丧。虽然读类的过程中都是先从构造方法读起,然后去读一个个的调用。但是对于一些有几百个方法的类,阅读起来时还是很痛苦,一个方法里往往关联了N多个变量,其它地方引入的类,还有方法嵌套地调用。后来一直想找个工具,希望能够自动生成uml时序图,这样看着容易理解一些。起初想试试Rational Rose,结果安装在6原创 2013-10-03 11:24:00 · 1146 阅读 · 0 评论 -
关于变量名前面加m的问题
为什么很多人写代码会在变量名前面加一个小写的m?上大学学C++那会儿就对这个问题感到很好奇。于是网上到处搜,有人说是member的意思。于是后来一直就这么认为。最近在读Android源码,发现很多系统变量命名时都加了m,而有的变量又没有加m,这是什么情况?于是Google了一把,“letter m before variable ”,第一条结果是来自stackoverflow的答案。原创 2013-10-02 15:46:59 · 17126 阅读 · 9 评论 -
解决SlidingMenu 侧滑与ViewPager冲突问题
由于使用了Github上的开源项目,开始以为需要自己在CustomViewAbove中改写OnInterceptTouchEvent(MotionEvent ev);参看了一下百度视频App,发现它在首页里的ViewPager控件在下拉后,只有上面部分可以响应左右滑动事件,下面的部分却不可以,于是我猜想它把上面部分写死了,先调用view.getHitRect(rect)来获得viewpager原创 2013-09-15 19:15:11 · 13294 阅读 · 12 评论 -
解决基于SlidingMenu的fragment切换后edittext无法获取焦点的问题
现象:在slidingmenu样式的主界面点击搜索框后,跳到新的fragment。新的fragment中有edittext搜索框,问题:调用requestFocus()后无法获取焦点,在Android系统3.0之前的机型出现无法输入的问题。无论怎么点击输入框,也无法激活,尽管可以看到输入光标在输入框上闪动。该问题为什么出现在3.0以下的机型。猜想:由于这些机型使用的是android-supor原创 2013-11-05 18:12:19 · 3745 阅读 · 0 评论 -
AsyncTask异常处理
在运行AsyncTask之前总是要做网络判断操作,还有超时操作等,没写一个AsyncTask都要重新写一遍很是烦人。于是做了个封装。/** * 封装了对异常的处理,不再需要给AsyncTask做各种网络状态以及结果为空的判断 * 需要实现doInBackgroundX(Params... params)和onPostExecuteX(Result result)方法。 * Creat原创 2013-11-06 02:34:58 · 2148 阅读 · 0 评论 -
实际用Handler的体会
1.关于构造Message对象Message 可以通过 new Message(),也可以通过handler.obtainMessage()。两种的区别,后者无需在内存中重新开辟空间,而是直接从消息队列池中取出。/** * Returns a new {@link android.os.Message Message} from the global message pool.原创 2013-11-23 11:46:39 · 1194 阅读 · 0 评论 -
cannot load supported formats intellij 解决办法
http://stackoverflow.com/questions/20797443/intellij-idea-subversion-checkout-errorhttp://stackoverflow.com/questions/2341134/command-line-svn-for-windowshttp://blog.jetbra原创 2014-04-21 20:11:19 · 12215 阅读 · 0 评论 -
intellij error updating changes svn解决办法
乌龟检出的svn版本为1.8,而1.8在IntelliJ 上跑起来貌似有问题,经过多次尝试,当Format改为1.7后,问题被解决。原创 2014-02-17 17:35:48 · 11939 阅读 · 1 评论 -
IntelliJ 同时导入android项目和android library方法
先创建一个Empty Project,再分别导入Module。IntelliJ在同一个工作窗口里只可以显示一个Project,而Module却可以有多个,和eclipse有一些区别。原创 2014-02-17 11:16:39 · 6324 阅读 · 0 评论