Archive

Posts Tagged ‘Android’

如何在大陆构建 Firefox for Android

October 29th, 2015 No comments

大陆由于墙的缘故, 不仅Google的服务没有正确的部署, 所有依赖于Google的服务都会出现问题. Firefox for Android (以下称 Fennec) 需要使用 Android SDK 和 NDK 进行构建, 因此也就遇到了同样的问题, 导致了 Mozilla 仓库中的 mach bootstrap 命令无法正确执行.

一种方式是不使用 mach bootstrap 命令初始化的 toolchain, 利用你之前手工下载的 Android SDK/NDK 进行构建. 方法是配置 mozilla 仓库根目录下的 mozconfig 参数, 指定好路径.

另一种方式是死磕, 在 mach bootstrap 过程中加入一点手工的方法来绕过. 以下是方法:

  1. 首先你需要 google hosts 能够下载基本的SDK等; 具体可以自行上 github 上找找;
  2. 运行 mach bootstrap, 在尝试 refresh android repository addons list-2.xml 或者类似的文件的时候会显示读取失败.
  3. 手工的切换到 $HOME/.mozbuild 中的目录. 找到 Android 工具并运行, 一般是 $HOME/.mozbuild/android-sdk-linux/tools/android
  4. 这是就看到了熟悉的 Android SDK 管理页面. 在配置中取消 HTTPS, 强制使用 HTTP. 安装所有需要的 SDK.
  5. 回到 mozilla-central 目录下运行 mach build
  6. 这个时候可能会遇到说找不到正确的 SDK 和 NDK 路径, 这是因为 bootstrap 没有正确执行结束导致的. 解决方法是修改 mozconfig 配置文件中”–with-android-sdk”和”–with-android-ndk”选项, 指向具体的位置.

之后就可以执行 mach build & mach package 正确的编译出 apk 了.

PS: 当然还有一种最为高大上的方式就是VPN了…然而下载量很大的说…

Thinking on the new Android IDE

June 8th, 2013 No comments

不久前 Google 发布了新的 Android Studio IDE, 从 Eclipse 切换到了 IntelliJ IDEA, 并推出了许多新的功能. 从相关的博客[1][3]介绍视频[2]中可以看到, Android Studio IDE 相比过去 Eclipse/ADT 而言, 在 UI 上做了很多的改进. 这种改进让我想起来了 Bret Victor 的演讲视频(Inventing on Principle)[4]. IDE 的发展, 将会变得越来越直观, 与程序员的交互也将会越来越即时与直接.

[1]: IntelliJ IDEA is the base for Android Studio, the new IDE for Android developers

[2]: http://v.youku.com/v_show/id_XNTU3NDY3OTAw.html

[3]: http://www.jetbrains.com/idea/features/android.html

[4]: http://vimeo.com/36579366

Firefox for Android 的 JavaScript Profiling 方法

April 19th, 2013 No comments

最近需要对手机版浏览器的JavaScript执行效率做性能分析。浏览器选择 Firefox for Android,JavaScript 程序选择 SunSpider、Octane和kraken测试集。

首先要做的就是获得性能测评数据。基本上参照Mozilla的教程就可以做到,但是有几个地方值得记录一下:

  1. 教程中说 Profiler 需要查找“arm-eabi-addr2line”工具,当前版本的Android NDK没有这个文件。找到一个“arm-linux-androideabi-addr2line”,建立一个符号链接,成功骗过了 Profiler。
  2. ADB在Ubuntu下需要sudo启动否则连接不上USB设备。
  3. 手机需要在“开发人员选项”中开启USB调试功能。
  4. Profiler 要求 PC 端开启“devtools.debugger.remote-enabled”选项。(我在手机上手工输入了这个字符串三次,囧)
  5. 开启 Profiling 之后跑 benchmark,有时候会导致 Firefox for Android 和 PC 上的 Profiler 同时假死,停止 Profiling 之后 Profiler 读取数据也可能会假死。多尝试几次总会有成功跑完的时候。(这是个需要解决的问题)
  6. 建议将自动待机(锁屏)时间延长到10分钟以上,在插电源时不关闭屏幕。
  7. 如果不想自己编译,可以下载 Firefox Nightly 安装测试。Release 通道的 Firefox 没有这个功能。

PS:发现 Nightly 经常性的出现输入URL之后网页显示不出来,标签页选择的时候能够看到略缩图,很奇怪的一个bug——一定是我打开的方式不对 🙂