导航:首页 > 源码编译 > 安卓源码类型

安卓源码类型

发布时间:2022-06-27 09:16:21

android编译和运行在手机上使用的系统源码版本各是什么版本

如果app是和android系统一起进行编译,如果想让app的源码保持一套,却能够同时在android4.1和android4.2下进行编译。如果app源码与android系统的版本无关,那么,不存在问题。
但,如果app的实现代码与所依赖的framework的版本强相关,譬如,Location相关的API,在android4.1和android4.2上的差异比较大。应用如果是采用4.2的API来实现的,在配合android4.1系统编译时就会报错。此时,可以采用在Android.mk文件中,根据PLATFORM_SDK_VERSION的值,在编译时决定要编入哪些java文件,源码中同时保留针对android4.1和android4.2的特有实现。
源码目录为:

Ⅱ APP的源代码是什么意思(安卓的)

开源(Open Source,开放源码)被非盈利软件组织(美国的Open Source Initiative协会)注册为认证标记,并对其进行了正式的定义,用于描述那些源码可以被公众使用的软件,并且此软件的使用、修改和发行也不受许可证的限制。

安卓的开源就是开放源代码,安卓2.x的内核是linux2.6.方便软件商开发,多数软件可以免费,手机商不用买系统版权,降低成本和零售价.这些都是对用户直接或间接的好处.

Ⅲ android系统源码有多少行

大概有10G的源代码,一Byte一个字符,也就是说有超过100亿个字符,每行按标准80字符来算的话,超过1亿行。开放的WinXP系统有2亿行,从数量级上来看的话,应该差不多。Android 4.4,是由Google公司制作和研发的代号为KitKat的手机操作系统,于北京时间2013年9月4日凌晨对外公布了该Android新版本的名称,为Android 4.4(代号 KitKat 奇巧)。据悉,该代号来自雀巢的KitKat巧克力。"Kit Kat"原本是雀巢公司的一款巧克力名称。谷歌表示,他们非常感谢雀巢授权使用该名称,但使用的时候会将中间的空格去掉。Android 4.4 KitKat针对RAM占用进行了优化,甚至可以在一些仅有512MB RAM的老款手机上流畅运行。它也进一步优化了系统在低配硬件上的运行效果, 支持内核同页合并 KSM,zRAM 交换,似乎是为了更好地在众多智能穿戴设备上运行。
是指sdk的源码,还是android操作系统的源码,不过都有10G左右,另外sdk的源码是用git管理的,一次下载后,用git check就可以切换到各个版本。Android SDK是用于开发Android上JAVA应用程序的,另外发布Android NDK,可以添加一些C语言写的链接库,至于Linux代码,可以在Android源代码中找到(SDK程序中只有编译好的测试映像)。应用程序开发用不到Linux代码(搞嵌入式开发才会用到,而SDK不负责底层开发)。

Ⅳ android源码 android系统源码 到底有什么区别

sdk只是开发工具包,这个就是我们用到的api的源码。但是,这个sdk源码为何能跑得起来?它也是依赖完整的android系统的。android系统源码是基于linux内核上的一套解决方案,针对ARM平台的做的各种适合嵌入式设备的一套代码。举个例子,你如果在windows上编程,用到它的系统api,这些api存在于一些dll中,这个dll就是你的开发所需的东东,类似android sdk,而这个dll之所以能跑起来,完全也是依赖windows系统的,windows系统源码有几千万行代码,android系统源码也不会少。

Ⅳ 求安卓2.3源代码

一般来说,由开源社区开发并发行的开源软件,即我们称之为“开源项目(Open Source Program)”的开源软件,一般都是“免费开源软件”;而由企业(发行商,Enterprise or Distributor)进行二次开发并发行的开源软件,即我们称之为“开源产品(Open Source Program)”的开源软件,一般是“付费开源软件”。

必须指出,开源社区开发和发行的开源软件,首先要体现自由/开源软件的价值观:开放、共享、协同、自由、无偿、选择;所谓开源软件是“利他主义”(或“共产主义”,Altruism or Communism)与“利己主义”(或“资本主义”,Capitalism)矛盾的对立和统一(或平衡),即体现自由开源软件价值观与配置商业服务模式的平衡;企业开发和发行的开源软件,是在继承社区开发和发行的开源软件(价值观、开放源代码、开源许可协议)的基础上,进行再开发(二次开发),并采取相应的商业模式;商业模式是开源软件得以持续发展,实行规模化、产业化的必要条件,开源软件的商业模式是一种以服务为主要内容、实施低价销售战略的模式。

