Android系统实际开发工作中的流程和必要技能

如何在Qt上进行安卓开发(实体安卓机和模拟器) 记录第一次用Qt开发安卓 阅读详情

引言:

做为一个Android开发工程师,结合实际项目(需要源码的系统开发)开发经验,谈谈整个流程和一些必要的技能。
  1. repo/git
    项目开始,首先CI会将基线版本拉到CI服务上,同时配置好git仓、gerrit和分支,并开通相关开发人员的各种权限(代码下载、review、+2等),然后在通知开发,可以拉代码。

    开发人员在本地Linux服务器上,用repo下载代码:

    mkdir new_project_xx
    cd new_project_xx
    repo init -u yourname@xxx/manifest.git 
    repo sync -j8
    repo start main_branch --all

    这里先在服务器上建立一个目录,用于存放基线版本库。然后用repo 下载含有git仓信息的manifest.git,根据这个git文件,用sync同步代码。即把CI服务器上的代码下载到本地,这步操作可能会因网络中断、md5较验不过失败,只需要下次执行就可以。-j8告诉服务器,如果可能用8个线程来下载代码。代码下载完成后,将所有git项目切到main_branch分支上去,这样就为代码下载、上库做好准备了。

  2. make
    代码下载完成,然后开始编译。Android编译实质还是在Linux平台编译,当然经典的make不得不提,假设在本地服务器上相关的编译工具(JDK,g++, Python)和环境变量都已经弄好。

    source ./build/envsetup.sh
    choosecomb eng product_ID  full arm64 ...
    make -j8

    初始化Android编译环境,主要配置产品代号(可能有多个产品一套代码),eng还是usr、arm平台等。最后make会寻找当前目录下的makefile或Makefile文件,进入makefile编译过程。
    如果顺利的话,会提示编译成功。一般来说现在的版本编译分为ap编译、cp编译,有些公司还有cust编译,本地编译多是ap编译,可能无法编译出大包nup或npg直接烧写。但可以进行增量编译,一般的项目足以满足。若要出完整大包,只能让CI编译了。通常的做法,CI会定时出每日版本,到时再验证即可。

  3. vim,sourceinsight,ADT
    编译完代码,根据项目需求,实现具体功能。这需要修改代码,常见的做法有:

    • a:直接在Linux服务器上进行修改
      由于服务器一般采用ssh连接,无法用带有界面的工具去修改代码,所以最好采用vim进行修改,然后保存退出。值得一提的是vim入门起点高,但绝对是Linux上的一把利器,后续会将vim的用法更上来。
    • b:把相关代码拉到windows上,用sourceinsight,ADT进行修改
      这是大多数同事最为常用的方法,修改直观,不过修改完后需要再次传回本地服务器上。
  4. mm,mma,mm -B, mmm
    修改完代码后,开始进行增量编译。在Android环境下,编译变得较为简单。找到相关的Android.mk文件,针对x.bin,x.so,用mm或者mma。编译apk,jar包时多采用 mm -B。或在项目根目录下,用mmm加Android.mk的路径。

    make secbootimage -j8
    make secrecoveryimage -j8
    make systemimage -j8

    对于系统开发,通常还会编译各image文件。如修改kernel,编bootimage,或secbootimage;修改recovery,编secrecoveryimage等。

  5. adb,fastboot
    正常情况下,编译出来的apk,so,bin等文件后,需要烧写到手机的rom中或data分区,以覆盖原有的文件。这时adb和fastboot工具大显身手的时候到了。

    adb devices
    adb remount
    adb push x.apk /system/app
    adb push x.apk /system/priv-app
    adb push x.lib /system/lib
    adb push x.lib /system/lib4
    adb push x.bin /system/bin
    adb reboot
    ...
    fastboot devices
    fastboot flash boot bootimage
    fastboot reboot

    adb 的使用使得Android开发调试变得相对简单了不少,相关的usb驱动是必须的,同时保证具有root权限。至于怎么取得root权限,通常的方法有:

    • a: 烧写有root权限的nup包
    • b: 安装su程序
    • c: 用fastboot烧写root权限的bootimage

    有了root权限就可以将编译出来的文件烧写到system分区,为什么要root权限,因为system分区是只读分区,首先要将它重新挂载为可读写分区。即上面的adb remount。当然也可以在shell环境中,手动挂载,后边再介绍如何挂载。
    至此,重启Android设备(apk不需要重启),验证新的功能是否生效,若有问题则回到流程3,直到没有bug出现。

  6. git,repo
    当本地把功能验过之后,剩下的是完成上库操作。

    git pull origin main_branch
    git add . 
    git commit  
    repo upload .

    先更新下当前分支的代码,以防冲突。再把修改的代码写上简要介绍和说明,然后提交到gerrit上进行review操作,登录gerrit网址,添加指定人review,保证至少有一人有+2权限,以便能进行push操作。OK,此至你负责的小模块开发大部分已完成。
    之所以说是大部分,是因为还需要做第二天的版本回归验证,这一点很重要,你的模块在本地验证通过,但有可能影响了其它模块。回归验证后,如果是外发版本,还要转测(转给测试)。
    所有完成后,你尽可能写一篇文档,详细描述该功能的一些关键问题,所谓的善始善终如是!

