gongmingqm10

Life is a journey, not a destination

如何上传 AAR 到 Jcenter

| Comments

自我进入到代码这个行业开始,就有前辈早早告诉我要积极活跃在开源社区,于是认识了 github, 然后也见识到了开源社区的魅力之处。看到大神们都会积极贡献自己的开源仓库,自己也被这种开源精神感动到了。过程中我也尝试写过一些小框架,但是发布到 jcenter 上,所以知名度大大降低。

相比于几年前,现在直接拷贝源代码到自己工程中的做法越来越少了。得益于 Android 使用 Gradle 管理依赖,更多的人选择将开源仓库发布到 jcenter 中,然后被更多的人使用。今天我们将尝试从零开始,一步步上传自己的应用到 Jcenter,然后优雅的通过 gradle compile 'x.y.z:a:0.0.1' 引用。

国内项目三月记

| Comments

意外的加入了国内项目,一待就是三个多月。之前常驻国外项目,一下子跳转到国内项目,对比还是很明显的。由于工作环境的限制,我们只得常驻客户现场 (暂称为A厂)。工作内容是在一个遗留Android App上继续开发,时间紧任务重,整个团队一起努力,项目最后还是获得了不错的成绩。过程中对于当前的工作也有了一点点心得体会:

关于烂代码

现状

项目前后经手过两三个团队,经历过两三年。看到代码的一刻,整个人都惊呆了,深度超过10层的逻辑嵌套,超过 1500 行的 Activity 文件,重复代码片段可以重复到10多处,莫名其妙的非空判断,随处可见的私吞Exception,哭笑不得的代码注释,从来不敢删除的注释代码(约30%)……

Know More About Android Inflater.inflate()

| Comments

在 Android 开发中,有很多看起来 “约定俗成” 的代码,有时候不妨停下来想一想深层次的含义。最近我在给 Fragment 填充布局时,写到一句熟悉的代码:

1
2
3
4
5
6
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.activity_main, container, false);
    return view;
}

我又一次陷入了思索,其中的第三个参数 false 到底是什么意思,此处能不能变为 true

ButterKnife Principle

| Comments

ButterKnife 原理

最近在研究 Java 中的 Annotation,初衷是先了解注解,然后再了解下 Android 开发中常用框架的原理。经历的 Android 项目中,使用注解比较多的是:ButterKnife, Roboguice, Dagger 。ButterKnife 主要是 View Binding, 而 Roboguice 和 Dagger 则主要是做 DI(Dependency Injection)。本文主要研究 ButterKnife 的原理。

开始之前,还是应该向 ButterKnife 的作者 Jake Wharton 大神以及开源社区致敬。

张家界所见

| Comments

张家界

计划了许久的旅行在四月份如期进行了,由于时间原因,这次的旅行并没有女生的参与。只是三个纯爷们的一次“放空”。上次的旅行还是14年大学毕业那会儿,掐指算来,两年一次的旅行似乎也并不过分。于是我们心安理得的去了。我们的主要游览地是张家界森林公园,返程特地路过湖南,体验下湖南的美食。

旅行社的利益链

我们每次都是想做计划的,但是对于张家界这种景点诸多的地方,我们刚开始的计划似乎不奏效了。所以三个人都是糊里糊涂的去了张家界。

对于旅行社,一开始我们甚至是拒绝的,所以我们一开始就没有在网站上提前报团,因为我们希望来一场轰轰烈烈的自由行。然而等我们到达张家界,走进汽车站的那一刻,我们注定要被旅行社牵着鼻子走。

App 本地化解决方案

| Comments

前言

“本地化” 这个词对大家而言并不陌生,文艺点的解释大概就是 “入乡随俗” 吧。当然我们这里的本地化主要指的软件产品的本地化。对于某个国外应用,如果需要投放到中国市场,需要注意哪些问题呢?本文主要从开发的视角来探讨应用本地化的问题。

再见 2015, 你好 2016

| Comments

前天刚完成公司的 Annual Review,通过 Annual Review 也回顾了自己 2015 年工作中的所有事情。我并不是个擅长书写的人,于是我也很担心写着写着就跑题了。但是还是想总结一些过去的一年,当作回忆吧。

工作

2015年的工作上还是过得比较精彩的,至少比2014年精彩。2015年算做我在公司的第二个年头,但是在武汉这个年轻的集体里面,我们这一届俨然也成为了公司的“老人”。老人就应该有老人的作风,比如带新人,比如承担办公司的一些事情,比如逐渐在项目中承担重要角色,也比如深化自己的知识。

从工作上来看,今年前后经历了三四个项目,我在项目中的角色都是 Android 开发。难得我几年的 Android 开发经验终于还是没有荒废,似乎还真派上了点用场。不过真心的,和以前相比,虽然在 TW 并没有太多的 Mobile 项目机会,但是那些少量的机会如果抓住了,的确可以使人收获颇丰。以前比较偏使用,现在为了能够给别人讲清楚,只好去了解事情的本质。于是开始慢慢习惯通过源码、资料等接触事务的本质,并做相应的总结分享。

Android 转屏那些事儿

| Comments

在 Android 开发或面试过程中,屏幕旋转是一个容易让人忽视的知识点。在我之前经历的项目中,App 通常是为竖屏状态设置的,所以通常我们会对每个页面都设置竖屏方向,这时候我们不需要考虑旋转屏问题。但是最近项目中,我们的 App 是为平板设计的,而横竖屏旋转是属于客户的一个需求,当然平板上横竖屏的确比较常用。所以就借此机会研究了下 Android 横竖屏问题。

Android 横竖屏

Android 新手成长计划

| Comments

Android starter

最近在公司里开始遇到了新人培养的问题,新人被 assign 到 Android 项目上,为了让他能够很快有所产出,于是我们得思考怎么样快速锻炼一个新人并让他对 Android 开发产生兴趣并持续做下去呢?当然也会有一时兴起的同事会想着学习 Android,Android 入门门槛不高,但是要想真正的熟练驾驭,确实是一件道阻且长的事情,需要付出额外的努力。

Android Adapter notifyDataSetChanged Not Working

| Comments

刚开发 Android 开发时,总是遇到一个看似很简单的问题 “Android Adapter notifyDataSetChanegd 不生效”,而每次解决这个问题的方法总是简单粗暴,直接了当。大概是以前的时候做事以结果导向,所以对于这些奇怪的问题也总是没有深究。刚好最近在项目中再次遇到了这个问题,决心深究一下。

notifyDataSetChanged not working