精华内容
下载资源
问答
  • settingsprovider等,均是系统的核心应用 ls -la cd system_ext/priv-app/ 1、获得root权限:adb root 2、设置/system为可读写:adb remount 3、将PC机上文件复制到手机:adb push 文件名 /system/lib adb push ad\...

    m    在源码树的根目录下执行编译
    mm    编译当前路径下所有的模块,但不包含依赖
    mma    编译当前路径下所有模块,且包含依赖
    mmm    编译指定路径下所有的模块,但不包含依赖
    mmma    编译指定路径所有的模块,且包含依赖
    make    在源码树根目录下执行,自动寻找该模块,省略名称默认全编


    source build/envsetup.sh   在你需要编辑的根目录下输入如下命令初始化环境
    lunch   选择你需要的模块:如:32.lito-userdebug

    make -j16 Gallery2    执行指定的模块    -jx # x指线程数,一般写8  Gallery2指定的某个模块,切记一定要写正确,不然会报错,如果不写整个项目都会编辑

    make Launcher3QuickStepGo   快速编译某个模块

    https://blog.csdn.net/zmnqazqaz/article/details/37559177
       1> source build/envsetup.sh:加载命令
       2> lunch:选择平台编译选项
       3> make:执行编译

    无法下载XML::Simple时,可以使用以下指令
    sudo apt install libxml-simple-perl

    通过命令编辑生成的APK位置:/media/longchengbin/projects/M10/out/target/product/lito/system/product/app/Gallery2


    source build/envsetup.sh
    lunch
    mmm development/tools/idegen/
    这行命令的意思是编译idegen这个模块项目,然后生成idegen.jar文件(可以自己去查看这个模块的Android.mk的目标)。
    运行完以后如果看到如下信息则说明编译OK:#### make completed successfully (7 seconds) ####
    接着执行如下脚本:
    ./development/tools/idegen/idegen.sh
    这行命令的意思是在根目录生成对应的android.ipr、android.iml IEDA工程配置文件。等待片刻得到类似如下信息说明OK:
    Read excludes: 21ms
    Traversed tree: 194799ms

     

     

    +++++++++++++++++++++++++++++++++  push/pull APK  +++++++++++++++++++++++++++++++++
    cd system/priv-app/  包括Launcher,systemui, settingsprovider等,均是系统的核心应用
    ls -la   
    cd system_ext/priv-app/
    1、获得root权限:adb root
    2、设置/system为可读写:adb remount
    3、将PC机上文件复制到手机:adb push 文件名  /system/lib

    adb push ad\ /sdcard/1/cd    复制ad目录的内容到目录1下的cd目录

    +++++++++++++ 完整流程+++++++++++++++
    adb shell 进入shell状态

    如果该程序正在运行,就要执行这步:
    ps -A |grep xx(对应的进程名字,如:Launcher3QuickStep)   查看其进程号
    kill  xxx(进程号如:26438)  然后kill

    查找你要push的APK所在的位置:现进入shell状态
    cd xx(某个目录如:system_ext)
    find -name xx*(模糊查询某个文件,如xx名为Launcher3QuickStep,* 代表模糊查询)
    eg:
    A101LV:/system_ext # find -name Launcher3QuickStep*
    ./priv-app/Launcher3QuickStep
    ./priv-app/Launcher3QuickStep/oat/arm64/Launcher3QuickStep.vdex
    ./priv-app/Launcher3QuickStep/oat/arm64/Launcher3QuickStep.odex
    ./priv-app/Launcher3QuickStep/Launcher3QuickStep.apk

    退出shell 输入:exit或者点击按键ctrl+D
    最后:adb push (apk目录) (系统目录)
    adb push Launcher3QuickStep.apk  /system_ext/priv-app/Launcher3QuickStep/ (刚刚查找出的文件所在位置)

     

     

    展开全文
  • 安卓系统开发

    2021-02-17 11:05:43
    前言 本文作为Android系统架构的开篇,起到提纲挈领的作用,从系统整体架构角度概要讲解Android系统的核心技术点,带领大家初探Android系统全貌以及...对于用户空间主要采用C++和Java代码编写,通过JNI技术打通用户空

    前言

    本文作为Android系统架构的开篇,起到提纲挈领的作用,从系统整体架构角度概要讲解Android系统的核心技术点,带领大家初探Android系统全貌以及内部运作机制。虽然Android系统非常庞大且错综复杂,需要具备全面的技术栈,但整体架构设计清晰。Android底层内核空间以Linux Kernel作为基石,上层用户空间由Native系统库、虚拟机运行环境、框架层组成,通过系统调用(Syscall)连通系统的内核空间与用户空间。对于用户空间主要采用C++和Java代码编写,通过JNI技术打通用户空间的Java层和Native层(C++/C),从而连通整个系统。

    一、Android开发概述

    1.1 Android简介

    Android是由Google公司和开放手机联盟领导并开发的一种基于Linux的自由且开放源代码的操作系统,主要使用于移动设备。 其最初由Andy Rubin开发,后被Google于2005年8月收购。之后Google与84家硬件制造商、软件开发商及电信营运商组建开放手机联盟,共同研发改良Android系统,完成开发后,Google以Apache开源许可证的授权方式,发布了Android的源代码。

    1.2 Android的发展历程

    2003年10月,Andy Rubin等人创建Android公司,并组建Android团队。

    2005年8月17日,Google低调收购了成立仅22个月的高科技企业Android及其团队。安迪鲁宾成为Google公司工程部副总裁,继续负责Android项目。

    2007年11月5日,谷歌公司正式向外界展示了这款名为Android的操作系统,并且在这天谷歌宣布建立一个全球性的联盟组织,该组织由34家手机制造商、软件开发商、电信运营商以及芯片制造商共同组成,并与84家硬件制造商、软件开发商及电信营运商组成开放手持设备联盟(Open Handset Alliance)来共同研发改良Android系统,这一联盟将支持谷歌发布的手机操作系统以及应用软件,Google以Apache免费开源许可证的授权方式,发布了Android的源代码。[3]

    2008年,在GoogleI/O大会上,谷歌提出了AndroidHAL架构图,在同年8月18号,Android获得了美国联邦通信委员会(FCC)的批准,在2008年9月,谷歌正式发布了Android 1.0系统,这也是Android系统最早的版本。

    2009年4月,谷歌正式推出了Android 1.5这款手机,从Android 1.5版本开始,谷歌开始将Android的版本以甜品的名字命名,Android 1.5命名为Cupcake(纸杯蛋糕)。该系统与Android 1.0相比有了很大的改进。

    2009年9月份,谷歌发布了Android 1.6的正式版,并且推出了搭载Android 1.6正式版的手机HTC Hero(G3),凭借着出色的外观设计以及全新的Android 1.6操作系统,HTC Hero(G3)成为当时全球最受欢迎的手机。Android 1.6也有一个有趣的甜品名称,它被称为Donut(甜甜圈)。

    2010年2月份,Linux内核开发者Greg Kroah-Hartman将Android的驱动程序从Linux内核“状态树”(“staging tree”)上除去,从此,Android与Linux开发主流将分道扬镳。在同年5月份,谷歌正式发布了Android 2.2操作系统。谷歌将Android 2.2操作系统命名为Froyo,翻译完名为冻酸奶。

    2010年10月份,谷歌宣布Android系统达到了第一个里程碑,即电子市场上获得官方数字认证的Android应用数量已经达到了10万个,Android系统的应用增长非常迅速。在2010年12月,谷歌正式发布了Android 2.3操作系统Gingerbread(姜饼)。

    2011年1月,谷歌称每日的Android设备新用户数量达到了30万部,到2011年7月,这个数字增长到55万部,而Android系统设备的用户总数达到了1.35亿,Android系统已经成为智能手机领域占有量最高的系统。

    2011年8月2日,Android手机已占据全球智能机市场48%的份额,并在亚太地区市场占据统治地位,终结了Symbian(塞班系统)的霸主地位,跃居全球第一。

    2011年9月份,Android系统的应用数目已经达到了48万,而在智能手机市场,Android系统的占有率已经达到了43%。继续在排在移动操作系统首位。谷歌将会发布全新的Android 4.0操作系统,这款系统被谷歌命名为Ice Cream Sandwich(冰激凌三明治)。

    2012年1月6日,谷歌Android Market已有10万开发者推出超过40万活跃的应用,大多数的应用程序为免费。Android Market应用程序商店目录在新年首周周末突破40万基准,距离突破30万应用仅4个月。在2011年早些时候,Android Market从20万增加到30万应用也花了四个月。[4]

    2013年11月1日,Android4.4正式发布,从具体功能上讲,Android4.4提供了各种实用小功能,新的Android系统更智能,添加更多的Emoji表情图案,UI的改进也更现代,如全新的HelloiOS7半透明效果。

    2015年27日,网络安全公司Zimperium研究人员警告,安卓(Android)存在“致命”安全漏洞,黑客发送一封彩信便能在用户毫不知情的情况下完全控制手机。

    2018年10月,谷歌表示,将于2018年12月6日停止Android系统中的Nearby Notifications(附近通知)服务,因为Android用户收到太多的附件商家推销信息的垃圾邮件。[5]

    2019年8月,谷歌宣布Android系统的重大改变,不仅换了全新的logo,命名方式也变了,今年的Android Q的正式名称是Android 10。

    1.3 Android的特性

    Android是一种以Linux为基础的开放源码操作系统,主要使用于便携设备。目前尚未有统一中文名称。Android操作系统最初由Andy Rubin开发,最初主要支持手机。2005年由Google收购注资,并组建开放手机联盟开发改良,逐渐扩展到平板电脑及其他领域上。Android的主要竞争对手是苹果公司的iOS以及RIM的Blackberry OS。2011年第一季度,Android在全球的市场份额首次超过塞班系统,跃居全球第一。 2011年11月数据,Android占据全球智能手机操作系统市场52.5%的份额,中国市场占有率为58%。操作简单,容易上手,相当智能,越来越人性化,机器众多选择性大,开源、免费应用多。

    • 应用框架,实现了组合的重用与替换
    • Dalvik虚拟机,专为移动设备优化
    • 集成的浏览器,基于开源的WebKit引擎
    • 优化的图形,由一个定制的2D图形库驱动,3D图形基于OpenGL ES 1.0规范(硬件加速可选)
    • 媒体支持,支持常用音频、视频以及图像格式(MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF)
    • GSM通话(依赖硬件)
    • 蓝牙,EDGE(增强型数据速率GSM演进技术),3G,以及Wifi(依赖硬件) • 丰富的开发环境,包括一个设备模拟器,测试工具,内存和性能分析,以及用于Eclipse IDE的一个插件 。

    1.开放性
    在优势方面,Android平台首先就是其开发性,开发的平台允许任何移动终端厂商加入到Android联盟中来。显著的开放性可以使其拥有更多的开发者,随着用户和应用的日益丰富,一个崭新的平台也将很快走向成熟。
    开发性对于Android的发展而言,有利于积累人气,这里的人气包括消费者和厂商,而对于消费者来讲,最大的受益正是丰富的软件资源。开放的平台也会带来更大竞争,如此一来,消费者将可以用更低的价位购得心仪的手机。

    2.丰富的软件性
    这一点还是与Android平台的开放性相关,由于Android的开放性,众多的厂商会推出千奇百怪,功能特色各具的多种产品。功能上的差异和特色,却不会影响到数据同步、甚至软件的兼容,如同从诺基亚Symbian风格手机一下改用苹果iPhone,同时还可将Symbian中优秀的软件带到iPhone上使用、联系人等资料更是可以方便地转移。

    3.方便开发
    Android平台提供给第三方开发商一个十分宽泛、自由的环境,不会受到各种条条框框的阻扰,可想而知,会有多少新颖别致的软件会诞生。但也有其两面性,血腥、暴力、情色方面的程序和游戏如何控制正是留给Android难题之一。

    4.Google应用
    在互联网的Google已经走过10年度历史,从搜索巨人到全面的互联网渗透,Google服务如地图、邮件、搜索等已经成为连接用户和互联网的重要纽带,而Android平台手机将无缝结合这些优秀的Google服务。

    1.4 Android的架构

    Android系统构架是安卓系统的体系结构,android的系统架构和其操作系统一样,采用了分层的架构,共分为四层,从高到低分别是Android应用层,Android应用框架层,Android系统运行库层和Linux内核层。 Android系统构架主要应用于ARM平台,但不仅限于ARM,通过编译控制,在X86、MAC等体系结构的机器上同样可以运行。

    1.应用层

    Android会同一系列核心应用程序包一起发布,该应用程序包包括email客户端,SMS短消息程序,日历,地图,浏览器,联系人管理程序等。它们一般都是使用Java进行编写。

    2.应用框架层

    开发人员也可以完全访问核心应用程序所使用的API框架。该应用程序的架构设计简化了组件的重用;任何一个应用程序都可以发布它的功能块并且任何其它的应用程序都可以使用其所发布的功能块(不过得遵循框架的安全性限制)。同样,该应用程序重用机制也使用户可以方便的替换程序组件。

    隐藏在每个应用后面的是一系列的服务和系统,其中包括:

    视图(Views),可以用来构建应用程序,它包括列表(lists),网格(grids),文本框(textBoxes),按钮(buttons),甚至可嵌入的web浏览器。

    内容提供器(ContentProviders)使得应用程序可以访问另一个应用程序的数据(如联系人数据库),或者共享它们自己的数据

    资源管理器(ResourceManager)提供非代码资源的访问,如本地字符串,图形,和布局文件(layoutfiles)。

    通知管理器(NotificationManager)使得应用程序可以在状态栏中显示自定义的提示信息。

    活动管理器(ActivityManager)用来管理应用程序生命周期并提供常用的导航回退功能。

    3.系统运行库层

    1. 程序库

    Android包含一些C/C++库,这些库能被Android系统中不同的组件使用。它们通过Android应用程序框架为开发者提供服务。以下是一些核心库:

    系统C库——一个从BSD继承来的标准C系统函数库(libc),它是专门为基于embeddedlinux的设备定制的。

    媒体库——基于PacketVideoopencore;该库支持多种常用的音频、视频格式回放和录制,同时支持静态图像文件。编码格式包括MPEG4,H.264,MP3,AAC,AMR,JPG,PNG。

    SurfaceManager——对显示子系统的管理,并且为多个应用程序提供了2D和3D图层的无缝融合。

    LibWebCore——一个最新的web浏览器引擎用,支持Android浏览器和一个可嵌入的web视图。

    SGL——底层的2D图形引擎

    3Dlibraries——基于OpenGLES1.0APIs实现;该库可以使用硬件3D加速(如果可用)或者使用高度优化的3D软加速。

    FreeType——位图(bitmap)和矢量(vector)字体显示。

    SQLite——一个对于所有应用程序可用,功能强劲的轻型关系型数据库引擎。

    1. Android运行库

    Android包括了一个核心库,该核心库提供了JAVA编程语言核心库的大多数功能。

    每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例。Dalvik被设计成一个设备可以同时高效地运行多个虚拟系统。Dalvik虚拟机执行(.dex)的Dalvik可执行文件,该格式文件针对小内存使用做了优化。同时虚拟机是基于寄存器的,所有的类都经由JAVA编译器编译,然后通过SDK中的“dx”工具转化成.dex格式由虚拟机执行。

    Dalvik虚拟机依赖于linux内核的一些功能,比如线程机制和底层内存管理机制。

    4.Linux内核层

    Android的核心系统服务依赖于Linux2.6内核,如安全性,内存管理,进程管理,网络协议栈和驱动模型。Linux内核也同时作为硬件和软件栈之间的抽象层。

    1.5 Android的应用

    1、智能手机
    据3G门户发布的《2011年手机体验白皮书》指出:安卓系统2010年出现井喷式增长,未来安卓系统成为智能手机的主流操作系统。

    安卓系统特有的开源型,使得智能手机生产厂商在使用该平台时,不需要支付任何费用,在很大程度上降低了生产成本,使得智能手机的门槛降低。目前已有多款千元入门级安卓系统智能机的上市,采用最新的安卓操作系统所有移动互联网应用畅通无阻。采用安卓系统的智能手机性价比高,满足了大多数国民的要求,因此在国内具有良好的发展前景。

    安卓手机支持WIFI、3G、WAP等多种互联网接入方式,能够轻松接入移动互联网,这一功能已成为最重要的融合应用终端。安卓成熟的技术可以应用在绝大多数的硬件平台上,实现华丽界面与简单轻松操作的完美结合,深受广大用户的喜欢。安卓终端普遍具有备触摸屏、高级图形显示和上网功能,与苹果等其他智能手机相比,具有更强大的搜索功能,用户能够用安卓系统查看电子邮件、搜索网址和观看视频节目等,应用非常广泛,是一款融入全部Web应用的强大平台。可以说,安卓系统的个性化和融合应用,跟上了移动互联网迅猛发展的潮流,两者将相辅相成。

    展开全文
  • 代码为本人的安卓毕业设计代码,我用的是环境是jdk6的版本,前端使用的是eclipse,后台使用面向对象程序设计语言JAVA进行应用程序的开发;使用Mysql作为本系统的后台数据库。 作物助手App,是以android系统手机为...
  • 安卓管理系统开发

    千次阅读 2020-08-02 11:44:53
    在设计系统时,应先清楚知道自己系统的方向以及各功能模块的功能实现,画好结构图是接下来代码编程的基础,使自己的逻辑思维清晰。 业务流程图 此流程图分别有管理员模块以及学生用户模块,根据选出来的大模块后再...

    在这里我自己是用eclise写的是图书馆借书管理系统,首先是需要此系统结构图以及所需要建立的工程项目的目录。
    功能结构图
    在设计系统时,应先清楚知道自己系统的方向以及各功能模块的功能实现,画好结构图是接下来代码编程的基础,使自己的逻辑思维清晰。
    业务流程图
    此流程图分别有管理员模块以及学生用户模块,根据选出来的大模块后再细分大模块应该具备的功能,例如在管理员模块,管理员能实现注册学生用户登陆信息以及学生基本信息,从而实现学生用户登陆以及对自己信息的操作、借书还书等功能,流程图如下:
    管理员模块
    在这里插入图片描述
    普通用户模块
    在这里插入图片描述
    MainActivity.java是用于登陆, 名称可以改
    adapter包是此系统需要用到的适配器模块
    bena包是把需要的用到的变量封装打包
    db包是用来建立数据库以及数据的实现
    在这里插入图片描述在这里插入图片描述
    下面是对此系统主要模块代码完整的代码
    MainActivity.java
    登陆模块
    在这里插入图片描述

    在这里插入图片描述
    这里是我自己设置的账号密码(账号:lugengjie 密码:123456),输入正确的话会跳转到管理信息界面,因为我认为只有我一个人才能操作此系统的内部数据

    接下来是管理图书信息(功能分对学生信息管理、对学生基本信息的管理以及图书数量、种类的增加功能),我挑了一个模块(对学生登录信息的操作)来讲,其他都大同小异
    在这里插入图片描述点击(对学生登录信息的操作)按钮,按钮跳转代码为:
    在这里插入图片描述
    来到操作界面
    在这里插入图片描述
    在这里插入图片描述
    增加学生登录信息,登录信息有有户名以及登录密码,一般只设置用户名为学号,密码统一给一个固定的密码,后面由学生登录自己的账号再根据自己的情况修改自己的密码,添加信息后应该设置一个提交信息按钮(提交后跳转到学生信息操作界面),在此之前我们也应该先创建一个存储学生登录信息的数据库
    创建数据库代码为:在这里插入图片描述
    如过跳转成功,你可以吧数据库导出来看看里面是否有数据
    找到:DDMS->data->data->找到managebook(这里因为我的工程名为managebook)->将lgj.dbdao导出来
    在这里插入图片描述
    接下来是把数据库内容显示到界面,管理员可查看学生用户登录信息
    需要添加一个listview、一个提交按钮,在这里插入图片描述
    在这里插入图片描述
    同时还需要新建一个ui界面(仅Ui界面就行)
    在这里插入图片描述
    完整代码如下:

    package com.example.managebooks;
    
    import java.util.List;
    
    import bena.User;
    
    import db.UserBean;
    import adapter.UserAdapter;
    import android.os.Bundle;
    import android.app.Activity;
    import android.app.AlertDialog;
    import android.content.DialogInterface;
    import android.content.Intent;
    import android.view.Menu;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.AdapterView;
    import android.widget.AdapterView.OnItemClickListener;
    import android.widget.Button;
    import android.widget.ListView;
    import android.widget.Toast;
    
    public class UserViewActivity extends Activity {
    ListView listview;
    List<User> userlist;
    UserBean userdao;
    Button backbtn;
     
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_user_view);
    		listview=(ListView)findViewById(R.id.listView1);
    		backbtn=(Button)findViewById(R.id.button1);
    		backbtn.setOnClickListener(new OnClickListener(){
    			@Override
    			public void onClick(View arg0) {
    				// TODO 自动生成的方法存根
    				Intent intent=new Intent(UserViewActivity.this,OperateUserActivity.class);
    				Toast.makeText(getApplicationContext(), "跳转到用户管理页面",Toast.LENGTH_LONG).show();
    				startActivity(intent);
    				}
    			});  }
    	@Override
    	public boolean onCreateOptionsMenu(Menu menu) {
    		// Inflate the menu; this adds items to the action bar if it is present.
    		getMenuInflater().inflate(R.menu.user_view, menu);
    		return true;
    	}
    	
      protected void onStart(){
    	  super.onStart();
    	  getData();
    	  UserAdapter myAdapter=new UserAdapter(this,R.layout.userlist,userlist);
    	  listview.setAdapter(myAdapter);
    	  listview.setOnItemClickListener(new OnItemClickListener(){
    		  @Override
    		  public void onItemClick(AdapterView<?> arg0,View arg1,int arg2,long arg3) {
    				// TODO 自动生成的方法存根
    				User user=(User)arg0.getItemAtPosition(arg2);
    				final String name=user.getUsername();
    				final String pass=user.getPassword();
    				AlertDialog.Builder builder=new AlertDialog.Builder(UserViewActivity.this);
    				builder.setTitle("确定对该对话框进行操作?");
    				builder.setPositiveButton("修改", new DialogInterface.OnClickListener() {
    					public void onClick(DialogInterface dialog, int whichButton) {
    						Intent intent=new Intent();
    						Bundle bundel=new Bundle();
    						bundel.putString("name", name);
    						bundel.putString("pass", pass);
    						intent.setClass(getApplicationContext(),UpdateUserActivity.class);
    						intent.putExtras(bundel);
    						startActivity(intent);
    					}});
    				
    				builder.setNegativeButton("删除", new DialogInterface.OnClickListener() {
    					public void onClick(DialogInterface dialog, int whichButton) {
    						User user=new User(name,pass);
    						if(user.getUsername()==null){
    							UserBean del=new UserBean(UserViewActivity.this);
    							del.delete();
    							Toast.makeText(getApplicationContext(), "空数删除成功", Toast.LENGTH_LONG).show();
    						}
    						UserBean del=new UserBean(UserViewActivity.this);
    						del.delete(user);
    						Toast.makeText(getApplicationContext(), "数据删除成功", Toast.LENGTH_LONG).show();
    						onStart();
    					}});
    				builder.show();
    			}});
    	}
    private void getData() {
    	// TODO 自动生成的方法存根
    	userdao=new UserBean(this);
    	userlist=userdao.findAll();
    }
    }
    

    查看数据所用方法代码,此方法封装在UserBean类里面

    public List<User> findAll(){
    		List<User> users =null;
    		SQLiteDatabase db=help.getReadableDatabase();
    		if(db.isOpen()){
    		Cursor cursor=db.query("user",null,null,null,null,null,null);
    		users=new ArrayList<User>();
    		while(cursor.moveToNext()){
    			User user=new User();
    			String name=cursor.getString(cursor.getColumnIndex("name"));
    			user.setUsername(name);
    			String pass=cursor.getString(cursor.getColumnIndex("password"));
    			user.setPassword(pass);
    			users.add(user);
    		}
    		cursor.close();
    		db.close();
    	}
    	return users;
    	}
    

    运行结果如下
    在这里插入图片描述
    总结:到此为止基本就已经实现一个模块的编程,剩下的模块需要自己设计以及算法的设计,通过此次学习,也明白重在过程而不是结果,要首尾连接呼应才能学到自己想要的知识,很多人没有自己实际操作,结果一问三不知,可想而知,量的积累有多重要。

    展开全文
  • Android 是一个开源的,基于 Linux 的移动设备操作系统,如智能手机和平板电脑。Android 是由谷歌及其他公司带领的开放手机联盟开发的。 Android 提供了一个统一的应用程序开发方法,这意味着开发人员只需要为 ...
  • Android Studio阅读源代码 但凡大阅读大工程源代码在windows 端大都会想起一个 n多年没有更新的工具 SourceInset,说实话在阅读kernel和uboot等大工程时未必真的那么好用,但是目前无可替代。建立索引后速度还...

    Android Studio阅读源代码

        但凡大阅读大工程源代码在windows 端大都会想起一个 n多年没有更新的工具 SourceInset,说实话在阅读kernel和uboot等大工程时未必真的那么好用,但是目前无可替代。建立索引后速度还算可以,如果阅读Android源代码哪怕是老版本的 这个工具会让你产生幻觉:我的电脑是不是崩了。好吧 我们用Android Studio就是你了。

    1、首先我们要做的是编译android源码:这一部分可以参考一下下面的链接,注意被了。

    https://source.android.com/source/initializing

    2、

    1)在Android源码目录下 使用命令 mmm development/tools/idegen/

    这行命令的意思是编译idegen这个项目,生成idegen.jar文件.可被用作快速的读源代码。

    但是也有可能被提示:

    No command 'mmm' found, did you mean:
     Command 'mm' from package 'multimail' (universe)
     Command 'vmm' from package 'vmm' (universe)
     Command 'mmv' from package 'mmv' (universe)
     Command 'mgm' from package 'mgm' (universe)
     Command 'mmg' from package 'mkvtoolnix-gui' (universe)
     Command 'mmd' from package 'mtools' (main)
     Command 'rmm' from package 'nmh' (universe)
     Command 'rmm' from package 'mailutils-mh' (universe)
     Command 'mwm' from package 'mwm' (universe)

    2)

    使用:. setenv 之后再次使用mmm命令

    再使用 sh ./development/tools/idegen/idegen.sh 这里需要等待一会时间;

    果真跟很多帖子一样出现了错误:

    Exception in thread "main" java.io.FileNotFoundException: ./out/target/product/tiny4412/obj/GYP/shared_intermediates/res.java (Is a directory)

    ./out/target/product/xxxxxx/obj/GYP/shared_intermediates/res.java改为

    ./out/target/product/xxxxxx/obj/GYP/shared_intermediates/res.j

    命令为:

    mv ./out/target/product/xxxxxx/obj/GYP/shared_intermediates/res.java ./out/target/product/xxxxxx/obj/GYP/shared_intermediates/res.j
    s
    命令中 xxxxx对应你自己开发研发设备的名称环境等

    之后再次执行:sh ./development/tools/idegen/idegen.sh

    截止到此处 源代码中生成了2个文件:android.iml, android.ipr

    将这两个文件拷贝window下解压的Android源码目录。


    接下来时间比较漫长是个建立链接的过程。

    3、为了防止关联错误,最好自己指定自己想要关联的库操作如下:




    由衷感谢同事提供的韦老师简短的视频,事半功倍。

    展开全文
  • 个人写的股票app 有简单的功能实现,代码简单 易懂 适合新手下载。有安卓基础的人都可以看看 可以直接使用
  • 安卓移动开发课设,无线点餐系统,拥有客户端和服务器端的完整代码可以直接运行,服务器端的mysql数据库也完整给出了,课程设计的报告也在里面。
  • 转自迅为开发板安卓JNI开发指南硬件平台:迅为iTOP-412开发板B站搜索:北京迅为,免费观看同步视频教程接下来我们来仿写一个这个方法,我们已打开 led 灯代码为例。1. 我们先在 MainActivity 里面实现三个方法,分别...
  • 一款android安卓系统中的视频播放器Java代码,我这里没有安卓环境,代码无法调试,没有抓到截图,看上去代码挺完整,可以为学习Android应用开发的朋友提供一份参考。
  • Android 是一个开源的,基于 Linux 的移动设备操作系统,如智能手机和平板电脑。Android 是由谷歌及其他公司带领的开放手机联盟开发的。 Android 提供了一个统一的应用程序开发方法,这意味着开发人员只需要为 ...
  • 安卓Android_开发环境搭建、配置(基于Windows操作系统、MyEclipse、安卓Android 安卓android手机游戏设计达人讲座 安卓Android4.2.x应用环境搭建 安卓Android编程Android指南程序员入门中文版 安卓Android从入门到...
  • 云台控制系统是本人休息时间做的一款Android APP 具体功能为用户操作UI界面,进行上下左右操作,功能设置操作,将消息通过wifi传输给硬件,硬件通过串口或者USB接口将对应的消息传输给计算机,或者控制执行系统的...
  • BZPP_Eclipse-ADT-AndroidSDK 安卓八字排盘系统 开发环境:Ubuntu16.04 Eclipse ADT23.0.7 AndroidSDK 支持安卓版本:Android4.3.0以上版本 使用网上计算节气的算法,来进行定位干支
  • 在技术方面上,这次设计是基于Android平台的,用Java语言作为开发语言进行软件的开发,使用Android studio作为软件开发工具进行界面的设计及相关代码的编写,实现登录注册系统、点餐和管理菜单等功能,使用MySQL...
  • 上述两个步骤完成后把相应的文件替换至安卓源码里,所在目录: frameworks/base/services/java/com/android/server/SystemServer.java frameworks/base/services/core/java/com/android/server/LedService.java ...
  • 以前做视频系统的时候,发现很多电视盒子(都是安卓系统)跟摄像头之间,存在很大的兼容问题。同样的摄像头在不同盒子上,分辨率、帧率都会有很大差异。这让人情何以堪?为了排除是代码问题,吾专门开发了一个帧率...
  • 那么也许对于这种情况可能只有自己定制rom刷机包才能解决问题,但是由于我自己不熟悉安卓系统,虽然装好了android sdk及jdk等开发环境工具,寻找这串代码也是异常艰难。也只能推测可能会在锁屏分区,具体位置模糊不...
  • Auto.js是利用安卓系统的“辅助功能”实现类似于按键精灵一样,可以通过代码模拟一系列界面动作的辅助工作。 与“按键精灵”不同的是,它的模拟动作并不是简单的使用在界面定坐标点来实现,而是类似与win一般,找...
  • 可是都要非常麻烦,还涉及底层开发,什么.mk文件或者需要获得跟系统一样的权限!可是这都不是很难,但是却不需要这样去做!我用几行代码也能做到系统重启…… try { Process localProcess = Runtime.getRuntime...
  • 安卓10源码开发定制(22)使用jadx反编译工具查看aidl文件实现代码 文章首发微信公众号:QDROID88888,如果感兴趣可以关注一下公众号。 一、安卓源码中aidl文件介绍 在 Android系统源码中经常看到很多.aidl后缀的文件...
  • 上面的代码有一个NDK开发的小技巧在开发C/C++的共享库前可以使用具有相同和相近功能的Java函数进行替代在代码第17行本应该调用共享库的add)函数但为了便于开发和调试在代码第25行到第27行使用Java代码开发了一个功能...
  • 本章主要讲述了安卓系统移植和驱动开发,但重点又在于驱动开发,开始先讲了安卓在现代社会的重要性,然后强调了安卓的系统架构:第一层:liunx内核,主要包括驱动程序以及管理内存、进程、电源等资源的程序;...
  • 安卓2.3源代码

    2012-04-10 16:03:50
    安卓2.3源代码,让你更加了解安卓系统,有助于移动设备上的开发与研究!
  • 安卓代码核心结构

    2019-06-27 21:26:39
    在这个层次中有我们熟悉的应用程序,也是我安卓系统自带的一些应用程序,比如说我们的通讯录,比如说我们的电话本,比如说我们短信,这都是我们系统自带的一些运用程序,但是除此之外还可以自己开发一些运用程序放到...
  • 笔者在大二的时候曾经完成过学校的课程设计基于安卓系统的服药监督系统,我认为这段经历告诉我有时候一个成熟的软件不仅需要很强的代码能力,更需要一些前期的准备工作和中间的工作(可行性研究、设计说明书、总体...
  • 安卓* 系统级 Java*/C++ 代码调试

    千次阅读 2014-03-11 18:27:32
    1 简介 应用开发人员当前可通过安卓* SDK 来设计和构建安卓应用项目,并使用 Eclipse* 进行调试。... 本文介绍了如何使用 Eclipse 来调试安卓系统级 Java/C++ 代码。 2 安装 2.1 安装 JDK 通过下列链接
  • 在初学安卓时,发现大神的代码中MainActivity都是继承的Activity,但是我写的却是继承ActionbarActivity。 后来才发现原来是版本问题。安卓3.0以下的系统不支持activity提供的actionbar所以在选择最低版本时如果...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,462
精华内容 584
关键字:

安卓系统代码开发