Android编译生成系统-译文

2024-04-29 19:58

本文主要是介绍Android编译生成系统-译文,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

生成 4.0.1 系统

下边就是生成系统的具体命令:

 

初始化

envsetup.sh 脚本初始化环境。 也可以用 ”.” 来代替 source

$ source build/envsetup.sh 

or

$ . build/envsetup.sh

 

选择一个目标

选择 build 哪个目标使用命令 lunch ,具体的配置可以参数设置,例如

$ lunch full-eng

上边给的例子就是 build 一个全部可以调试的 emulator

如果你直接使用 lunch   没有参数的话,会弹出选择目标菜单。

所有的目标可以从 BUILD-BUILDTYPE 中查阅到, BUILD 可以为下边的几个:

Build name

Device

Notes

full

emulator

fully configured with all languages, apps, input methods

full_maguro

maguro

full  build running on Galaxy Nexus GSM/HSPA+ ("maguro")

full_panda

panda

full  build running on PandaBoard ("panda")

BUILDTYPE 为下边的几个:

Buildtype

Use

user

limited access; suited for production

userdebug

like "user" but with root access and debuggability; preferred for debugging

eng

development configuration with additional debugging tools

 

开始 Build 代码

全部 编译 使用 make 命令, GNU make 通过 -jN   参数可以选择全力发挥 cpu 的功能,一般 N12 倍硬件的线程数,例如 dual-E5520 machine (2 CPUs, 4 cores per CPU, 2 threads per core) 如果要最快的 Build ,我们可以使用命令 make -j16    make -j32

$ make -j4

 

运行它

你不仅可以在 emulator 上运行,也可以刷到设备上(lunch的参数不同)。

刷到设备中

为了刷到设备中,你必须使用 fastboot 工具,如果你 Build 成功,这个会自动加到你的路径中,可以直接使用,在 boot 下通过合适的 key 手动设置你的设备为 fastboot 模式,亦或者你可以通过 shell 命令。

$ adb reboot bootloader 

只要设备进入 fastboot 模式,就可以运行

$ fastboot flashall -w

这个 -w 参数是清除 你设备 /data 下的数据的。第一次刷的时候尽量使用这个参数,以后再刷就没有必要清除了。

在设备上运行

这个 emulator 命令自动加到你的 path 路径中了,可以直接运行

$ emulator
 

使用 ccache

ccache 就是 C/C++ 编译器缓存,它能够使 Build 的更快,在源码根目录下进行操作

$ export USE_CCACHE=1
$ export CCACHE_DIR=/<path_of_your_choice>/.ccache
$ prebuilt/linux-x86/ccache/ccache -M 20G

通过下边命令,你可以查看 ccache 的使用情况

$ watch -n1 -d prebuilt/linux-x86/ccache/ccache -s

 如果在 OSX ,你应该替换 linux-x86    darwin-x86

 

一般 Build 遇到的问题

错误的 Java 版本

如果你试图使用 JDK1.6 Build froyo 或之前版本,亦或者你试图使用 JDK1.5 Build gingerbread 或之后版本, make 的时候会报下边错误。

************************************************************
You are attempting to build with the incorrect version
of java.Your version is: WRONG_VERSION.
The correct version is: RIGHT_VERSION.Please follow the machine setup instructions athttp://source.android.com/download
************************************************************

这个可能是因为下边原因导致的

错误的使用 JDK 的版本, Building 源码需要版本对应的 Sun JDK 5 or 6

另一个 JDK 也在你的 path 路径中,使用的是另一个 JDK ,这种情况你可以使用下边的命令删除那个没有用的 JDK

$ export PATH=${PATH/\/path\/to\/jdk\/dir:/}

 

Python 版本 3

Repo 的使用使用搞的是 Python 2.x 不兼容 Python 3 ,如果想用 repo 那就安装 Python 2.x:

$ apt-get install python

 

没有 USB 权限

在大多 Linux 系统,普通的用户默认是没有访问 USB 端口的权限的,你可能会遇到没有权限的错误信息,下边配置下 USB 的访问权限。

如果 adb 正在运行并且不能连接设备,你可以使用   adb kill-server ,这样 adb 会根据配置文件重新运行的。

