<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[专注Android系统]]></title><description><![CDATA[分享工作中的心得]]></description><link>https://blog.youkuaiyun.com/poping888</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; poping888]]></copyright><item><title><![CDATA[Android Studio编译时报错：Expecting a top level declaration]]></title><link>https://blog.youkuaiyun.com/poping888/article/details/142066026</link><guid>https://blog.youkuaiyun.com/poping888/article/details/142066026</guid><author>poping888</author><pubDate>Mon, 09 Sep 2024 18:31:30 +0800</pubDate><description><![CDATA[也就是代码没问题，不要乱动代码，这时要排除电脑里是不是有加密软件，因为一般企业里面都会有代码加密，我们公司就有，然后我看了一下加密软件，显示脱机状态，我登录之后，变成联机了，然后再把代码删除，重新clone一份，编译后就正常了。我们公司的加密软件脱机状态只有72小时内可以查看代码，否则就会强制加密，这时候很多正常的代码都会无缘无故出错，更重异常就冒出来了，所以大家出现这个问题就检查一下是不是有特殊的软件会干扰代码。查了一圈办法都不管用，后来通过下面的方法解决了。]]></description><category></category></item><item><title><![CDATA[RecyclerView嵌套RecyclerView,上下滑动的时候会出现item数据以及view的显示异常问题]]></title><link>https://blog.youkuaiyun.com/poping888/article/details/141683358</link><guid>https://blog.youkuaiyun.com/poping888/article/details/141683358</guid><author>poping888</author><pubDate>Thu, 29 Aug 2024 17:05:00 +0800</pubDate><description><![CDATA[在Adapter中重写该方法即可解决问题。]]></description><category></category></item><item><title><![CDATA[Gerrit push报错（change http://gerrit.xxxx.com:80/c/xxx/apps/xxx/+/79605 closed）]]></title><link>https://blog.youkuaiyun.com/poping888/article/details/124717006</link><guid>https://blog.youkuaiyun.com/poping888/article/details/124717006</guid><author>poping888</author><pubDate>Thu, 12 May 2022 09:09:30 +0800</pubDate><description><![CDATA[$ git push origin HEAD:refs/for/p/gkui/g/22/r/dev_530
Enumerating objects: 129, done.
Counting objects: 100% (129/129), done.
Delta compression using up to 8 threads
Compressing objects: 100% (93/93), done.
Writing objects: 100% (101/101), 439.42 KiB | 1..]]></description><category></category></item><item><title><![CDATA[Gerrit报错：Permission denied (publickey)]]></title><link>https://blog.youkuaiyun.com/poping888/article/details/123812262</link><guid>https://blog.youkuaiyun.com/poping888/article/details/123812262</guid><author>poping888</author><pubDate>Tue, 29 Mar 2022 09:39:56 +0800</pubDate><description><![CDATA[在使用Gerrit pull代码的时候，你会发现报错，错误信息大概是：Permission denied (publickey)。

是由于OpenSSH从8.8版本由于安全原因开始弃用了rsa加密的密钥，因为OpenSSH认为rsa破解成本已经低于5万美元，所以觉得成本太小了，有风险就给禁用了。

你可以通过命令：ssh -v [git服务器]

去查看Gerrit服务器的OpenSSH的版本号，如果≥8.8，就可以用这个方法。



解决办法：进入本机 .ssh目录，在下面新建一个config文件，不带]]></description><category></category></item><item><title><![CDATA[SourceInsight查看Android源码]]></title><link>https://blog.youkuaiyun.com/poping888/article/details/122646569</link><guid>https://blog.youkuaiyun.com/poping888/article/details/122646569</guid><author>poping888</author><pubDate>Sun, 23 Jan 2022 01:04:04 +0800</pubDate><description><![CDATA[因为SI只能在Windows里面打开，所以我用的是3.5版本，4.0的我用了，注册码很难找，我就卸载了。3.5的注册码网上一大堆，而且各个好使，我也想买一个注册码，无奈好几千美刀，实在有点吃不消。

安装好SI，把Android代码下载好，建一个project，网上一大堆文章，自己搜一下吧。然后就可以用了，我一般用右侧的搜索文件框用的最多，再一个就是点击某个类，下面的窗口就可以自动打开这个类的实现，查看很方便。