PS:在功能模块或特性开发时,正规流程还复杂得多,如SE方案讨论,预研,需求澄清,DT,WT等,在此不再详述。

01_安卓APP开发流程概览 目录安卓APP开发流程前言一、流程概览二、分步概述1.需求分析2.产品原型设计3.UI视觉设计4、数据库搭建5、服务端开发6、Android客户端开发7、APP程序测试8、上传到应用商店9、APP的维护以及更新总结 安卓APP开发流程 前言 在学习一个新东西的时候,我习惯用总-分-总的方式:总——先将要学习的内容总体框架建立起来,形成最初的知识图谱,分——再将框架中的每一项子内容逐个学习、实践,填充知识图谱,总——最后将所有学到的东西进行归纳总结,形成最终完整详细的知识图谱。这样一轮下来,任何知识都会学的十 阅读详情

相关推荐

安卓手机APP开发的安卓工作台的简介

安卓手机APP开发的安卓工作台的简介,工欲善其事,必先利其器。先熟悉好工作的工具,必将事半功倍。

红孩儿编程大师 1798

Android app项目开发步骤总结

转自:http://www.iteye.com/topic/890517 做了几个android企业应用项目后,总结了项目的基本开发步骤,希望能够交流。 一 应用规划: ※确定功能。 ※必须的界面及界面跳转的流程。 ※需要的数据及数据的来源及格式。 ※是否需要服务端支持。 ※是否需要本地数据库支持。 ※是否需要特殊权限。 ※是否需要后台服务。二 架构设计: ※分层。 ※网络连接。 ※数据处理-...

WEBCODE 590

Android开发者需要掌握哪些技能?

想必许多人对资深工程师的作业和理解,太狭隘了。但以下也只是个人观点, 如果你有兴趣就继续看吧。 首先下一个定义,什么样的人可以算是资深工程师?如果拿国内互联网行业相对为通用的标准,我认为至少应该是百度T7,阿里P8这样的职级,可能是技术Leader,也可能是团队中最核心的技术骨干。团队对这样一位工程师的要求,肯定不只是精通技术和经验丰富这么简单。编码和解BUG当然是其中非常重要的部分,但除此之外我认为,其具备的技能至少应该要包括以下几点: **关于团队:**对内建设研发梯队,提升团队内聚力和执行力,注重

鸿蒙开发知识记录 5940

Android应用开发全流程

  转载:http://blog.youkuaiyun.com/ly_sr/article/details/6737353   一、准备工作   1.    技能储备             1)    Java        重要程度:★★★★★        当然是掌握的越多越好,毕竟Android就是用Java语言来开发的。遇到很多没有Java基础的朋友问:要想直接...

lh200808的专栏 300

【安卓开发】【Android】总结:安卓技能树

【持续更新】对笔者在安卓开发的实践中认为必要的知识点和遇到的问题进行总结。

weixin_43031313的博客 922

Android Framework学习——安卓系统启动流程(Android 13)

提示:本文仅作个人学习记录,禁止转载无论是安卓应用开发,还是安卓framework开发,在面试中总是会被问到framework相关的知识,系统启动流程已然成为高频提问点之一,以前对系统启动流程的认识停留在其他人口口相传、博客上的简要总结及流程图,接下来我将根据源码主要流程进行梳理,总结安卓系统启动这一过程的主要步骤。因为关注的重点是Java API Framework层的流程(如下图绿色部分),所以在这之前的流程会简略概括。在关机状态长按电源键,引导芯片程序(固化在rom中)开始运行;

qq_31190665的博客 2407

开发者必备的顶级Android开发工具,Android面试心得必备技能储备详解,成功入职阿里_安卓开发工具需要那些知识储备

对于程序员来说,要学习的知识内容、技术有太多太多,要想不被环境淘汰就只有不断提升自己,从来都是我们去适应环境,而不是环境来适应我们!当你有了学习线路,学习哪些内容,也知道以后的路怎么走了,理论看多了总要实践的最后,互联网不存在所谓的寒冬,只是你没有努力罢了!一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!可以走的很快,但一群人才能走的更远。

2401_84007015的博客 671

(三十)安卓开发中的MVP模式详解