开源软件商业版是基于社区版发展起来的,开源软件商业版与社区版的关系,在实践中可以归纳为如下各种主要类型:

1,双授权模式

如MySQL。MySQL(社区版)执行自由/开源软件许可协议(GPLv3),其源代码开放,人们可从网上免费下载;MySQL(商业版)是基于MySQL(社区版)再开发的,软件授权模式发生了变化,MySQL(商业版)是要收费的,或通过提供服务来收费。

又如Apache。Apache(社区、基金会)是一个非盈利性组织,Apache软件基金会只向社会提供开源版本(可在网上免费下载),有一些企业如“春之源(Spring Source)”提供支持Apache服务或商业版本,但Apache基金会规定这些企业不能随意使用Apache商标。如果某互联网网站下载Apache软件,安装到服务器(硬件)中,以建立网络/应用服务器系统时,Apache基金会允许他们称为Apache网络/应用服务器,并在其网站上对外提及“Powered by Apache”。

还有如SugarCRM,也采用双授权模式,其开放的软件(占80%)不收费,不开放的软件(占20%)要收费;另外,如Open Office.org与Star Office的关系,也可归纳为双授权模式。

2,对开源软件社区版进行工程化、产品化处理(二次开发)

如各种版本的Linux操作系统(产品)。一般由Linux发行商基于Linux(社区版),进行后续的工程化处理或再开发,完成或发布Linux(商业版或产品版);二次开发的工程化技术包含:① 优化内核,发行商发布的内核源代码为Linux社区发布的“主干(Official)源代码”,允许与其实际执行而不公布的源代码(即发行商的“分支源代码”)有3-5%的偏差(这是通过测试和经验来获得的),②兼容性测试和质量认证,③ 对各种软件模块(在内核中约有1500个左右软件模块)的不同组合或配置(以提高效率),④ 回归移植或降级处理(Bug Fix,Patch, back porting),⑤ 专用工具和插件,⑥ 本地化需求功能。社区开发的开源软件(开源项目)是原创性技术,企业后续开发并完成的开源软件(开源产品),是开源技术的成熟化过程或产品化过程(二次开发以促使开源软件趋于稳定、优质、高效、成熟)。企业发行的Linux操作系统软件(产品),继承并开放由社区开发的源代码,但企业开发的工程化技术是不开放的,含有自主创新因素和自主知识产权,这时Linux操作系统作为成型产品的整体软件是要收费的,或通过服务来收费。

Red Hat的一位开源专家曾说:Red Hat Linux有两种版本,一种是针对“1亿人”的免费版本(或收1元成本费的基本免费版本),这是为大多数人免费提供的社区版,对这种版本,Red Hat不提供Bug Fix、Patch,也不向用户提供支持、服务;另一种是针对“100个人”(这是指企业用户),每户收费“100万元”(向企业提供若干套收费的版本,并向用户提供Bug Fix、Patch,提供支持和服务)。

3,在开源软件(社区版)上采取附加软件模块的方式

如国内开发的“银河麒麟”操作系统,它是在Free BSD(开源软件)基础上再开发的(自行开发的主要是安全软件,约占整个软件的不足20%),等于在80%的开源软件上附加上20%的闭源软件模块。这样做的结果,连美国国家安全局(NSA)都认为,“银河麒麟的研发使美国向中国军网进行渗透变得无效”。

顺便指出,基于开源软件(社区版),采用附加专用软件模块方式,在二次开发后形成的整体软件中,附加专用模块的构成不得大于20%,这时整体软件才还可称为“开源软件”。

4,定制模式

如Ubuntu。Ubuntu永远是免费的,用户可任意下载、自由使用和修改(这是指其发布的社区版);Ubuntu也有商业版,这是指由Ubuntu的发行商Canonical为用户定制特别版Ubuntu,Canonical并向用户提供支持和服务,这是要收费的。举例来说,Ubuntu支持服务的收费标准为:桌面(每套)9ⅹ5,250美元;24ⅹ7,900美元;服务器(每套)9ⅹ5,750美元;24ⅹ7,2750美元。

