
2017年中,Google宣布启动Project Treble计划,希望解决Android手机碎片化的问题. 许多尽责的制造商已加入项目团队,包括日本的索尼,韩国的三星,中国的OnePlus和华为. 换句话说,我们可以在三星的任何机器上自定义Android本机系统,这对于需要定制Android手机需求的公司来说是一件好事;
主流手机制造商的开源网站
三星开源发布中心
索尼开发者世界
联想支持
华为开源发布中心
Motorola开发人员
OnePlus GitHub存储库

三星s9出来了. 国外的xda论坛中已经有很多制作s9 rom软件包的大神,但是在中国实际上很少有相关的博客. 也许rom现在不赚钱?简而言之,对于普通开发人员而言三星s9刷机包下载,将自己的三星手机或OnePlus手机刷入自己的系统中太困难了;作为负责任的Android开发人员,我决定学习我所学的知识与大家分享一些知识,如果有错误,希望您能纠正很多;
本文分为以下步骤:
内核编译;系统源代码编译会闪现为系统映像和内核映像
好的,我们开始吧;
我认为对于大多数开发人员来说,下载源代码是最令人讨厌的事情,因为我们找不到源代码的位置. 我一直在寻找这个地方很久,直到我知道它在那里. 它曾经在git上. 找不到: ; sub = T&menu_item = mobile&classification1 = mobile_phone
当我们打开它时看起来像这样:
我们可以看到所有Samsung型号的源代码都可以在这里下载. 建议您不要使用检索(无用). 无论如何,我没有成功. 我在页面下方进行了分页,以后一直在寻找它. s9的源代码下载页面可能超过130页;关于这个地方,我不会说太多,我相信每个人都能找到它;

下载后,我们解压缩并得到两个文件,分别是Kernel.tar.gz(内核源代码)和Platform.tar.gz(版本源代码),然后在Linux上解压缩了Kernel.tar.gz. 编译即将开始;
一一安装依赖关系太麻烦了. 互联网上有一个祖传食谱,您可以尝试:
yum -y install gcc gcc-c ++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl -devel e2fsprogs e2fsprogs-devel krb5-devel libidn libidn-devel openssl openssl-open nss_ldap openldap openldap-devel openldap-clients openldap-servers libxslt-devel libevent-devel ntp libtool-ltdl bison libtool> vim-enhanced
首先我们需要获取工具链,这里我们需要的版本号是aarch64-linux-android-4.9三星s9刷机包下载,您可以自己找到该工具,我在NDK中找到它,下载后,大家都把它放在一个保留在目录中,这里是/usr/local/toolchain/aarch64-linux-android-4.9;配置输出目录
在内核解压目录下创建一个新的out目录,以存储编译结果;
$ mkdir out
$ OUTPUT_DIR=out
在根目录中修改Makefile文件,指定编译工具链,我在这里
CROSS_COMPILE=/usr/local/toolchain/aarch64-linux-android-4.9/bin/aarch64-linux-android-

开始编译
首先指定编译版本,然后执行make命令:
$ export ARCH=arm64
$ make -C $(pwd) O=$(pwd)/out KCFLAGS=-mno-android starqlte_chn_open_defconfig
$ make -C $(pwd) O=$(pwd)/out KCFLAGS=-mno-android
在这里耐心等待编译完成. 编译完成后,将在out / arch / arm64 / boot / Image目录下生成内核映像,而模块目录将位于out / drivers / * / *. ko;
下
这是因为我之前已经介绍了一篇文章,所以在这里不再赘述,您可以阅读我之前写过的文章“下载Android 5.0源代码并刻录到Nexus”;
当然,您也可以在“清华镜源”中找到如何下载aosp源代码而不翻墙的方法. 如果您具有快速的Internet连接,也可以从此处下载,跳过此处;
我们将解压缩下载的Platform.tar.gz并将其替换为aosp源代码树. 值得注意的是,如果aosp源代码树上存在一个与Platform.tar.gz中的模块冲突的目录,我们应该首先删除aosp源代码树上的相同目录,并在过去替换它;

每个完成系统开发的人都知道,当我们要使用模块时,必须将其包含在mk文件中. 例如,我们编写了一个应用程序,希望在镜子中看到该apk. 该模块在PRODUCT_PACKAGES中声明,否则我们编译的图像将没有此apk应用程序;
同样,我们需要添加一些必要的依赖库,并且需要自己配置(Aosp不会自动配置它);在这种情况下,我正在修改build \ target \ product \ core.mk文件;
相应模块所需的库如下:
case 1) ProfessionalAudio : 需要添加 'libjackshm','libjackserver','libjack', 'libjacklogger', 'androidshmservice','jackd','jack_dummy','jack_alsa','jack_opensles','jack_loopback',
'in','out','jack_connect','jack_disconnect','jack_lsp','jack_showtime','jack_simple_client','jack_transport','libasound','libglib-2.0',
'libgthread-2.0' 到PRODUCT_PACKAGES
case 2) e2fsprog : 需要添加 'e2fsck','resize2fs' 到PRODUCT_PACKAGES
case 3) libexifa : 需要添加'libexifa' 到PRODUCT_PACKAGES
case 4) libjpega :需要添加 'libjpega' 到PRODUCT_PACKAGES
case 5) KeyUtils :需要添加 'libkeyutils' 到PRODUCT_PACKAGES
该怎么做?我们只需要在此文件中添加以下内容:
# ProfessionalAudio
PRODUCT_PACKAGES += \
libjackshm \
libjackserver \
libjack \
libjacklogger \
androidshmservice \
jackd \
jack_dummy \
jack_alsa \
jack_opensles \
jack_loopback \
in \
out \
jack_connect \
jack_disconnect \
jack_lsp \
jack_showtime \
jack_simple_client \
jack_transport \
libasound \
libglib-2.0 \
libgthread-2.0
# e2fsprog
PRODUCT_PACKAGES += \
e2fsck \
resize2fs
# libexifa
PRODUCT_PACKAGES += \
libexifa
# libjpega
PRODUCT_PACKAGES += \
libjpega
# KeyUtils
PRODUCT_PACKAGES += \
libkeyutils
这时,添加了依赖模块;
执行. /build_64bit.sh
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/sanxing/article-238214-1.html
反咬一口啊