MVP模式通过将用户界面(View)、数据处理(Model)和逻辑控制(Presenter)分离,显著提高了安卓应用程序的可维护性、可测试性和模块化程度。通过上述代码示例和使用场景,你可以看到MVP如何在实际开发中发挥作用。无论是简单的登录功能还是复杂的业务逻辑,MVP都是一种值得掌握的架构模式。

cuijiying的博客 1701

成为一个优秀的Android开发者,需要必备哪些技术&工作技能?

我一直以来都有整理练习大厂面试题的习惯,有随时跳出舒服圈的准备,也许求职者已经很满意现在的工作,薪酬,觉得习惯而且安逸。不过如果公司突然倒闭,或者部门被裁减,还能找到这样或者更好的工作吗?我建议各位,多刷刷面试题,知道最新的技术,每三个月可以去面试一两家公司,因为你已经有不错的工作了,所以可以带着轻松的心态去面试,同时也可以增加面试的经验。我可以将最近整理的一线互联网公司面试真题+解析分享给大家,大概花了三个月的时间整理2246页,帮助大家学习进步。

m0_60607971的博客 1859

Android开发最佳学习路线图(详细介绍各项技术和学习规划图,绝无广告)

Android是一种以Linux为基础的开放源码操作系统,主要使用于便携设备。目前尚未有统一中文名称,中国大陆地区较多人使用安卓(非官方)或安致(官方)。Android操作系统最初由Andy Rubin开发,最初主要支持手机。2005年由Google收购注资,并拉拢多家制造商组成开放手机联盟开发改良,逐渐扩展到平板电脑及其他领域上。2010年末数据显示,仅正式推出两年的操作系统的Android已经超越称霸十年的诺基亚Symbian系统,跃居全球最受欢迎的智能手机平台。

什么事LLVM和Clang?Clang与GCC有什么区别?Clang如何使用?

这个问题主要讲Xcode编译器的认知,在学习iOS之前有必要学习一下Objective-C的编译环境。 在了解LLVM和Clang之前,先得了解一下什么是编译器。 编译器是一种计算机程序,它将某种编程语言(高级编程语言)写成的源代码转换成另一种编程语言(低级编程语言)。一个现代编译器的主要工作流程为:源代码->预处理器->编译器->目标代码->链接器->可执行程序...

Welcome~ 9724

Android开发必备技能盘点

本文从基础知识、进阶技能、网络与数据存储、测试与优化等方面详细阐述了Android开发必备技能。掌握这些技能,对于开发者来说,不仅能够提升开发效率,还能确保应用质量和用户体验。在未来,随着Android技术的不断发展,开发者还需不断学习新知识,跟上技术发展的步伐。建议与未来研究方向学习新的编程语言,如Flutter、Dart等,拓展开发技能。关注Android新版本的特性,掌握新技术的使用。加强跨平台开发能力,如使用React Native、Flutter等技术进行开发。

2501_92488041的博客 799

本地部署Llama 3中文版:Ollama量化配置与调优指南

大模型本地部署正在成为数据敏感场景下的主流选择。本地运行开源大模型,既能保护隐私又能降低调用成本,但中文能力往往成为瓶颈。以Llama 3为代表的开源模型,需借助中文微调与量化技术,才能在消费级显卡上流畅运行。量化通过压缩模型权重减小显存占用,配合Ollama等推理框架,可快速搭建私有中文AI服务。该方案适用于知识库问答、内容生成、离线助手等场景,并可通过OpenAI兼容接口无缝对接Dify等应用平台。本文从硬件选型、量化等级到Modelfile配置,系统梳理本地部署中文大模型的全链路实战方法与排错思路,帮

weixin_29035405的博客 82

安卓开发—Android基础

安卓开发—Android基础 移动开发 移动开发也叫做移动互联网开发。是指以手机、PDA、UMPC等便携终端为基础,进行相应的开发工作,由于这些随身设备基本都采用无线上网的方式,业内也称作为无线开发。 移动应用包括早期的WM掌上助理设备,Web os设备、java设备、塞班设备,以及现在现在火热的安卓和苹果设备等移动应用的开发。 谷歌提供安卓平台,要开发,只需要掌握java语言,就可以在安卓平台上进行开发。 三大主流移动开发平台 以下是Android、IOS、Windows phone三大主流移

cs_loser的博客 1万+

Python广度优先搜索BFS - 蓝桥13届省赛污染海域

请问这片N * M海域中有几块是没被污染的独立海域(没被污染的独立海域是指该块海域上下左右被已污染的海域包围,且N * M以外的海域都为已被污染的海域)有一片海域划分为N * M个方格,其中有些海域已被污染(用0表示),有些海域没被污染(用1表示)。第二行开始输入N行,每行M个数字(数字只能为1或者0,1表示没被污染的海域,0表示已被污染的海域)这块4 * 5的海域,有3块海域(绿色)没被污染,因为每一块的上下左右都被污染的海域包围。输出一个整数,表示N * M的海域中有几块是没被污染的独立海域。

