Android Studio 编译笔记

栏目: IT技术 · 发布时间: 3年前

内容简介:因为公司相关售前的原因,需要研究一下 Android Studio 的架构及其原理。便需要 clone 一下代码, 编译一下它,并研究它是如何编译的。总体过程还是非常不顺利的,以至于最后没有在 4.0 上编译成功,只在 3.0 上编译成功。这一步就比较简单了,按官方的教程来:《

因为公司相关售前的原因,需要研究一下 Android Studio 的架构及其原理。便需要 clone 一下代码, 编译一下它,并研究它是如何编译的。

总体过程还是非常不顺利的,以至于最后没有在 4.0 上编译成功,只在 3.0 上编译成功。

1. Clone 代码

这一步就比较简单了,按官方的教程来:《 Checkout and build the source code

$ mkdir studio-master-dev
$ cd studio-master-dev
$ repo init -u https://android.googlesource.com/platform/manifest -b studio-master-dev
$ repo sync -c -j4 -q

不得不说 Android Studio 相关的代码还是蛮大的,大概花了一天的时间 clone。clone 完后,大概占了我 60 G 的存储空间。

FAQ

编译

在《 Android Studio Release Process 》 中记录了如何解决部分 Google 相关的 Vendor 缺少的解决方案

从代码库中删除所有的:tools/vendor/google

示例:https://android.googlesource.com/platform/tools/idea/+/refs/heads/studio-master-dev/RELEASE.md

--- a/bazel/toplevel.WORKSPACE
+++ b/bazel/toplevel.WORKSPACE
@@ -1,13 +1,6 @@
 load("//tools/base/bazel:repositories.bzl", "setup_external_repositories")
 setup_external_repositories()

-local_repository(
-      name = "blaze",
-      path = "tools/vendor/google3/blaze",
-)
-load("@blaze//:binds.bzl", "blaze_binds")
-blaze_binds()
-
 http_archive(
   name = "bazel_toolchains",
   urls = [

SDK 或者 NDK 找不到

ln -s ~/Library/Android/sdk/ /Users/fdhuang/jvm/studio-master-dev/prebuilts/studio/sdk/darwin
ln -s ~/sdk/android-ndk-r20/ /Users/fdhuang/jvm/studio-master-dev/prebuilts/studio/sdk/darwin/ndk-bundle

armeabi 问题

[exec] ERROR: /private/var/tmp/_bazel_fdhuang/0711c902f818b6dd779b715988db0de0/external/androidndk/BUILD.bazel:41:1: in cc_toolchain_suite rule @androidndk//:toolchain-libcpp: cc_toolchain_suite '@androidndk//:toolchain-libcpp' does not contain a toolchain for cpu 'armeabi'

打开,复制粘贴

'armeabi': ':arm-linux-androideabi-clang8.0.7-v7a-libcpp',

删除 DS_Store

ref_id = fd.readline()
  File "/usr/local/Cellar/python/3.7.5/Frameworks/Python.framework/Versions/3.7/lib/python3.7/codecs.py", line 322, in decode
    (result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x80 in position 3131: invalid start byte

find . -name ".DS_Store" -delete

编译 4.0 失败

不过,最后你还是不会成功的,因为缺少了 NDK 相关的东西:

见 issues: https://issuetracker.google.com/issues/126764883


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

大思维:集体智慧如何改变我们的世界

大思维:集体智慧如何改变我们的世界

杰夫·摩根 / 郭莉玲、尹玮琦、徐强 / 中信出版集团股份有限公司 / 2018-8-1 / CNY 65.00

智能时代,我们如何与机器互联,利用技术来让我们变得更聪明?为什么智能技术不会自动导致智能结果呢?线上线下群体如何协作?社会、政府或管理系统如何解决复杂的问题?本书从哲学、计算机科学和生物学等领域收集见解,揭示了如何引导组织和社会充分利用人脑和数字技术进行大规模思考,从而提高整个集体的智力水平,以解决我们时代的巨大挑战。是英国社会创新之父的洞见之作,解析企业、群体、社会如何明智决策、协作进化。一起来看看 《大思维:集体智慧如何改变我们的世界》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

在线进制转换器
在线进制转换器

各进制数互转换器

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具