当然,如Linux内核(Kernel)等一些自由软件,是没有商业模式的。

在如上所述的基础上,我要回答一些人对开源软件认识的思想误区(谈一谈开源软件的是与非):

有人说:Linux都是免费的。不对!如上所述:Linux有免费的和付费的两类;对其他开源软件也如同Linux。

有人说:Linux的缺点是不为用户提供支持和服务。不完全对。只有免费的社区版是如此;而对付费的商业版(或企业版、产品版),Linux发行商要为用户提供在产品使用寿命周期内全程的支持和服务。

有人说:开源软件不应是商业软件,不应具商业模式。不对!上面说的很清楚了,开源软件可以配置商业服务模式(只有社区版免费的开源软件没有商业模式)。

有人问:免费与付费的开源软件在功能与服务上有什么区别?其实,免费的开源软件一般都是原创性的社区版,开源软件(社区版)的性能尚不够成熟,也不能完全满足某些重要用户的特殊需求,它可以免费获得,但得不到开发者的技术支持和相应服务;而收费的开源软件一般都是企业(发行商)后续开发的商业版(或产品版),此时性能趋于成熟(经工程化开发),能更好满足某些用户的需求(做好定制化开发工作),这时用户虽然要付费,但发行商将为用户提供在产品使用寿命周期内全程的技术支持和相应服务。

有人说:开源软件的开发无国界,是全球志愿者集体开发、合作创新的产物,不能把它限制在某一个企业或某一个国家来进行自主开发或自主创新。其实这说对了一半。开源社区对开源软件进行的原创性开发,是适用于这种说法的,说的完全对!但要使开源软件产品化,趋于成熟,更好地满足用户需求,还要进行工程化、定制化的后续开发工作,这些开发工作一般由企业(或发行商)来承担,这时的二次开发工作当然体现自主开发创新的特点。对于企业(发行商)最终推出的更为完整的、更加成熟的、产品化的开源软件版本(并配置商业服务模式),则可以称之为某企业的版本(并冠以其商标),也可称之为某地、某国的版本,所以,如果说到这种版本的“国产化”,我想也是可以的。

有人说:开源软件既要体现自由软件的价值观,又要配置商业模式,这是不可调和的矛盾,只能取其一,不能合其二。我要说的是,请你体会一下上面谈到的“开源软件是‘利他主义’与‘利己主义’对立统一(平衡)的产物”这句哲学语言的深刻含义,再看一下上面所列的开源软件社区版与商业版关系的各种类型,这时是否可以解答你的疑惑,而得出这样的结论:不搞极端,做好统一或平衡是完全可能的。

关于开源和微软的操作系统哪个安全的问题,现摘要5月12日《华盛顿时报》透露的9月30日美国国会听证会的有关消息,就一目了然了。《华盛顿时报》发表的署名文章,题目是《中国阻止美国发动网络战争》,文中透露美国政府网络安全专家、国家情报及美国战略司令部顾问凯文·G·科尔曼在美国国会(美中经济与安全评估委员会)听证会上的一些证词,科尔曼说:“美国过去一直利用中国军网和政府网络配备脆弱的操作系统(比如说微软的系统)的服务器的机会进行渗透,自从中国研发了名为银河麒麟(Kylin)这个更加安全的操作系统并于2007年服役后,该系统强化了中国关键的服务器,使美国军方和情报机构再也无法实行渗透,致使美国网络防卫能力无效!”

当然,我在这里也要指出,如果只是配置完全开放、透明的开源操作系统软件(社区版),也不足以保证我们网络的安全;网络安全呼唤能将自主创新包含于其中的开源软件。

系统方面 不用向谷歌申请 好像

Ⅵ 安卓的源代码是什么

就是你开发软件的时候写的代码啊,你找一下你的eclipse的WorkSpace(工作空间),代码一般在这个文件夹里面的

Ⅶ android源码里有哪些比较好的算法或框架推荐