m0_69865359的博客 269

PyRoki:机器人运动学优化库入门教程

PyRoki:模块化机器人运动学优化工具包 本文介绍了PyRoki,一个模块化、可扩展且跨平台的机器人运动学优化工具包。PyRoki通过统一变量和成本函数接口,简化了逆运动学、轨迹优化和运动重定向等任务的实现,支持CPU、GPU和TPU加速。实验表明,PyRoki在批量逆运动学任务中比现有GPU加速库cuRobo快1.4-1.7倍,且收敛误差更低。其模块化设计支持快速集成新成本函数,并通过交互式可视化工具优化参数配置。PyRoki开源发布,为机器人运动优化提供了灵活高效的解决方案。

机器人控制与仿真应用 1293

uniapp开发云打包详细流程(包含安卓Android和苹果IOS)

使用Hbuilder开发uniapp云打包详细流程(包含安卓Android和苹果IOS)

weixin_43742167的博客 1万+

YOLOv11改进 | 注意力篇 | YOLOv11引入CA注意力机制

摘要:最近关于移动网络设计的研究已经证明了通道注意力(例如,挤压和激励注意力)对于提升模型性能的显着有效性,但它们通常忽略了位置信息,而位置信息对于生成空间选择性注意力图很重要。到此本文的正式分享内容就结束了,在这里给大家推荐我的YOLOv11改进有效涨点专栏,本专栏目前为新开的,后期我会根据各种前沿顶会进行论文复现,也会对一些老的改进机制进行补充,如果大家觉得本文帮助到你了,订阅本专栏,关注后续更多的更新~3.2 在Extramodule里创建CA。在CA.py文件里添加给出的CA代码。

tsg6698的博客 2980

eclipse安卓开发环境配置全流程

eclipse安卓开发环境配置全流程前言eclipse安卓开发环境的配置:1.jdk及eclipse的安装配置2.Android SDK的安装配置3.eclipse ADT 的安装配置4.安卓依赖库的手动添加 前言 流行的安卓开发软件有eclipse和Android studio,相对于专业的安卓开发,Android studio肯定是更强大一点,但有点吃配置,电脑性能差的用eclipse也可以的...

全栈菜鸟的博客 5061

C和C++Everything教程的简介

C和C++Everything教程的简介 C和C++Everything教程,该专栏目前已有8000博文,订阅该专栏相当于同时订阅以下所有收费专栏

希望我的博客,能帮上你解决学习中工作中所遇到的问题 4392

FGC_grasp复现

FGC_GraspNet复现

qq_39568387的博客 385

Android开发中的权限声明

在安卓开发中,必须在文件中声明应用需要的所有权限。对于普通权限,系统会在安装时自动授予权限;对于危险权限,需要在运行时请求用户授权。从 Android 6.0(API 23)开始,危险权限需要动态申请,用户可以在应用运行时选择是否授予权限。

2301_80267599的博客 2824

Unreal Engine开发:多人联机与网络同步_延迟补偿与预测

通过延迟补偿和预测技术,我们可以显著减少网络延迟对多人在线动作游戏的影响,提升玩家的体验。延迟补偿主要在服务器端实现,通过回溯时间点来更准确地处理输入和事件。预测技术主要在客户端实现,通过预先计算玩家的动作结果来减少延迟感。结合这两种技术,可以实现更平滑、更公平的多人游戏体验。

chenlz2007的博客 1191

Toolbar在Android中的使用,安卓开发必须会的技能

其实Android开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。虽然 Android 没有前几年火热了,已经过去了会四大组件就能找到高薪职位的时代了。这只能说明 Android 中级以下的岗位饱和了,现在高级工程师还是比较缺少的,很多高级职位给的薪资真的特别高(钱多也不一定能找到合适的),所以努力让自己成为高级工程师才是最重要的。

m0_56175058的博客 1462

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

java开发实际工作中项目开发流程及岗位

一、工作中的一些形式和岗位 上班的形式: 1、自研:A公司面试、A公司签合同,最后去A公司上班 2、人力外包:B公司的面试邀请、让你去A公司面试,然后如果A公司通过了,那么就和B公司签合同,然后去A上班 项目开发的模式: 1、项目(项目外包):在B公司上班,写的是A公司的项目,最后上线交付,给钱搞定。 2、产品:公司高层的需求,自己的技术人员实现,并且公司自己上线运营、升级维护。 岗位: 1、项目经理:主要和甲方对接,起到甲方和技术人员之间承上启下的作用,并且把控整个项目的开发流程进度

qq_41936224的博客 3980

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

上一篇: 工作感悟之Android系统开发入门
下一篇: 从Android开发谈谈对编程语言的看法
kevin_wz
博客等级 码龄15年 33粉丝 24原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值