唯一缺点就是我的SI太卡了，可能跟我的电脑有关，我的是ThinkPad，很老的电脑了，还是机械]]></description><category></category></item><item><title><![CDATA[VSCode查看Android源码，从入门到放弃]]></title><link>https://blog.youkuaiyun.com/poping888/article/details/122646507</link><guid>https://blog.youkuaiyun.com/poping888/article/details/122646507</guid><author>poping888</author><pubDate>Sun, 23 Jan 2022 00:54:34 +0800</pubDate><description><![CDATA[VSCode查看Android源码比较简单，首先下载Android源码，我用的Mac，所以比较方便，对了repo在homebrew里面就有，直接brew install repo就可以，但是版本比官方的略低，但是可以用，只是有警告。

下载之后直接用VSCode加载文件夹即可，直接可以在目录里面打开文件，对于非jdk的类能定位到文件位置，但是jdk的源码无法定位，显示的是.class文件反编译出来的代码， 没有阅读的价值。

后来我又尝试把sdk/source里面的源码copy到Android源码路径下，还]]></description><category></category></item><item><title><![CDATA[Android Studio查看Android源码]]></title><link>https://blog.youkuaiyun.com/poping888/article/details/122593397</link><guid>https://blog.youkuaiyun.com/poping888/article/details/122593397</guid><author>poping888</author><pubDate>Thu, 20 Jan 2022 01:56:21 +0800</pubDate><description><![CDATA[最近在折腾面试，然后就有些组件的原理需要看源码，之前也弄过，都是用的Source Insight在win10里面搞的，今天试了一下Mac，源码60G，我这个版本是Android 11，目前是最新版的代码。

用AS看源码首先要构建项目配置文件，就是ipr和iml工具，用到Android源码里面的idegen工具，但是你用官方的mmm命令方法会报错，说文件格式不对，本来是可以用mmm命令直接生成的，但是Mac的文件系统跟官方要求的有问题，所以就放弃了，有想试试的同学可以执行下面的命令。


cd ～/aosp]]></description><category></category></item><item><title><![CDATA[升级到Mac 12+版本后，终端git命令报错]]></title><link>https://blog.youkuaiyun.com/poping888/article/details/122407718</link><guid>https://blog.youkuaiyun.com/poping888/article/details/122407718</guid><author>poping888</author><pubDate>Mon, 10 Jan 2022 12:29:49 +0800</pubDate><description><![CDATA[最近在mac上用git clone命令的时候，git报错，大概意思就是macOS版本有问题，git的路径找不到了。然后就去网上搜，有几个办法：

1、用brew doctor命令看一下是哪个组件没成功。我试了一下，发现brew这个命令也找不到了，所以就不行（无效）

2、用brew update-reset命令，有反应，但提示我必须装git，否则没法检测。（无效）

3、找到了v2ex上面的帖子（有效）

升级到 macOS12 beta 后， brew update 报错， unknown or uns.]]></description><category></category></item><item><title><![CDATA[研发人员要有管理能力]]></title><link>https://blog.youkuaiyun.com/poping888/article/details/107232444</link><guid>https://blog.youkuaiyun.com/poping888/article/details/107232444</guid><author>poping888</author><pubDate>Thu, 09 Jul 2020 17:43:56 +0800</pubDate><description><![CDATA[这次我们聊聊管理能力。

我个人理解管理能力主要是行政管理和业务管理。

行政管理

这块我理解为组员的动员能力、沟通能力、职业规划、考核、培训等。

动员能力

主要分成被动式和主动式。被动式就是挤牙膏，要对组员进行规章制度的建设和培训，明确什么情况下需要员工配合，也就是奖惩措施。主动式就是要明确目标，然后根据目标制定计划，明确目前的状态，然后一步一步让员工自己做，而管理人员负责check关键节点。

这样一段时间后，整个管理人员的动员能力和组员的能动性就大大提升了，做任何事都不需要扯嗓子喊了。具体有很多]]></description><category></category></item><item><title><![CDATA[我是如何做研发人员内部培训的]]></title><link>https://blog.youkuaiyun.com/poping888/article/details/107133670</link><guid>https://blog.youkuaiyun.com/poping888/article/details/107133670</guid><author>poping888</author><pubDate>Sun, 05 Jul 2020 01:58:27 +0800</pubDate><description><![CDATA[这次讲讲内部培训

培训是对新员工或老员工一种能力提升，比如从技术层面，软实力层面的全方位培训，使团队整体的战斗力提升。也会关系到能否建立员工归属感的关键环节。比如我之前给团队成员培训，就包括了各种规范（写码、邮件、文档等）、制度、每周分享、caseStudy学习等等，以后有时间再单独分享。总之，培训是研发组长很重要的职能之一，也是组员是否有持续战斗力的关键。