Android中对于图形界面以及多媒体的相关操作比较容易实现。而且对于大多数
手机
用户来说,他们主要也就是根据这些方面的功能来对系统那个进行修改。我们可以通过本文介绍的Android多媒体框架的源码解读,来具体分析一下这方面的基本知识。
Android多媒体框架的代码在以下目录中:external/opencore/。这个目录是Android多媒体框架的根目录,其中包含的子目录如下所示:
* android:这里面是一个上层的库,它基于PVPlayer和PVAuthor的SDK实现了一个为Android使用的Player和Author。
* baselibs:包含数据结构和线程安全等内容的底层库
* codecs_v2:这是一个内容较多的库,主要包含编解码的实现,以及一个OpenMAX的实现
* engines:包含PVPlayer和PVAuthor引擎的实现
* extern_libs_v2:包含了khronos的OpenMAX的头文件
* fileformats:文件格式的据具体解析(parser)类
* nodes:编解码和文件解析的各个node类。
* oscl:操作系统兼容库
* pvmi: 输入输出控制的抽象接口
* protocols:主要是与网络相关的RTSP、RTP、HTTP等协议的相关内容
* pvcommon:pvcommon库文件的Android.mk文件,没有源文件。
* pvplayer:pvplayer库文件的Android.mk文件,没有源文件。
* pvauthor:pvauthor库文件的Android.mk文件,没有源文件。
* tools_v2:编译工具以及一些可注册的模块。
Splitter的定义与初始化
以wav的splitter为例,在fileformats目录下有解析wav文件格式的pvwavfileparser.cpp文件,在nodes目录下有pvmf_wavffparser_factory.cpp,pvmf_wavffparser_node.h, pvmf_wavffparser_port.h等文件。
我们由底往上看,vwavfileparser.cpp中的PV_Wav_Parser类有InitWavParser(),GetPCMData(),RetrieveFileInfo()等解析wav格式的成员函数,此类应该就是最终的解析类。我们搜索PV_Wav_Parser类被用到的地方可知,在PVMFWAVFFParserNode类中有PV_Wav_Parser的一个指针成员变量。
再搜索可知,PVMFWAVFFParserNode类是通过PVMFWAVFFParserNodeFactory的CreatePVMFWAVFFParserNode()成员函数生成的。而CreatePVMFWAVFFParserNode()函数是在PVPlayerNodeRegistry::PVPlayerNodeRegistry()类构造函数中通过PVPlayerNodeInfo类被注册到Oscl_Vector<PVPlayerNodeInfo, OsclMemAllocator> 的vector中,在这个构造函数中,AMR,mp3等node也是同样被注册的。
由上可知,Android多媒体框架中对splitter的管理也是与ffmpeg等类似,都是在框架的初始化时注册的,只不过Opencore注册的是每个splitter的factory函数。
综述一下splitter的定义与初始化过程:
每个splitter都在fileformats目录下有个对应的子目录,其下有各自的解析类。
每个splitter都在nodes目录下有关对应的子目录,其下有各自的统一接口的node类和node factory类。
播放引擎PVPlayerEngine类中有PVPlayerNodeRegistry iPlayerNodeRegistry成员变量。
在PVPlayerNodeRegistry的构造函数中,将 AMR, AAC, MP3等splitter的输入与输出类型标示和node factory类中的create node与release delete接口通过PVPlayerNodeInfo类push到Oscl_Vector<PVPlayerNodeInfo, OsclMemAllocator> iType成员变量中。
当前Splitter的匹配过程
PVMFStatus PVPlayerNodeRegistry::QueryRegistry(PVMFFormatType& aInputType, PVMFFormatType& aOutputType, Oscl_Vector<PVUuid, OsclMemAllocator>& aUuids)函数的功能是根据输入类型和输出类型,在已注册的node vector中寻找是否有匹配的node,有的话传回其唯一识别标识PVUuid。
从QueryRegistry这个函数至底向上搜索可得到,在android中splitter的匹配过程如下:
android_media_MediaPlayer.cpp之中定义了一个JNINativeMethod(JAVA本地调用方法)类型的数组gMethods,供java代码中调用MultiPlayer类的setDataSource成员函数时找到对应的c++函数
1.{"setDataSource", "(Ljava/lang/String;)V", (void *)
android_media_MediaPlayer_setDataSource},
2.static void android_media_MediaPlayer_setDataSource
(JNIEnv *env, jobject thiz, jstring path)
此函数中先得到当前的MediaPlayer实例,然后调用其setDataSource函数,传入路径
3.status_t MediaPlayer::setDataSource(const char *url)
此函数通过调getMediaPlayerService()先得到当前的MediaPlayerService, const sp<IMediaPlayerService>& service(getMediaPlayerService());
然后新建一个IMediaPlayer变量, sp<IMediaPlayer> player(service->create(getpid(), this, fd, offset, length));
在sp<IMediaPlayer> MediaPlayerService::create(pid_t pid, const sp<IMediaPlayerClient>& client, const char* url)中
调status_t MediaPlayerService::Client::setDataSource(const char *url)函数,Client是MediaPlayerService的一个内部类。
在MediaPlayerService::Client::setDataSource中,调sp<MediaPlayerBase> MediaPlayerService::Client::createPlayer(player_type playerType)
生成一个继承自MediaPlayerBase的PVPlayer实例。

