当前位置:首页 » 编程软件 » aosp多目标编译

aosp多目标编译

发布时间: 2023-05-20 06:45:54

① 自己可以编译安卓源码

用最新的Ubuntu 16.04,请首先确保自己已经安装了Git.没安装的同学可以通过以下命令进行安装:

sudo apt-get install git git config –global user.email “[email protected]” git config –global user.name “test”

其中[email protected]为你自己的邮箱.

简要说明

android源码编译的四个流程:1.源码下载;2.构建编译环境;3.编译源码;4运行.下文也将按照该流程讲述.

源码下载

由于某墙的原因,这里我们采用国内的镜像源进行下载.
目前,可用的镜像源一般是科大和清华的,具体使用差不多,这里我选择清华大学镜像进行说明.(参考:科大源,清华源)

repo工具下载及安装

通过执行以下命令实现repo工具的下载和安装

mkdir ~/binPATH=~/bin:$PATHcurl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repochmod a+x ~/bin/repo

补充说明
这里,我来简单的介绍下repo工具,我们知道AOSP项目由不同的子项目组成,为了方便进行管理,Google采用Git对AOSP项目进行多仓库管理.在聊repo工具之前,我先带你来聊聊多仓库项目:

我们有个非常庞大的项目Pre,该项目由很多个子项目R1,R2,...Rn等组成,为了方便管理和协同开发,我们为每个子项目创立自己的仓库,整个项目的结构如下:


这里写图片描述

执行完该命令后,再使用make命令继续编译.某些情况下,当你执行jack-admin kill-server时可能提示你命令不存在,此时去你去out/host/linux-x86/bin/目录下会发现不存在jack-admin文件.如果我是你,我就会重新repo sync下,然后从头来过.