首先培训的时候你要确定培训的对象，那么一般我们研发人员的内部培训就只有两种，新员工和老员工，还有一种是对外培训，包括软件使用培训等等，这块我们后面]]></description><category></category></item><item><title><![CDATA[我是如何招聘新人的]]></title><link>https://blog.youkuaiyun.com/poping888/article/details/107133630</link><guid>https://blog.youkuaiyun.com/poping888/article/details/107133630</guid><author>poping888</author><pubDate>Sun, 05 Jul 2020 01:55:21 +0800</pubDate><description><![CDATA[这次我们聊聊招聘新人这个话题。

关于团队里面获取HC的问题，基本不由我们控制，我们只能提申请，但是批不批看运气了。

接下来说的是拿到HC后，我们应该怎么做。



筛简历

我们一般海选简历都是从Boss直聘和拉钩上面上面找，这里补充一下背景知识，一般是研发人员和HR一起筛选，也有的是HR初筛，然后发到研发这边，根据应聘人员的技能再次筛选一次。如果合格就会收到电话面试邀约。

Boss直聘上面与应聘者可以实时交流，这个功能比较赞，但是非付费用户，需要一个一个应聘者聊天，这个效率较低，一般我们都会跟部门.]]></description><category></category></item><item><title><![CDATA[你知道研发的文档有多少种吗？]]></title><link>https://blog.youkuaiyun.com/poping888/article/details/107133598</link><guid>https://blog.youkuaiyun.com/poping888/article/details/107133598</guid><author>poping888</author><pubDate>Sun, 05 Jul 2020 01:36:48 +0800</pubDate><description><![CDATA[这篇继续讲文档能力。

文档能力是研发人员必备技能，有时候涉及到的文字沟通，比如邮件沟通等，都需要文档加以辅助说明，那么这时就需要好好设计文档的内容了。有些同学文档内容写的很随意，一眼看上去不知道在讲什么。这时就要用到文档的结构了。你设计的结构要通俗易懂，条理清晰。

但是不同的文档，结构也是不一样的，从整体上区分，分为：



编码规范

上次我们已经展开聊了，主要就是写代码时与团队之间的一些规章制度，这样可以方便团队之间的沟通，减少沟通成本。



日报周报

几乎每天都会接触到，主要是汇报当日工作..]]></description><category></category></item><item><title><![CDATA[研发的写码能力首先要做到代码规范]]></title><link>https://blog.youkuaiyun.com/poping888/article/details/107133591</link><guid>https://blog.youkuaiyun.com/poping888/article/details/107133591</guid><author>poping888</author><pubDate>Sun, 05 Jul 2020 01:30:25 +0800</pubDate><description><![CDATA[今天展开来说一个，就是写码能力。

说到写码能力，首先要具备的就是代码规范，为什么说代码规范重要呢？因为我们目前市场提供的研发职位，90%都是基于团队作战的，这就要求团队成员间需要有高效的沟通方式，那么代码规范就是其中之一。大家提前商量好一套认可的标准，照着标准去执行，可以大大减少不必要的沟通成本。

久而久之业内形成了很多优质的代码规范标准最佳实践：

Google代码标准：英文版

Google的代码标准特点就是权威、应用广、大厂备书。我这里提供的是英文原版，我去搜了一下，网上对个别语言有中文翻译，但是]]></description><category></category></item><item><title><![CDATA[互联网行业研发组长的职责有哪些？]]></title><link>https://blog.youkuaiyun.com/poping888/article/details/107133587</link><guid>https://blog.youkuaiyun.com/poping888/article/details/107133587</guid><author>poping888</author><pubDate>Sun, 05 Jul 2020 01:28:57 +0800</pubDate><description><![CDATA[今天分享点职场的话题，笔者也在互联网研发岗位干过几年，实践过程中大概了解了其中的职责任务。研发组长主要指的是具备P7职级的组长。平时在招聘网站很少会看到组长的职责，就算说，招聘HR也说不到点子上，搞得很多人会很懵，到底研发组长要掌握哪些技能呢？今天就来简单聊一下。

研发组长的职责主要分几块

研发任务

研发基本是组长的必备技能了，这块又包含了写码能力和文档能力。