Ⅷ 编译Android源码和内核源码的区别

Android源码编译之后生成的是ramdisk.img、system.img和userdata.img。而内核源码编译完成之后生成的是ZImage。在一般情况下Android源码是不带有内核源码的,但是带有一个镜像,这样在编译完Android源码之后就可以模拟器启动了,如果要更换系统的内核,此时将高版本的内核源码进行编译生成ZImage然后替换Android系统的的镜像。这样使用模拟器启动之后就可以查看内核是否已经被刷新。
请注意,android源码和kernel源码是分开下载的

编译android源码
进入source目录下,执行make 即可。
编译完成后,可以在源码目录的out/target/proct/generic/目录下看到编译好的ramdisk.img、system.img和userdata.img了。

编译内核源码
新建Kernel/goldfish,在这个目录下进行编译

Ⅸ 如何获取android源代码

当前的Android代码托管在两个方:https://github.com/android 和https://android.googlesource.com之前在 android.git.kernel.org上也有托管,不过现在重定向到了https://android.googlesource.com好在都支持git访问。

google提供的repo工具实际上是一个内部操作git工具来简化操作Android源码的Python脚本。经过尝试,直接使用git工具在ubuntu下可以实现cloneAndroid源码。下面介绍一下方法:

1.获取当前的在github上托管的Androidgitrepositories:

github页面为:https://github.com/android/following。不过这个页面不支持通过wget"https://github.com/android/following"或者curl"https://github.com/android/following"的方式访问,错误信息如下:

这个时候需能做的只能是"tryagain"了。

需要说明的是"不要试图同时并发执行多个gitclone命令",这样会导致大量出现上面贴图中的错误,另外,整个clone过程中耗时最多的gitrepository如下:

kernel_common.gitkernel_msm.gitplatform_frameworks_base.gitplatform_prebuilt.git其中platform_prebuilt.git是google提供的预编译好的二进制文件,包含:各种库文件,jar包,可执行程序等等,如果只是阅读Android源代码,这个gitrepository可以不用clone.

Ⅹ 自己可以编译安卓源码吗

用最新的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源码的多仓库管理机制.下面,不妨自己动手尝试一下.

    阅读全文

    与安卓源码类型相关的资料

    热点内容
    解压黏黏球如何玩 浏览:227
    位域结构体编译树形描述 浏览:652
    宏基手机如何装安卓系统 浏览:743
    linuxcp命令实现 浏览:668
    单片机热释红外报警器 浏览:661
    单片机原理及接口技术b卷 浏览:356
    php链接正则表达式 浏览:966
    安卓版苹果手机怎么转手 浏览:103
    安卓怎么修改app的名字 浏览:139
    域名服务器可将域名地址 浏览:724
    广州服务器机柜怎么卖 浏览:238
    转让腾讯云三年服务器 浏览:254
    网易云音乐加密怎么处理 浏览:389
    编译小视频软件 浏览:597
    盒马app买东西怎么送 浏览:121
    编译原理国产 浏览:694
    在线用pdf转word 浏览:426
    咪咕app怎么发表文章 浏览:209
    phpsftp上传 浏览:936
    php可以干嘛 浏览:879