学Android源码,需要翻墙访问codes.google.com,获取源码仓库。
但在终端下正常使用git命令无法翻墙,因此需要开启git的代理模式。在使用下面的命令之前,确保你拥有代理服务器。关于代理服务器,可以看这篇博文:OS X使用AgentX搭建代理
学Android源码,需要翻墙访问codes.google.com,获取源码仓库。
但在终端下正常使用git命令无法翻墙,因此需要开启git的代理模式。在使用下面的命令之前,确保你拥有代理服务器。关于代理服务器,可以看这篇博文:OS X使用AgentX搭建代理
我的Android开发环境是在OS X搭建的,本来想按照官网上的配置在Mac上编译Android,但是因为Xcode版本很高,编译Android 4.1.1要求Xcode是4.x版本,但是我的是6.4的,所以总是出现奇怪的错误,比如xxx行有问题等等。所以,果断安装Ubuntu虚拟机。
具体的步骤不再赘述,官网上有,地址是:编译、运行Android。要翻墙,可以看我的博文:只要按照官网的步骤一步步来,编译基本不会遇到问题。我在编译过程中只遇到了两个问题,下面会详细描述。
有些地方需要注意,仔细看官网的描述。
1.要编译2.3及以后的版本,就必须使用64位系统。
2.官网上某些要求并非是必须的,比如我没有配置Initialing Build Environment的Using a separate output directory这一节,也没有配置Building and Running的Using Cache这一节,按照需求进行选择。
要安装Ubuntu虚拟机,使用的是VMware Fusion,主机是OS 10.10。
1.确定在启动Ubuntu客户机之前,对这个客户机的共享目录进行了设置,允许共享目录,并且添加了主机中的某个目录作为共享目录。
2.确定安装了make, gcc, libstdc++, g++这些编译软件会用到的包。可以使用下面的命令安装:
apt-get install xxx #把xxx换成相应的包名就行。
1.启动Ubuntu客户机。从菜单栏上依次点击Virtual Machine -> Install VMware Tools。
2.等一下会(十几秒),VMware Tools的CD自动挂载。打开CD所在的目录。将文件名类似为VMwareTools.x.x.x-xxxx.tar.gz的压缩包复制到桌面,
右键单击它,选择解压缩到当前目录(Extract to here)。然后桌面就会出现名为vmware-tools-distrib的新目录。
3.打开终端,进入到桌面的新目录中:
cd Desktop/``vmware-tools-distrib
4.在终端中继续输入下面的命令,来安装VMware Tools:
sudo ./vmware-install.pl -d
5.重新启动Ubuntu客户机。
6.在/mnt/hgfs/目录下,你的共享目录就出现了。
买了SSLedge服务之后,配合Chrome及其插件,能够非常快速方便的浏览国外网站,而且配合GoAgentX,也可以用Safari访问国外资源,但终端下的应用还是无法连接国外服务器。比如,想要使用curl获取Android的源代码,就无法访问Google。无奈之下,只能在网上搜查如何使用目前的SSLedge+GoAgentX搭建全局代理,好让没有代理功能的app(比如终端)也可以通过代理访问国外资源。
1.已经有SSLedge服务,并且SSLedge服务器能支持SOCK模式。
2.下载了GoAgentX。
3.Mac上已经安装了Homebrew,可以查阅参考文献1。
1.打开GoAgentX,创建一个新的SSLedge profile。
MobileBackups,即OS X上TimeMachine的本地备份。会占用非常大得空间。
我在查看硬盘使用情况的时候,发现目录/Volumes/MobileBackups占用了20多G空间,这是TimeMachine用来做备份的。
根据官网的介绍,在OS 10.7及以后的版本中,当你没有插入其他硬盘作为TimeMachine的备份硬盘时,TimeMachine会自动创建/Volumes/MobileBackups用作备份。因为占用的空间太大了,所以不得不禁止TimeMachine的这种行为。
在终端下执行命令:
sudo tmutil disablelocal
就可以关闭本地备份了。不过记得要及时的使用TimeMachine备份资料。
1.英文文献1
2.英文文献2
之前写过一篇关于在Android Studio上做单元测试的文章,转载的CSDN上得一篇博文。现在更新一下这个方法。最近在看《第一行代码——Android》这本书,书里提到的用Eclipse为项目做单元测试的方法在AS1.2-AS1.3上不适用,所以在查阅了Android官网之后,找到了新方法。
1.打开要测试的AS项目。
2.假如要对下面的这个类中的addActivity方法做单元测试:
public class ActivityCollector {
public static List<Activity> activities = new ArrayList<Activity>();
public static void addActivity(Activity activity) {
activities.add(activity);
}
public static void removeActivity(Activity activity) {
activities.remove(activity);
}
public static void finishAll() {
if(!activities.isEmpty()) {
for(Activity activity : activities) {
if(!activity.isFinishing()) {
activity.finish();
}
}
}
}
}
上面的类很简单,addActivity方法向List中添加元素,removeActivity方法用于删除元素,而finishAll方法则让List中所有的Activity都退出。
在Android Studio上写本地广播的时候,发现LocalBroadcastManager无法解析,在网上找到答案,可以在module的build.gradle中进行配置。
打开module的build.gradle文件,在dependencies中加入下面的语句:
<span class="pln">dependencies </span><span class="pun">{
</span><span class="pln"> ...
compile </span><span class="str">'com.android.support:support-v4:22.2.1+'</span>
<span class="pun">}</span>
其中,22.2.1可以修改为其他版本,Android Studio上会有相应的提示。加入这个依赖文件后,再使用LocalBroadcastManager就可以了。
由于工作需要,经常使用VPN。而网上的免费VPN和部分付费VPN都非常不稳定。有些付费VPN,连接上之后不到20分钟,就丢包严重,客服态度也不好,因此非常急于找到一个稳定的SSLedge。
千辛万苦之下,找到了EurekaVPT,使用了基础型1个月+,非常稳定,而且速度较快。EurekaVPT只接受年付,必须由邀请码才能注册并购买服务。获得邀请码可以在官网的最底下F.A.Q部分的右侧,向他们发送ticket即可。
补充:
在Mac下GoAgentX + SSLedge可以非常自由的通过浏览器查看国外资源。但是终端下以及有些其他的app没有代理功能,就无法访问国外服务器了。可以看这篇文章了解如何使用现有的SSLedge搭建全局代理:。