错误三:使用emulator时,虚拟机停在黑屏界面,点击无任何响应.此时,可能是kerner内核问题,解决方法如下:
执行如下命令:

  • ./out/host/linux-x86/bin/emulator -partition-size 1024 -kernel ./prebuilts/qemu-kernel/arm/kernel-qemu-armv7

  • 通过使用kernel-qemu-armv7内核 解决模拟器等待黑屏问题.而-partition-size 1024 则是解决警告: system partion siez adjusted to match image file (163 MB >66 MB)

    如果你一开始编译的版本是aosp_arm-eng,使用上述命令仍然不能解决等待黑屏问题时,不妨编译aosp_arm64-eng试试.

    结束吧

    到现在为止,你已经了解了整个android编译的流程.除此之外,我也简单的说明android源码的多仓库管理机制.下面,不妨自己动手尝试一下.

    ② 解决ubuntu编译aosp报错问题:error while loading shared libraries: libncurses.so.5

    报错如下:

    解决方案:安装libncurses5解决,命令如下

    ③ Android Studio 3.5导入AOSP编译的classes.jar

    一、适用场景

        我们在写应用时可能会需要调用系统隐藏的API,这些API是我们无法直接访问的,报如下错误:

     此时,我们需要将系统AOSP的out/target/common/obj/java_LIBRARIES/framework_intermediates/classes.jar导入到Android Studio中,使app能够访问这些接口。

    二、实现步骤

    Step1 . 在app目录下建立libs文件夹,并将classes.jar包放入该路径

    Step2 .在app目录上右键【Open Mole Settings】,点击左侧【Dependencies】,选择app,点击【+】选择【2 Jar Dependency】,添加

    选择我们的libs/classes.jar,点击【OK】

    Step3 .在Mole的build.gradle中,dependencies自动增加依赖配置,注释掉下面一行

    implementation fileTree(dir: 'libs', include: ['*.jar'])  

    并将implementation files('libs/classes.jar')改为

    compileOnly files('libs/classes.jar')

    最终如下图所示

    Step4 .修改Project的build.gradle,在allProjects中增加如下语句

        gradle.projectsEvaluated {

            tasks.withType(JavaCompile) {

                options.compilerArgs.add('-Xbootclasspath/p:app\\libs\\classes.jar')

            }

        }

    Step5 .修改jar包优先级,在Moels的app.iml文件中找到我们的classes.jar包所在行,

    <orderEntry type="library" name="Gradle: __local_aars__:/Users/mrwong/AndroidStudioProjects/uart_daemon/app/libs/classes.jar:unspecified@jar" level="project" />

    将其移动到

    <orderEntry type="jdk" jdkName="Android API 29 Platform" jdkType="Android SDK" />

    这一行之上,最终如下图所示:

    至此,app可以优先访问我们自己的jar包 。

    ④ ubuntu/mac android aosp源码编译遇到的坑

    以上是编译aosp问题总结
    ========================分割线==========================

    直接在命令行中设置临时变量就行

    以上是刷机问题总结
    ========================分割线==========================

    ⑤ 编译aosp为什么要安装gcc

    如果你的源程序是 C 语言的话,而你又是在 LINUX 系统下开发程序,那你就必须使用 gcc 编译器;如果你是在 UNIX 系统下开发 C 语言源程序,那么就要使用 cc 编译器。所以说,最关键的还是要看你的软件开发平台。

    ⑥ 怎么在ubuntu上编译android源码

    步骤一:
    安装Ubuntu系统。我们既可以通过虚拟机的方式安装Ubuntu,也可以直接在电脑上安装,为了获得更好的Linux操作体验,我建议直接在电脑上面安装Ubuntu,我在自己电脑上安装了win10和Ubunut Server14.04双系统,使用的时候可以根据自己的需要随时切换系统,非常方便。关于如何搭建双系统,网上有很多教程,我就不在此叙述了,但是我想说明的一点是在安装Ununtu的时候,分配给Ubuntu的磁盘空间一定要尽可能大一点,至少60G,我分配了105G,编译完成之后还剩下50多G,也就是说差不多用了近50G的空间,所以安装Ubuntu的时候一定得分配大一点的磁盘空间,不然编译会因为空间不足而中断。
    步骤二:
    搭建好Ubuntu系统之后,我们需要下载一份Android6.0的源码,网上很多文章都介绍了如何通过repo的方式来下载源码,但是通过这种方式下载速度可能并不是很理想,直接下载网络云的Android6.0源码,
    因为Android6.0的源码所占空间非常大,所以上传者把Android源码分成了很多个文件,待全部下载完毕之后,我们可以通过命令把这些分开的文件合并为一个文件。
    步骤三:
    如果我们是在Windows上下载的源码,那么当我们打开Ubuntu之后,要做的第一件事请就是把Windows中的Android源码拷贝到Ubuntu系统下面,我直接利用复制粘贴的方式将源码拷贝到了Ubuntu的Home目录下面,拷贝之后的目录结构Home/android6_r1/各个分开的源码文件。
    步骤四:
    合并这些被分开的源码文件。我们按下键盘上的ctrl + alt + T打开控制台,通过cd命令进入到Home/android6_r1/目录下面,然后执行命令:cat Android6_r1_* > M.tgz,不用多久,在Home/android6_r1/目录下面就会生成一个新的文件——M.tgz,M.tgz就是合并之后的压缩文件。
    步骤五:
    解压步骤四生成的压缩文件。同样是在Home/android6_r1/目录下面,我们在控制台执行命令:tar zxvf M.tgz,开始解压。解压的过程大概需要20分钟左右的时间,请耐心等待。解压好了之后,在Home/android6_r1/会生成一个mydroid的文件夹,这个文件夹就是Android源码的根文件夹了,里面有abi、devices、hardware、packages、sdk、art等文件夹和文件。
    步骤六:
    安装编译源码所需要的软件。在控制台中我们通过cd..命令退回到Unbuntu用户的根目录下,然后依次执行以下命令:
    sudo apt-get update
    sudo apt-get install openjdk-7-jdk
    sudo update-alternatives --config java
    sudo update-alternatives --config javac
    以上命令每一条都必须分开单独执行,目的是为了获取1.7版本的jdk并设置环境变量。当我们安装完Ubuntu之后可能会自带一个jdk,但是如果用自带的jdk编译Android源码很可能会提示jdk版本不符合要求的错误,因此我们需要重新下载1.7版本的jdk,我用openjdk-7-jdk编译未出现任何问题。
    接下来继续执行以下命令,同样每一行都是分开单独执行的:
    sudo apt-get install git gnupg flex bison gperf build-essential
    sudo apt-get install zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev
    sudo apt-get install libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386
    sudo apt-get install libgl1-mesa-dev g++-multilib mingw32 tofrodos
    sudo apt-get install python-markdown libxml2-utils xsltproc zlib1g-dev:i386
    sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so
    以上命令主要是安装编译源码时需要用到的各种软件,如果没有安装这些软件,编译的过程中会提示缺少必要的软件而无法继续编译,因此,在正式编译源码之前,一定要先安装这些软件。
    步骤七:
    开始编译。在控制台中通过cd命令进入到Home/android6_r1/mydroid/目录下,然后执行命令:source build/envsetup.sh,导入编译Android源码所需的环境变量和其它参数。
    步骤八:
    在控制台中执行命令:lunch,运行命令之后会提示我们选择编译目标。这里我选择的的默认目标,即aosp_arm_eng。
    步骤九:
    在控制台中执行命令:make -j8,开始编译。注意,make -j8命令中的数字8和我们电脑的CPU核心数以及线程数有关系,一般这个数字的数值最大不能超过CPU线程数的2倍,例如我电脑的处理器是i5 6200U,为双核四线程,因此编译Android源码的时候,我可以设置的最大工作线程数量为4 * 2 = 8。在执行make命令的时候我们应该根据自己的CPU参数设置合理的工作线程数值。
    以上步骤执行完之后,就是一段非常漫长的等待了,我从中午十二点多开始编译,一直到晚上九点多编译完成,整个编译过程耗时九个多小时,幸好我的运气还不错,编译过程中没有出现任何错误,只是中途意外中断了一次,但是Android源码是可以接着上次中断的位置继续编译的,已经编译的部分不会重复编译,因此并未对我造成大的影响。同志们,我想说的是,编译的过程中一定要有耐心哟!
    整个源码编译完成之后,如果提示如下信息,那么Congratulations, you are successful!!!

    ⑦ CnetOS编译AOSP不明原因失败

    ROOT获得最高权限是删除这些应用的唯一途径 实际手动操作的流程非常复杂,并且有版本限制 我推荐你款不错的手机ROOT工具吧, 我一直都是在用的,很不错 使用应用宝获取手机root权限在工具 选项里找到一键ROOT即可或者KINGROOT也行。

    ⑧ aosp系统怎么样

    AOSP 全名为 Android Open-Source Project,中文为安卓开源项目,开源即开放源代码!Android 是一个基于 Linux 的、由 Google 主导的开源系统。严格意义上来说,Android=AOSP+GMS,那么这个GMS又是什么呢?GMS 全名为 Google Mobile Service,即谷歌移动服务,也就是我们常刷的谷歌服务包。由于你懂的原因,国内无法使用 GMS,所以国内的各种定制 ROM 都是 AOSP 的定制修改加上自家的云服务,比如 MIUI、ColorOS 等!所以,所有的 ROM 最终的根源就是 AOSP,没有AOSP,也就没有现在的 Androi关于 CM,全名为 CyanogenMod,全球最大的第三方 ROM 编译团队。CM 是基于 AOSP 进行二次开发,在 AOSP 的基础上添加功能、适配更多机型、编写众多机型的内核和驱动!CM 是在底层多 AOSP 进行改进,并且遵循 Android 设计规范,所以 UI 与交互方面,与 AOSP 保持一致,所以很多人说的CM的UI应该

    ⑨ Android AOSP代码与编译服务器系统时间有关系吗

    起因:aosp由许多项目组成,android4.2就有329个project,每个项目都是一个独立的git仓库。
    Repo:创建一个aosp分支来做feature开发就需要每一个子项目创建对应的分支,手动创建很费力,所以有了Repo,自动化处理。Repoz自动化体现在创建分支,查看分支状态,提交代码,更新代码。
    Repo实际由Python脚本组成,Python脚本通过调用Git完成自己的功能。组成Repo工具的Python脚本本身也是一个Git仓库。这个Git仓库在aosp里面,焦作Repo仓库。每次执行Repo命令的时候了,Repo就进行一次更新。
    Manifest仓库:Repo是用来自动化处理aosp子项目的仓库的,子项目名称,仓库地址,aosp又是不断迭代变化的,每个版本子项目都不一样,就需要另外一个仓库来管理aosp所有子项目的仓库元信息。就是Manifest仓库
    Repo脚本:

    ⑩ 如何在 ubuntu 下编译 aosp生成 mac 和 win 环境可执行的 aapt 工具

    如果你用的是 Ubuntu 或其他 Debian 衍生的发行版,可以使用 apt-get命令。比如:$ sudo apt-get install 软件包名称
    然后输入密码,如果软件包的名称正确,软件安装进程就会被启动。
    apt-get 还可以删除软件,只要把上面的 install 换成 remove 就行了。

    热点内容
    手机端拍照上传图片 发布:2025-07-17 11:58:59 浏览:66
    人事管理系统的数据库设计 发布:2025-07-17 11:54:27 浏览:229
    统治战场kk脚本 发布:2025-07-17 11:53:45 浏览:239
    安卓的数据线接口有什么颜色 发布:2025-07-17 11:53:03 浏览:871
    塑料压缩器 发布:2025-07-17 11:52:15 浏览:724
    手机百度云如何秒上传 发布:2025-07-17 11:46:27 浏览:612
    交易猫买脚本靠谱吗 发布:2025-07-17 11:32:27 浏览:520
    服务器系统盘一般做什么阵列 发布:2025-07-17 11:16:05 浏览:363
    如何用c语音实现放射密码 发布:2025-07-17 11:13:03 浏览:735
    lol脚本2017 发布:2025-07-17 10:52:18 浏览:827