这篇关于Android编译生成系统-译文的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/947024

相关文章

使用Python实现Windows系统垃圾清理

《使用Python实现Windows系统垃圾清理》Windows自带的磁盘清理工具功能有限,无法深度清理各类垃圾文件,所以本文为大家介绍了如何使用Python+PyQt5开发一个Windows系统垃圾... 目录一、开发背景与工具概述1.1 为什么需要专业清理工具1.2 工具设计理念二、工具核心功能解析2.

Linux系统之stress-ng测压工具的使用

《Linux系统之stress-ng测压工具的使用》:本文主要介绍Linux系统之stress-ng测压工具的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、理论1.stress工具简介与安装2.语法及参数3.具体安装二、实验1.运行8 cpu, 4 fo

Maven项目中集成数据库文档生成工具的操作步骤

《Maven项目中集成数据库文档生成工具的操作步骤》在Maven项目中,可以通过集成数据库文档生成工具来自动生成数据库文档,本文为大家整理了使用screw-maven-plugin(推荐)的完... 目录1. 添加插件配置到 pom.XML2. 配置数据库信息3. 执行生成命令4. 高级配置选项5. 注意事

MybatisX快速生成增删改查的方法示例

《MybatisX快速生成增删改查的方法示例》MybatisX是基于IDEA的MyBatis/MyBatis-Plus开发插件,本文主要介绍了MybatisX快速生成增删改查的方法示例,文中通过示例代... 目录1 安装2 基本功能2.1 XML跳转2.2 代码生成2.2.1 生成.xml中的sql语句头2

使用Python自动化生成PPT并结合LLM生成内容的代码解析

《使用Python自动化生成PPT并结合LLM生成内容的代码解析》PowerPoint是常用的文档工具,但手动设计和排版耗时耗力,本文将展示如何通过Python自动化提取PPT样式并生成新PPT,同时... 目录核心代码解析1. 提取 PPT 样式到 jsON关键步骤:代码片段:2. 应用 JSON 样式到

ubuntu20.0.4系统中安装Anaconda的超详细图文教程

《ubuntu20.0.4系统中安装Anaconda的超详细图文教程》:本文主要介绍了在Ubuntu系统中如何下载和安装Anaconda,提供了两种方法,详细内容请阅读本文,希望能对你有所帮助... 本文介绍了在Ubuntu系统中如何下载和安装Anaconda。提供了两种方法,包括通过网页手动下载和使用wg

ubuntu系统使用官方操作命令升级Dify指南

《ubuntu系统使用官方操作命令升级Dify指南》Dify支持自动化执行、日志记录和结果管理,适用于数据处理、模型训练和部署等场景,今天我们就来看看ubuntu系统中使用官方操作命令升级Dify的方... Dify 是一个基于 docker 的工作流管理工具,旨在简化机器学习和数据科学领域的多步骤工作流。

SpringBoot实现二维码生成的详细步骤与完整代码

《SpringBoot实现二维码生成的详细步骤与完整代码》如今,二维码的应用场景非常广泛,从支付到信息分享,二维码都扮演着重要角色,SpringBoot是一个非常流行的Java基于Spring框架的微... 目录一、环境搭建二、创建 Spring Boot 项目三、引入二维码生成依赖四、编写二维码生成代码五

使用Python和SQLAlchemy实现高效的邮件发送系统

《使用Python和SQLAlchemy实现高效的邮件发送系统》在现代Web应用中,邮件通知是不可或缺的功能之一,无论是订单确认、文件处理结果通知,还是系统告警,邮件都是最常用的通信方式之一,本文将详... 目录引言1. 需求分析2. 数据库设计2.1 User 表(存储用户信息)2.2 CustomerO

Android NDK版本迭代与FFmpeg交叉编译完全指南

《AndroidNDK版本迭代与FFmpeg交叉编译完全指南》在Android开发中,使用NDK进行原生代码开发是一项常见需求,特别是当我们需要集成FFmpeg这样的多媒体处理库时,本文将深入分析A... 目录一、android NDK版本迭代分界线二、FFmpeg交叉编译关键注意事项三、完整编译脚本示例四