Gradle Compile Exclude
Android兼容库从24.2.0开始,对support-v4做了分库处理,原有的support-v4库拆分成为了support-compat、support-core-ui、support-fragment等库,本着稳定的原则,一直到25.0.0才开始在项目中升级support-v4库,将原有的support-v4替换为support-core-ui(其实,项目中只用到了ViewPager,SwipeRefreshLayout而已)以减少apk体积。然而问题来了,编译时出错,提示存在重复的类库。为保证support库版本一致,我还统一定义并使用了各模块的support版本变量,使用gradle dependencies
查看依赖的时候,发现有个第三方库依赖于于support-v4:23.0.0。结果导致编译不通过。google了一把,发现gradle complie竟然还可以传参数。来exclude某些库。
Fragment加载WebView
做Android 5年多了,第一次在Fragment中使用WebView,先将Activity中的代码复制过来改改,没有想到,竟然无法正常显示,而是打开手机浏览器渲染WebView,返回后,Fragment一片空白。这还能忍受?Google一把,说是要继承WebViewFragment,但是一旦继承,就破坏了我的框架结构。然后看了下WebViewFragment的源码,并不复杂。所以就将相关的源码合并到现有的fragment中,本以为可以妥妥地解决问题,结果还是那样。最后在stackoverflow上解决了终极解决办法,那就是需要设置特殊的WebViewClient。
private class H5WebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView webView, String s) {
webView.loadUrl(s);
// 一定要return true,不然就会使用浏览器打开
return true;
}
}
Android ADB连接海马玩模拟器
使用海马玩模拟器来调试Android还是挺方便的。最近因为真机连接不稳定,又想到了海马玩,不知道怎么回事,竟然运行不了模拟器了,只好下载了一个新版本,然后重新安装。安装完毕之后,竟然找不到devices。我记得,以前可是好好的呢。搜索了一下。说是要手动连接
使用Travis-CI构建Android应用
简介
注册Travis-CI都N长时间了,但是一直没有使用它来构建。今天先使用它构建了两个小的node.js项目,还算顺序,然后使用它来构建QuickAF,没有想到竟然是一条如此艰辛的路!特地将构建过程记录如下。
使用git打包修改的文件
使用git archive可以将传入的文件列表打包为一个zip档案。对于一些大系统,如果只是修复bug,可以做到热替换的话(比如php,js等解释型语言),可以使用此命令将修改的文件添加到zip档案,以提交局方升级。
Git删除受管控的文件
在提交代码时,有许多的初学者甚至是老程序员也会犯一个错误,那就是把一些不应该提交到源代码仓库的文件也提交到仓库,比如编译后的输出bin/目录,本地工程的一些设置文件如.idea,.settings。如果一旦提交到远程仓库,那么还将影响到团队中的其他成员。每次更新的时候,都会将别人的设置更新下来,可能会导致编译不通过等诸多问题。一旦这些文件受git管控,那么想删掉它就麻烦了。如果本地删除,再commit和push,那么其他成员更新代码的时候,他本地的也会被删除。对于编译输出的文件还好,再编译一次就可以。如果是环境设置类的文件,那么对方就惨了。会导致许多莫名的错误。