写码能力是最基本的技能，比如面试时经常考的算法，架构，计算机基础知识，职位专业知识（比如前端、后端、Android、iOS这些）等等。

文]]></description><category></category></item><item><title><![CDATA[时间管理]]></title><link>https://blog.youkuaiyun.com/poping888/article/details/107133538</link><guid>https://blog.youkuaiyun.com/poping888/article/details/107133538</guid><author>poping888</author><pubDate>Sun, 05 Jul 2020 01:27:01 +0800</pubDate><description><![CDATA[你一定接触过很多时间管理的方法，有的说先做简单的事再做复杂的事。有的说只做重要的事，别的没有必要做。有的说，最优先的是重要但不紧急的那些事情。那么，哪一种时间管理的方法是最好的呢？总的来说，是一个坏消息，一个好消息。坏消息是，并不存在适用所有情况的最好的时间管理方法。但是，好消息是，如果设定一些条件，那么可以用数学证明，找到适合这类情况的最好的时间管理方法。我来给你转述一下。

先来说说，如果你面临的是这样的情况，你有几个任务，所有的任务都是急事，也就是说，每个任务都有完成截止日期，怎么做呢？

第一个办法]]></description><category></category></item><item><title><![CDATA[Android UI线程时间多少毫秒才不会卡顿]]></title><link>https://blog.youkuaiyun.com/poping888/article/details/50263305</link><guid>https://blog.youkuaiyun.com/poping888/article/details/50263305</guid><author>poping888</author><pubDate>Fri, 11 Dec 2015 14:38:15 +0800</pubDate><description><![CDATA[人眼的原因, 1秒24帧的动画才能感到顺畅. 所以每帧的时间大概有41ms多一点点(1000ms/24). 但是但是, 注意了, 这41ms不是全都留给你Java代码, 而是所有java native 屏幕等等的,最后留给我们用java级别发挥的时间, 只有16~17ms了.所以,当你优化视觉效果时,留意UI线程的时间,
 超过16ms, 就需要处理了.]]></description><category></category></item><item><title><![CDATA[ListView效果优化]]></title><link>https://blog.youkuaiyun.com/poping888/article/details/45423343</link><guid>https://blog.youkuaiyun.com/poping888/article/details/45423343</guid><author>poping888</author><pubDate>Fri, 01 May 2015 23:11:27 +0800</pubDate><description><![CDATA[去除ListView滑到顶部和底部时边缘的黑色阴影：

android:fadingEdge="none"
----------------------------------------------------

去除拖动时默认的黑色背景：

android:cacheColorHint="#00000000"
或
listView.setCacheColorHint(Colo]]></description><category></category></item><item><title><![CDATA[获取安卓手机的唯一标识]]></title><link>https://blog.youkuaiyun.com/poping888/article/details/45338551</link><guid>https://blog.youkuaiyun.com/poping888/article/details/45338551</guid><author>poping888</author><pubDate>Tue, 28 Apr 2015 16:50:54 +0800</pubDate><description><![CDATA[TelephonyManager _TelephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
if (_TelephonyManager.getDeviceId() != null) {
mIMEI = _TelephonyManager.getDeviceId();
}
if (_Tele]]></description><category></category></item><item><title><![CDATA[ECONNRESET (Connection reset by peer) on a server with authentication解决方案]]></title><link>https://blog.youkuaiyun.com/poping888/article/details/45337463</link><guid>https://blog.youkuaiyun.com/poping888/article/details/45337463</guid><author>poping888</author><pubDate>Tue, 28 Apr 2015 16:16:03 +0800</pubDate><description><![CDATA[试试以下解决方案,另:国内论坛的解决方案就不要看了,无法解决

http://stackoverflow.com/questions/24104746/econnreset-connection-reset-by-peer-on-a-server-with-authentication#]]></description><category></category></item><item><title><![CDATA[float型float f=3.4是否正确?]]></title><link>https://blog.youkuaiyun.com/poping888/article/details/4356624</link><guid>https://blog.youkuaiyun.com/poping888/article/details/4356624</guid><author>poping888</author><pubDate>Fri, 17 Jul 2009 13:37:00 +0800</pubDate><description><![CDATA[不正确。精度不准确,应该用强制类型转换，如下所示：float f=(float)3.4 或float f = 3.4f 在java里面，没小数点的默认是int,有小数点的默认是double; int转成long系统自动作没有问题，因为后者精度更高 double转成float就不能自动做了，所以后面的加上个f]]></description><category></category></item></channel></rss>