android开机logo制作方法
android开机logo制作方法
在定制产品时,常需要制作logologo开机时共分两部分:准备图片1)、(内核部分)第一阶段静态显示,要求一张png格式图片(满足机器要求分辨率),单张图片不大于100kb。
静态显示时间5秒左右。
2)、(android部分)第二阶段静态显示,要求一张png格式图片(满足机器要求分辨率),单张图片不大于100kb。
静态显示时间15-20秒左右。
3)、(android部分)第三阶段动态显示,要求多张png格式图片(满足机器要求分辨率),单张图片不大于100kb,动态显示时间15s秒左右。
(总大小小于4M,越小越好)一、内核部分。
android系统默认为小企鹅。
如需修改:1.替换内核小企鹅根据在bootup logo里面配置的选项,替换掉kernel25_A7_281x\drivers\video\logo\下面的logo_linux_clut224.ppm或者其他的.ppm文件,同时删除logo_linux_clut224.c 。
使用附件脚本png2ppm.sh ,放入虚拟机,在同一个目录下存放logo.png(你想转换的),然后敲入./png2ppm.sh 即可生成logo.ppm,再重命名为logo_linux_clut224.ppm即可用,若原来没有安装netpbm工具,使用sudo apt-get install netpbm 命令安装--- Bootup logo x xx x [ ] Standard black and white Linux logo x xx x [ ] Standard 16-color Linux logo x xx x [*] Standard 224-color Linux logo x xx x [ ] 224-color Macintosh Linux logo x xx x [ ] 16-color SuperH Linux logo二.android部分1、替换android_小字制作initlogo.rle文件,替换out\target\product\sdkDemo\root\下原文件将png2rle.sh ,rgb2565 放入虚拟机,同一个目录放入logo.png安装imagemagick工具,使用命令sudo apt-get install imagemagick再执行./png2rle.sh,即生成Initlogo.rle2.替换android闪光动画vendor\....\sdkDemo\bootanimation.zip或者替换out\target\product\sdkDemo\system\media\bootanimation.zip替换图片里面part0 ,part1两部分动画,一般part0顺序播放一遍,part1循环播放直到系统启动完毕根据需要放入png格式图片,播放顺序按字母顺序,图片最好按序号命名。
Android5.1-7.1系统(framework)定制、修改、移植、总结-上篇
Android5.1-7.1系统(framework)定制、修改、移植、总结-上篇Android 5.1 - 7.1 系统(framework)定制、修改、移植、总结 - 上篇转⽬录1:修改开机logo修改开机logo有两种⽅法,⼀种直接去改c语⾔代码,第⼆种替换图⽚⽤python⽣成splash。
第⼀种⽅法我没试过,感觉挺⿇烦的,还有分辨率限制,超过多少分辨率就不能⽤第⼀种⽅法。
1. 修改的⽂件路径LINUX/android/bootable/bootloader/lk/splash2. 准备好logo图⽚(png、bmp格式)3. 查看中原图⽚的分辨率,修改logo图⽚保证分辨率⼀致4. ⽣成splash.img镜像⽂件注:图⽚分辨率很重要!很重要!很重要!⽣成splash.img 步骤1.The steps to generate a splash.img:2.3.1 sudo apt-get install python-imaging4.5.2 python ./logo_gen.py boot_001.png (*.bmp)为了减少编译时间可以直接将⽣成好的splash.img将刷机包中的⽂件替换掉。
2:Framework(SysteimUI) Android在状态栏增加⽿机拔插图标Android 4.1在拔插⽿机时,状态栏没有提⽰图标。
最近做了这个新的需求,步骤如下:1、在\frameworks\base\packages\SystemUI\res\drawable-Xdpi下增加⼀个⽿机图⽚stat_sys_headset.png。
drawable-Xdpi中的X根据⼿机的分辨率来确定,我的⼿机⽤的是drawable-hdpi;2、在\frameworks\base\packages\SystemUI\src\com\android\systemui\statusbar\phone\PhoneStatusBarPolicy.java中增加下⾯的代码:1.private BroadcastReceiver mIntentReceiver = new BroadcastReceiver() {2.@Override3.public void onReceive(Context context, Intent intent) {4.String action = intent.getAction();5.if (action.equals(Intent.ACTION_ALARM_CHANGED)) {6.updateAlarm(intent);7.}8.else if (action.equals(Intent.ACTION_SYNC_STATE_CHANGED)) {9.updateSyncState(intent);10.}11.else if (action.equals(BluetoothAdapter.ACTION_STATE_CHANGED) ||12.action.equals(BluetoothAdapter.ACTION_CONNECTION_STATE_CHANGED)) {13.updateBluetooth(intent);14.}15./*add code for adding headset icon in statusbar.*/16.else if (action.equals(Intent.ACTION_HEADSET_PLUG)) {17.updateHeadsetState(intent);18.}19.//endelse if (action.equals(AudioManager.RINGER_MODE_CHANGED_ACTION) ||21.action.equals(AudioManager.VIBRATE_SETTING_CHANGED_ACTION)) {22.updateVolume();23.}24.else if (action.equals(TelephonyIntents.ACTION_SIM_STATE_CHANGED)) {25.updateSimState(intent);26.}27.else if (action.equals(TtyIntent.TTY_ENABLED_CHANGE_ACTION)) {28.updateTTY(intent);29.} else if (action.equals(Intent.ACTION_LOCALE_CHANGED)) {30.31.// when acceptting the locale change event,reload USB connection notification.32.boolean isUsbConnected = mStorageManager.isUsbMassStorageConnected();33.mStorageNotification.onUsbMassStorageConnectionChanged(isUsbConnected);34.}35.}36.};37.38.public PhoneStatusBarPolicy(Context context) {39.mContext = context;40.41.// init StorageNotification object42.mStorageNotification = new StorageNotification(mContext);43.mService = (StatusBarManager)context.getSystemService(Context.STATUS_BAR_SERVICE);44.45.// listen for broadcasts46.IntentFilter filter = new IntentFilter();47.filter.addAction(Intent.ACTION_ALARM_CHANGED);48.filter.addAction(Intent.ACTION_SYNC_STATE_CHANGED);49.filter.addAction(AudioManager.RINGER_MODE_CHANGED_ACTION);50.filter.addAction(AudioManager.VIBRATE_SETTING_CHANGED_ACTION);51.filter.addAction(BluetoothAdapter.ACTION_STATE_CHANGED);52.filter.addAction(BluetoothAdapter.ACTION_CONNECTION_STATE_CHANGED);53./*add code for adding headset icon in statusbar.*/54.filter.addAction(Intent.ACTION_HEADSET_PLUG);55.//end56.filter.addAction(TelephonyIntents.ACTION_SIM_STATE_CHANGED);57.filter.addAction(TtyIntent.TTY_ENABLED_CHANGE_ACTION);58.59.// add locale change event filter60.filter.addAction(Intent.ACTION_LOCALE_CHANGED);61.mContext.registerReceiver(mIntentReceiver, filter, null, mHandler);62.63.int numPhones = MSimTelephonyManager.getDefault().getPhoneCount();64.mSimState = new IccCard.State[numPhones];65.for (int i=0; i < numPhones; i++) {66.mSimState[i] = IccCard.State.READY;67.}68.// storage69.mStorageManager = (StorageManager) context.getSystemService(Context.STORAGE_SERVICE);70.mStorageManager.registerListener(mStorageNotification);71.72.// TTY status73.mService.setIcon("tty", R.drawable.stat_sys_tty_mode, 0, null);74.mService.setIconVisibility("tty", false);75.76.// Cdma Roaming Indicator, ERI77.mService.setIcon("cdma_eri", R.drawable.stat_sys_roaming_cdma_0, 0, null);78.mService.setIconVisibility("cdma_eri", false);79.80.// bluetooth status81.BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();82.int bluetoothIcon = R.drawable.stat_sys_data_bluetooth;83.if (adapter != null) {84.mBluetoothEnabled = (adapter.getState() == BluetoothAdapter.STATE_ON);85.if (adapter.getConnectionState() == BluetoothAdapter.STATE_CONNECTED) {86.bluetoothIcon = R.drawable.stat_sys_data_bluetooth_connected;87.}88.}89.mService.setIcon("bluetooth", bluetoothIcon, 0, null);90.mService.setIconVisibility("bluetooth", mBluetoothEnabled);91.92./*add code for adding headset icon in statusbar.*/93.mService.setIcon("headset", R.drawable.stat_sys_headset, 0, null);94.mService.setIconVisibility("headset", false);95.//end96.97.// Alarm clock98.mService.setIcon("alarm_clock", R.drawable.stat_sys_alarm, 0, null);99.mService.setIconVisibility("alarm_clock", false);100.101.// Sync state102.mService.setIcon("sync_active", R.drawable.stat_sys_sync, 0, null);103.mService.setIcon("sync_failing", R.drawable.stat_sys_sync_error, 0, null);104.mService.setIconVisibility("sync_active", false);105.mService.setIconVisibility("sync_failing", false);106.107.// volume108.mService.setIcon("volume", R.drawable.stat_sys_ringer_silent, 0, null);109.mService.setIconVisibility("volume", false);110.updateVolume();111.}112.113.114./*add code for adding headset icon in statusbar.*/115.private final void updateHeadsetState(Intent intent) {116.boolean mIsHeadsetOn = (intent.getIntExtra("state", 0) == 1);117.Slog.v(TAG, "updateHeadsetState: HeadsetState: " + mIsHeadsetOn);118.119.mService.setIconVisibility("headset", mIsHeadsetOn);120.}在\frameworks\base\core\res\res\values\config.xml中加⼊⽿机图标控制字段(headset):1.<string-array name="config_statusBarIcons">2.<item><xliff:g id="id">ime</xliff:g></item>3.<item><xliff:g id="id">sync_failing</xliff:g></item>4.<item><xliff:g id="id">sync_active</xliff:g></item>5.<item><xliff:g id="id">gps</xliff:g></item>6.<item><xliff:g id="id">bluetooth</xliff:g></item>7.<item><xliff:g id="id">nfc</xliff:g></item>8.<item><xliff:g id="id">tty</xliff:g></item>9.<item><xliff:g id="id">speakerphone</xliff:g></item>10.<item><xliff:g id="id">mute</xliff:g></item>11.<item><xliff:g id="id">volume</xliff:g></item>12.<item><xliff:g id="id">wifi</xliff:g></item>13.<item><xliff:g id="id">cdma_eri</xliff:g></item>14.<item><xliff:g id="id">phone_signal_second_sub</xliff:g></item>15.<item><xliff:g id="id">data_connection</xliff:g></item>16.<item><xliff:g id="id">phone_evdo_signal</xliff:g></item>17.<item><xliff:g id="id">phone_signal</xliff:g></item>18.<item><xliff:g id="id">battery</xliff:g></item>19.<item><xliff:g id="id">alarm_clock</xliff:g></item>20.<item><xliff:g id="id">secure</xliff:g></item>21.<item><xliff:g id="id">clock</xliff:g></item>22.<item><xliff:g id="id">headset</xliff:g></item>23.24.</string-array>因为所加代码中的 mService.setIcon和mService.setIconVisibility最终会调⽤到StatusBarManagerService,它的构造函数有mIcons.defineSlots(res.getStringArray(com.android.internal.R.array.config_statusBarIcons));语句,找到config_statusBarIcons所在的配置⽂件为config.xml。
android2.3开机LOGO刷新教程
前期准备工作:
1.系统开机第一屏LOGO格式要求
宽*高位深度格式特别要求
第一屏 256*256 16 bmp 因第一屏不是覆盖全屏,要求底色为黑色,与整体相配。
2.将图片拷到LOGO Change文件目录下
3.打开PIC2RAW.exe文件
4.添加开机图片并点击转换
5.在此文件目录下会产生图片名称.bin文件
6.此文件名更改为logo1.bin(第一屏的LOGO)
注意:目前2.3只能修改第一屏LOGO
第一步:将前面准备好的LOGO1.BIN文件拷到TF卡根目录中,将TF插入需要升级开机LOGO的MID中
第二步:在关机状态下,用手按住返回键不放,另一个手按开机键开机,返回键继续按住3S后,系统自动进入升级画面。
这是松开返回键,如下图:
第三步:在出现上图界面后,再次按一下返回键。
进入下
通过MENU键,我们可以将上图中的蓝色选项条停在最后一个选项“change first logo”,此时,再次按一次返回键,就完成了LOGO刷新(请注意看刷新提示),刷新完成后,按复位键,重启就OK了。
Android8.1系统修改开机logo和开机动画
Android8.1系统修改开机logo和开机动画修改开机logo1. 在device\qcom\common\display\logo下找到logo_gen.py2. 如果没有安装Python,先执⾏以下命令 sudo apt-get install python-imaging3. 将需要制作logo的图⽚拷贝到logo_gen.py的同级⽬录需要注意的是图⽚分辨率应该与设备屏分辨率⼀致4. 运⾏如下命令⽣成splash.img,执⾏ python ./logo_gen.py logo.png5. 连上设备运⾏如下命令adb reboot bootloaderfastboot flash splash splash.imgfastboot reboot6. 检查logo是否替换成功修改开机动画1. 开机动画和关机动画的存储路径为:vendor\qcom\proprietary\qrdplus\Extension\apps\BootAnimation;2. 将制作好的动画替换路径下的zip包(bootanimation.zip 和shutdownanimation.zip)3. 需要将动画路径拷贝到/system/media⽂件⽬录下:路径:拷贝⽂件添加这⼀⾏:PRODUCT_COPY_FILES +=vendor/qcom/proprietary/qrdplus/Extension/apps/BootAnimation/bootanimation.zip:system/media/bootanimation.zip4. 修改之后编译系统,system即可;编译:source build/envsetup.shlunchm cleanm -j16编译成功之后查看⽣成的⽂件system下⾯有以下zip⽂件:实质上就是将⽂件拷贝到这个路径下是关键;之前有将zip包⽤adb命令推到设备的/system/media路径下,测试开机动画是ok的,所以拷贝⽂件使其编译到system中是关键;5. 刷系统检查修改是否成功刷系统:adb reboot bootloaderfastboot flash system system.imgfastboot -wfastboot reboot。
安卓手机开机动画制作
【前言】今日开始着手做Android开机动画制作系列教程,与爱美人士共享经验技术!本着先易后难的原则,教程一主要告诉大家开机动画的结构,位置等!后续的教程将会教大家一些制作开机动画的方法,解答制作过程中可能遇到的问题等。
后续教程视闲余时间的多少,尽量会为大家制作出视频教程,为木蚂蚁开机动画制作大赛做好准备!【开机动画位置】1.安卓原版系统开机动画位置:2.system/media/bootanimation.zip或者data/local/bootanimation.zip3.这两处的区别在于动画放在system中动画会全部播放完4.放到data中动画只播放10秒复制代码1.CM系统,以及大部分手机厂商官方系统:2.system/media/bootanimation.zip复制代码1.HTC官方系统开机动画位置一:2.system/customize/resources/bootanimation.zip其中也包含关机动画和开机音乐复制代码1.HTC官方系统开机动画位置二:2.3.data/local/bootanimation.zip复制代码【bootanimation.zip详解】bootanimation.zip压缩原理:1.开机动画文件是一个zip压缩包2.其中包含n个文件夹和一个desc.txt配置文件3.文件夹用来存放图片帧,desc用来控制图片播放的帧速以及顺序4.该zip使用的压缩方式为无损压缩(在WinRar中压缩方式选--存储)复制代码desc.txt配置文件原理:示例:1.480 800 152.p 1 1 android复制代码第一行 480 800是手机屏幕的分辨率width height;数字表示帧速(15就是按每秒15张图片的速度播放);第二行字母p是Play的首字母;第一个数字表示播放次数(1代表播放一遍,0代表循环播放);第二个数字表示延迟时间(此时间以帧为单位1就是一帧);android代表文件夹名称;用通俗的话解释这个配置:开始播放动画,android文件夹中的图片按照顺序以每秒15帧的速度播放一遍待图片播放完,最后一张图片将会继续显示一帧的时间如果我们在开机动画里加入一个新的图片文件夹android1,并循环播放,延迟5帧我们需要在desc.txt中添加一段控制代码1.480 800 152.p 1 1 android3.p 0 5 android1复制代码一般的开机动画要用两个文件夹,我个人的理解是:文件夹1的图片是播放一遍的文件夹2的图片是循环播放直到开机这样做的好处就是,不同系统的开机时间是不一样的用文件夹2循环播放能够很好的适应开机动画的时间!~【总结】我们在了解了开机动画的组成之后,就可以按照自己的喜欢设计出开机动画可以添加多个图片文件夹,修改好desc之后,能做出很多华丽复杂的动画来!【素材提取】为大家推荐一款软件TMPGEnc4.0XPress版本有很多,貌似只有4.0版是真正破解的!本软件的特点是能够支持绝大多数的视频文件,可以方便剪辑可以将视频导出为静态图片可以将视屏音乐导出因此很方便制作开机动画所需的图片和音乐!注意:图片最好是PNG格式的,虽然有些系统也能支持jpe格式的。
安卓开机几个修改方法
怎样修改开机画面1.图片说明现在我们机器开机一共有4部分的图片显示。
第一张是bootload里面显示的图片M3图片M6图片在修改此图的位置,也可以修改uboot内充电图片第二张就是我们的绿色机器人图片。
第三张就是我们android字串滚动的动画。
2.修改图片下面我们就开始对相应图片来进行修改。
1)对于第一张图片:M3的修改方法:我们可以在device/amlogic/common/res/logo/ 目录下添加或者修改xxx.BMP图片同时在device/amlogic/xxxref目录下修改BoardConfig.mk文档关于Logo部分代码,如:TARGET_AMLOGIC_AML_LOGO :=device/amlogic/common/res/logo/a9.1024x600.bmp//A9 logo图片TARGET_AMLOGIC_LOGO := device/amlogic/common/res/logo/robot.1024x600.bmp //此Logo为Recovery下机器人图片M6的修改方法:我们可以在device\amlogic\xxxref\res_pack\res目录下添加或者修改xxx图片注意:1、图片是没有后缀名的2、必须遵循的——图片必须是16位RGB565的。
3、建议的是——图片尽可能的小,不需要做成全屏的,这样可以明显的提高启动速度;4、图片的宽度尽量是4的整数倍。
同时在device/amlogic/xxxref目录下修改BoardConfig.mk文档关于Logo部分代码,如:TARGET_AMLOGIC_LOGO := $(PRODUCT_OUT)/res-package.img(由我们修改的图片文件编译生成的res-package.img)TARGET_AMLOGIC_RES_PACKAGE :=device/amlogic/xxxref/res_pack/res(指定图片所在目录)2)对于第二张图片,就会稍微复杂一点。
android oaid生成原理
android oaid生成原理Android Oaid,全称为“Open Advertising Identifier”,即开放式广告标识符,是一种在Android设备中用于广告识别的标识符。
与iOS 的IDFA相似,Android Oaid也是由设备系统生成的不可变标识符。
Android Oaid是在Android 8.0及其以上版本中引入的。
它的主要作用是为广告公司和广告平台提供一种标准的、跨应用、跨平台、匿名、可重置的广告标识符,以便它们追踪用户的广告行为和习惯,从而提高广告的投放效果和收益。
Android Oaid的生成原理如下:1.设备系统生成 Android OaidAndroid Oaid是由设备系统生成的,它是由设备在首次访问网络时通过Google Play服务(即Google Advertising ID API)向Google服务器申请并获取的。
Google服务器会返回一个唯一的64位字符串作为设备的Android Oaid。
2.用户同意个性化广告在设备获得Android Oaid之前,Google会提示用户是否同意接收个性化广告。
如果用户同意,并且未选择“重置Androi d Oaid”,则设备会生成一个固定的Android Oaid,并将其保存在系统中。
每当应用程序需要访问Android Oaid时,它都会从系统中获取。
3.用户重新设置 Android Oaid如果用户选择在系统设置中重置Android Oaid,则系统会生成一个新的Android Oaid,覆盖之前的Android Oaid。
因此,Android Oaid是可重置的,用户可以在任何时候重置它。
总的来说,Android Oaid的生成原理是基于Google Play服务的广告API,通过向Google服务器申请并获取一个唯一的64位字符串,并保存在设备系统中。
在用户同意接收个性化广告的情况下,Android Oaid 是不变的,并且可以用于跨应用、跨平台的广告追踪,从而提高广告的投放效果和收益。
安卓手机开机声音和动画设置方法
安卓手机开机声音和动画设置方法安卓手机的开机声音和动画是手机系统提供的默认设置,但用户可以根据自己的喜好进行修改。
下面是一些常见的方法来设置安卓手机的开机声音和动画。
一、设置开机声音:1.开启手机设置:点击手机主屏幕上的设置图标,进入手机系统设置界面。
2.进入声音设置:在手机设置界面中,找到“声音”或“声音和振动”选项,点击进入。
3.调整音量:在声音设置界面中,找到“系统声音”或类似选项,点击进入。
4.关闭或修改开机音效:在系统声音设置界面中,找到“关闭”选项,点击即可关闭开机声音。
如果希望修改开机音效,可以选择其他预设的音效,或者点击“添加”选项,选择本地音频文件来作为开机音效。
5.保存设置:完成设置后,点击界面上的“确定”或“保存”按钮,保存设置。
二、设置开机动画:3.选择动画:在启动动画应用的主界面中,可以看到多个可选的启动动画,选择一个喜欢的启动动画。
4.设置动画:在选择完启动动画后,点击“设置”或“应用”按钮,将该动画设置为手机的开机动画。
5.保存设置:完成设置后,关闭启动动画应用,并重新启动手机,即可看到新设置的开机动画。
三、修改开机声音和动画文件:3.进入系统文件夹:在文件管理器应用中,寻找并进入“系统”文件夹。
可以通过侧边栏、菜单或者功能找到该文件夹。
4. 找到开机声音文件:在系统文件夹中,找到名为“PowerOn.mp3”、“PowerOn.ogg”或者类似的文件,这是手机系统默认的开机声音文件。
5.删除或替换文件:长按该文件,选择“删除”或“替换”,可以删除或替换该文件。
如果是删除文件,则下次开机时将没有声音;如果是替换文件,则可以选择一个自己喜欢的音频文件作为开机声音。
6. 修改开机动画文件:在系统文件夹中,找到名为“bootanimation.zip”、“bootanimation.zip”或者类似的文件,这是手机系统默认的开机动画文件。
同样的,可以删除或替换该文件来修改开机动画。
开机logo以及两种修改开机动画方法
开机logo以及两种修改开机动画⽅法Android开机画⾯总共有三屏⼀、第⼀屏:开机logo1、选张png格式的图⽚,在Linux任意下执⾏(安装⼯具):1. sudo apt-get install pnmtoplainpm2、在所要定制logo的pngtopnm logo.png⽬录执⾏(转换成pnm格式):1. pngtopnm logo.png > logo_linux.pnm3、再执⾏(转化成224的pnm图⽚):1. pnmquant 224 logo_linux.pnm > logo_linux_clut224_formal.pnm4、执⾏(转换成ppm格式):1. pnmtoplainpnm logo_linux_clut224_formal.pnm > logo_linux_clut224.ppm5、/kernel/drivers/video/logo/logo_linux_clut224.ppm是默认的启动Logo图⽚,把⾃⼰的ogo_linux_clut224.ppm替换这个⽂件,同时删除logo_linux_clut224.c logo_linux_clut224.o⽂件(如果存在) 。
6、进⼊kernel⽬录重新编译内核1. cd kernel1. make kernel.img⼆、第⼆屏:Android字样Android系统开机会出现“A N D R O I D”这⾏字,相信⼤家都不陌⽣,那么这个怎么修改呢?相关⽂件在Android系统源码(不是Android内核源码)system/core/init/init.c,如下代码⽚段1. if( load_565rle_image(INIT_IMAGE_FILE) ) {2. fd = open("/dev/tty0", O_WRONLY);3. if (fd >= 0) {4. const char *msg;5. msg = "\n"6. "\n"7. "\n"8. "\n"9. "\n"10. "\n"11. "\n" // console is 40 cols x 30 lines12. "\n"13. "\n"14. "\n"15. "\n"16. "\n"17. "\n"18. "\n"19. " A N D R O I D ";20. write(fd, msg, strlen(msg));21. close(fd);22. }23. } :到这⾥⼤家就知道怎么修改了吧。
Android开机启动流程
Android启动流程
• 第四步 Home启动
在ServerThread@SystemServer.java后半段,我们可以看到系统在启 动完所有的Android服务后,做了这样一些动作: (1) 使用xxx.systemReady()通知各个服务,系统已经就绪。 (2) 特别对于ActivityManagerService.systemReady(回调) Widget.wallpaper,imm(输入法)等ready通知。 Home就是在ActivityManagerService.systemReady()通知的过程中建 立的。下面是ActivityManagerService.systemReady()的伪代码: systemReady()@ActivityManagerService.java resumeTopActivityLocked() startHomeActivityLocked();//如果是第一个则启动HomeActivity。 startActivityLocked(。。。)CATEGORY_HOME
Android启动流程
• 第二步 Zygote
Servicemanager和zygote进程就奠定了Android的基础。Zygote这个进程起来才会建立起真正的 Android运行空间,初始化建立的Service都是Navtive service.在.rc脚本文件中zygote的描述: service zygote /system/bin/app_process -Xzygote /system/bin --zygote --start-system-server 所以Zygote从main(…)@frameworks/base/cmds/app_main.cpp开始。 (1) main(…)@frameworks/base/cmds/app_main.cpp 建立Java Runtime runtime.start("com.android.internal.os.ZygoteInit", startSystemServer); (2) runtime.start@AndroidRuntime.cpp 建立虚拟机 运行:com.android.internal.os.ZygoteInit:main函数。 (3)main()@com.android.internal.os.ZygoteInit//真正的Zygote。 registerZygoteSocket();//登记Listen端口 startSystemServer(); 进入Zygote服务框架。 经过这几个步骤,Zygote就建立好了,利用Socket通讯,接收ActivityManangerService的请求, Fork应用程序。
安卓系统快速开机的方法及设备的制作技术
安卓系统快速开机的⽅法及设备的制作技术⼀种安卓系统快速开机的⽅法及装置,适⽤于⼿机、平板电脑、导航仪等等任意带有安卓系统的电⼦产品,该⽅法包括步骤S101:在启动core服务的同时启动Zygote步骤。
区别于现有技术,上述技术⽅案通过将Zygote步骤提前到启动core服务的同时启动。
以及⼀系列的优化步骤,达到了提⾼安卓系统开机速度的效果。
技术要求1.⼀种安卓系统快速开机的⽅法,其特征在于,在启动core服务的同时启动Zygote步骤。
2.根据权利要求1所述的安卓系统快速开机的⽅法,其特征在于,还包括步骤,将启动系统服务与预加载资源操作做并⾏处理。
3.根据权利要求1所述的安卓系统快速开机的⽅法,其特征在于,还包括步骤,优化系统服务,将预设的⾮核⼼服务类别延迟启动。
4.根据权利要求1所述的安卓系统快速开机的⽅法,其特征在于,还包括步骤,优化登录器,将动态布局计算、动态图标显⽰和加载图标微件从主线程中移出。
5.根据权利要求1所述的安卓系统快速开机的⽅法,其特征在于,还包括步骤,优化INIT启动脚本,删除冗余代码。
6.根据权利要求1所述的安卓系统快速开机的⽅法,其特征在于,还包括步骤,在LINUX阶段对外围设备驱动进⾏优化,将I2C通讯、固件下载及矫正步骤延后处理。
7.根据权利要求6所述的安卓系统快速开机的⽅法,其特征在于,还包括步骤,对外围设备驱动中的打印信息进⾏分级,将未达到重要级别的需要串⼝输出的打印信息删除。
8.根据权利要求1所述的安卓系统快速开机的⽅法,其特征在于,还包括步骤,对UBOOT⽂件进⾏裁剪,只保留开机必要的初始化操作。
括步骤,根据机器的硬件配置确定开机时使⽤的频率。
10.⼀种安卓系统快速开机的装置,其特征在于,包括提前启动模块,所述提前启动模块⽤于在启动core服务的同时启动Zygote步骤。
11.根据权利要求10所述的安卓系统快速开机的装置,其特征在于,还包括并⾏处理模块,所述并⾏处理模块⽤于将启动系统服务与预加载资源操作做并⾏处理。
android手机修改开机第一屏
修改开机第一屏
1、下载压缩包“制作第一屏”下载地址/share/link?shareid=298550&uk=2332735477,解压压缩包到任意盘符下(勿放到桌面,最好盘符下新建文件夹),得到文件夹,包括三个文件:制作第一屏.bat,bootimg.exe和示例图片1.jpg(参考尺寸:480*800,可根据自己手机屏幕的分辨率设置尺寸,.JPG格式,自己制作的图片小于50K大于10K)。
2、制作一张480*800的图片,大于10K小于50K,这种图片网上一大把,不愿意自己制作的可以百度一下。
3、将做好的图片命名为1.jpg,放入先前的制作第一屏文件夹内替换示例图片(1.jpg),然后打开制作第一屏.bat,会生成两个文件:oemlogo.mbn和oemlogo。
4、下载另一个.zip格式压缩包“xgdyp4.0”,下载地址/share/link?shareid=298548&uk=2332735477,请勿解压,下载到最初新建的文件夹下,双击打开此压缩包,打开data文件夹,打开cust文件夹,打开logo文件夹,将先前第3步生成的oemlogo.mbn拖入压缩包内此位置:data/cust/logo内,替换此位置原先文件,会有提示,点确定。
5、到此,开机第一屏直刷包制作完成。
把直刷包拷贝至SD卡根目录。
把你的华为U8825D 关机抠出电池,10秒,放入电池,按住音量上键,按开机键10秒,会进入recovery,然后按照卡刷ROM的步骤,找到制作的直刷包刷入,无须清空数据。
android4.4开机log分析
Android开机log分析1.分析开机log,一是可以理一下android启动流程,二是可以通过log定位错误,下面列举一些常见android程序发生错误时抛出的异常,查找关键字xxxException可以快速定位android层错误以及原因:ng.NullPointerException:空指针异常ng.ClassNotFoundException:找不到类抛出的异常ng.ArithmeticException:一个整数“除以零”时抛出的异常ng.ArrayIndexOutOfBoundsException:数组越界访问以后抛出的异常ng.IllegalArgumentException:传入非法参数抛出的异常ng.IllegalAccessException:当应用程序要调用一个类,但当前的方法即没有对该类的访问权限便会出现这个异常ng.SecturityException:安全异常。
由安全管理器抛出,用于指示违反安全情况的异常ng.RuntimeException运行时异常。
是所有Java虚拟机正常操作期间可以被抛出的异常的父类。
ng.NumberFormatException:字符串转换为数字异常:ng.StackOverflowError:堆栈溢出错误。
当一个应用递归调用的层次太深而导致堆栈溢出时抛出该错误。
ng.RuntimeExceptionng.OutOfMemoryError:内存不足错误。
当可用内存不足以让Java虚拟机分配给一个对象时抛出该错误。
ng.IOException:输入输出异常ng.AbstractMethodError:抽象方法错误。
当应用试图调用抽象方法时抛出。
ng.ClassFormatError:类格式错误。
当Java虚拟机试图从一个文件中读取Java类,而检测到该文件的内容不符合类的有效格式时抛出。
ng.InstantiationError:实例化错误。
Android修改开关机动画声音
开机画面,按照国际惯例,一般是分为2屏,当然也有3屏的说法,不管怎样,我这里说得就是最后的一屏,按照bootanimation的字面意思翻译,大概也就是开机动画的意思,那这就不说第几屏了,直接用“开机动画”这词。
首先,开机动画的地址:system\media\bootanimation.zip。
要修改开机动画就是修改bootanimation 这个文件。
如果说你的手机里没有这个文件,那就是说明你用的是官方原始版本的rom,开机动画没有被修改过,但这不碍事,没有就放一个进去,到时候想换回最原始的开机画面,也可以把bootanimation这个文件删了。
官方最原始的开机动画在system\ framework\framework-res.apk\assets\images里面,里面主要是2张图片,高手面可以去研究一下,说不定通过这个文件可以用代码实现动画的过程。
接下来,说说bootanimation.zip这个文件的结构。
bootanimation里面主要包含一个desc.txt以及N 个文件夹。
而文件夹里面放着的就是你要的开机动画的图片。
decs.txt的作用就是指导系统如何去执行你的开机画面。
下面继续说说desc.txt这个文档要怎么写。
先看例子,如果我的开机动画要用到2个文件夹,分别是part1和part2,。
我希望开机的时候,先把part1里面的图片都播放一遍,然后再循环播放part2里面的文件,直到进入系统。
那么decs.txt文档的内容应该如下:302 480 5p 1 0 part1p 0 0 part2就这么多,现在解释一下这些命令吧。
第一行,320 480是代表你屏幕的分辨率,因为我们的胖6是320*480的,这就不多说了。
后面的5是说,5帧每秒,不懂的可以这么理解,5是代表一秒钟播放5张图片。
就这么简单。
第二行,p 1 0 part1。
p应该是play吧,也就是播放的意思。
1是播放一次。
android 开机logo制作详细步骤
一.去除embedded linux 的开机光标:在内核的当前目录进入到drivers/video/console/fbcon.c 文件将static void fb_flashcursor(void *private) 和 static void fbcon_cursor(struct vc_data *vc, int mode) 里的内容注释掉,使之变成空函数二、 Android 开机会出现3个画面:1. Linux 系统启动,出现Linux小企鹅画面(reboot)(Android 1.5及以上版本已经取消加载图片);2. Android平台启动初始化,出现"A N D R I O D"文字字样画面;3. Android平台图形系统启动,出现含闪动的ANDROID字样的动画图片(start)。
4、splash(LK里跑的logo)1、开机图片(Linux小企鹅) (Android 1.5及以上版本已经取消加载图片);Linux Kernel引导启动后,加载该图片。
logo.c中定义nologo,在fb_find_logo(int depth)函数中根据nologo的值判断是否需要加载相应图片。
代码如下:static int nologo;module_param(nologo, bool, 0);MODULE_PARM_DESC(nologo, "Disables startup logo");/* logo's are marked __initdata. Use __init_refok to tell* modpost that it is intended that this function uses data* marked __initdata.*/const struct linux_logo * __init_refok fb_find_logo(int depth){const struct linux_logo *logo = NULL;if (nologo)return NULL;......}相关代码:/kernel/drivers/video/fbmem.c/kernel/drivers/video/logo/logo.c/kernel/drivers/video/logo/Kconfig/kernel/include/linux/linux_logo.h(1)让内核支持启动LOGO在内核目录中 make menuconfigDevice Drivers ----> Graphics support ---->选中 Bootup logo ----> Standard 224-color Linux logo(2) 制作一张启动LOGO的PNG格式的图片logo_linux_clut224.png(3)sudo apt-get install netpbm#pngtopnm logo_linux_clut224.png>logo_linux.pnm#pnmquant 224 logo_linux.pnm > logo_linux_224.pnm#pnmtoplainpnm logo_linux_224.pnm>logo_linux_clut224.ppm(4)将LOGO文件放入内核中拷贝到制作好的LOGO文件到 /drivers/video/logo 文件夹替换 logo_linux_clut224.ppm 文件(5)重新编译内核2、开机文字("A N D R I O D")Android 系统启动后,init.c中main()调用load_565rle_image()函数读取/initlogo.rle(一张565 rle压缩的位图),如果读取成功,则在/dev/graphics/fb0显示Logo图片;如果读取失败,则将/dev/tty0设为TEXT模式,并打开/dev/tty0,输出文本“A N D R I O D”字样。
手机系统开机画面自定义方法
手机系统开机画面自定义方法手机已经成为人们生活中不可或缺的一部分,而手机系统开机画面则是手机使用过程中第一个与用户互动的界面。
然而,许多手机用户对于默认的开机画面感到厌倦,希望能够将其个性化定制。
本文将介绍几种常见的手机系统开机画面自定义方法,帮助读者实现个性化定制。
一、使用第三方应用第三方应用是一种简单且方便的方法,可以帮助用户自定义手机系统开机画面。
用户只需在应用商店中搜索相关的开机画面定制应用,下载并安装即可。
这些应用通常提供了丰富的开机画面主题和素材,用户可以根据个人喜好选择并应用到手机系统中。
二、使用系统自带的定制功能一些手机品牌的系统自带了开机画面的定制功能,用户可以直接在系统设置中进行操作。
具体方法可能因手机品牌和系统版本而有所不同,但通常可以在“设置”或“显示”菜单中找到相关选项。
用户可以选择自己喜欢的图片或者从相册中选择照片作为开机画面,然后保存即可。
三、通过修改系统文件对于一些高级用户来说,他们可以通过修改手机系统文件来实现开机画面的自定义。
这种方法需要一定的技术基础和风险意识,因为错误的操作可能导致手机系统崩溃或无法正常启动。
如果你有足够的技术能力和冒险精神,可以在互联网上搜索相关教程并按照指导进行操作。
四、使用专业工具软件除了第三方应用之外,还有一些专业的工具软件可以帮助用户自定义手机系统开机画面。
这些软件通常提供了更多的功能和选项,可以满足用户更高级的需求。
用户可以在互联网上搜索相关软件,并根据自己的需求选择合适的工具进行使用。
无论采用哪种方法,用户在自定义手机系统开机画面时需要注意以下几点:1. 注意版权问题:在选择开机画面素材时,尽量使用自己拍摄的照片或者版权明确的图片,以避免侵权问题。
2. 考虑兼容性:不同手机品牌和系统版本对开机画面的支持程度可能有所不同,用户在选择方法时需要考虑自己的手机型号和系统版本,以确保能够顺利进行自定义操作。
3. 谨慎操作:对于需要修改系统文件的方法,用户需要谨慎操作,遵循教程中的指导,以免造成不可逆的损坏。
教您修改安卓手机开机动画LOGO
教您自制里程碑的开机动画LOGO效果视频:/v_show/id_XMjcxODMxMTI0.html第一次看到别人说改里程碑的LOGO我很激动,就安卓那些帖子的方法,我改了,开始用着还行,可是用着别人制作的心里就是不爽。
好吧,自己又上网学习,但是总是学的一知半解,唉,经过两天的自我探索,发现了绝妙绝好学习绝对详细的自制LOGO的方法(当然要先谢谢我看过的各位大大的帖)前提:手机已经ROOT.不会ROOT的机油留言,我单独QQ回复。
而且需要软件RE管理器(我会把该教程所用到的一切APK都放置教程底部附上)言归正传:开始教程第一部分(先介绍前辈们制作好的压缩开机包)【1】下载各位大大们的开机包(需要说明的是开机包的名字必须为bootanimation.zip(网上有现成的可以去下载修改),且必须放置在如下图所示的目录下,而且必须是压缩包的形态,还有就是说将来您自制开机包是一定要记得改一下压缩包的名称)【2】我就传图如下:(下载完开机包后,用RE文件管理器,把开机包复制到根目录/system/media 文件夹下面,注意此处要点击挂载)【3】复制后,还需关键的一部,接着重启手机就可以看到新的开机画面了。
这个步骤就是在RE 管理器内用手指长按bootanimation.zip文件,会弹出框框,再点击许可权,全部打上勾即可)。
各位大大的开机包在文章底部。
还有啊,您最好把我的第三部分(都是讲知识的东西)看完再用大大的开机包第二部分(真正的自制LOGO,这个才是重点)【1】先说明这个东西会用到的软件。
有swf2video pro,格式工厂,QQ空间里的制作动感影集程序,QQ视频录像软件,window自带的画图,美图秀秀(或者PS)。
有人会觉得多,其实主要用的就只有前两个。
【2】接着,要知道一些常识,首先说明为什么是压缩包,因为开机动画不是真正的flash动画,而是一个个连接的相似图片快速播放形成的。
再者,后面我会讲压缩包的制作,不能轻视,否则前功尽弃。
android rom制作之bootimg的详细介绍和使用
您首先应该要做的事情是使用您的recovery对您的ROM进行备份,以免操作失误照成数据的丢失!二、boot和recovery映像的文件结构boot和recovery映像并不是一个完整的文件系统,它们是一种android自定义的文件格式,该格式包括了2K的文件头,后面紧跟着是用gzip压缩过的内核,再后面是一个ramdisk 内存盘,然后紧跟着第二阶段的载入器程序(这个载入器程序是可选的,在某些映像中或许没有这部分)。
/*** +-----------------+** | boot header | 1 page** +-----------------+** | kernel | n pages** +-----------------+** | ramdisk | m pages** +-----------------+** | second stage | o pages** +-----------------+**** n = (kernel_size + page_size - 1) / page_size** m = (ramdisk_size + page_size - 1) / page_size** o = (second_size + page_size - 1) / page_size**** 0. all entities are page_size aligned in flash** 1. kernel and ramdisk are required (size != 0)** 2. second is optional (second_size == 0 -> no second) ** 3. load each element (kernel, ramdisk, second) at** the specified physical address (kernel_addr, etc)** 4. prepare tags at tag_addr. kernel_args[] is** appended to the kernel commandline in the tags.** 5. r0 = 0, r1 = MACHINE_TYPE, r2 = tags_addr** 6. if second_size != 0: jump to second_addr** else: jump to kernel_addr*/boot的ramdisk映像是一个最基础的小型文件系统,它包括了初始化系统所需要的全部核心文件,例如:初始化init进程以及init.rc(可以用于设置很多系统的参数)等文件。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
在定制产品时,常需要制作logo
logo开机时共分两部分:
准备图片
1)、(内核部分)第一阶段静态显示,要求一张png格式图片(满足机器要求分辨率),单张图片不大于100kb。
静态显示时间5秒左右。
2)、(android部分)第二阶段静态显示,要求一张png格式图片(满足机器要求分辨率),单张图片不大于100kb。
静态显示时间15-20秒左右。
3)、(android部分)第三阶段动态显示,要求多张png格式图片(满足机器要求分辨率),单张图片不大于100kb,动态显示时间15s秒左右。
(总大小小于4M,越小越好)
一、内核部分。
android系统默认为小企鹅。
如需修改:
1.替换内核小企鹅
根据在bootup logo里面配置的选项,替换掉kernel25_A7_281x\drivers\video\logo\下面的logo_linux_clut224.ppm
或者其他的.ppm文件,同时删除logo_linux_clut224.c 。
使用附件脚本png2ppm.sh ,放入虚拟机,在同一个目录下存放
logo.png(你想转换的),然后敲入./png2ppm.sh 即可生成logo.ppm,再重命名为logo_linux_clut224.ppm即可用,
若原来没有安装netpbm工具,使用sudo apt-get install netpbm 命令安装
--- Bootup logo x x
x x [ ] Standard black and white Linux logo x x
x x [ ] Standard 16-color Linux logo x x
x x [*] Standard 224-color Linux logo x x
x x [ ] 224-color Macintosh Linux logo x x
x x [ ] 16-color SuperH Linux logo
二.android部分
1、替换android_小字
制作initlogo.rle文件,替换out\target\product\sdkDemo\root\下原文件
将png2rle.sh ,rgb2565 放入虚拟机,同一个目录放入logo.png
安装imagemagick工具,使用命令sudo apt-get install imagemagick
再执行./png2rle.sh,即生成Initlogo.rle
2.替换android闪光动画
vendor\....\sdkDemo\bootanimation.zip
或者替换out\target\product\sdkDemo\system\media\bootanimation.zip
替换图片
里面part0 ,part1两部分动画,一般part0顺序播放一遍,part1循环播放直到系统启动完毕根据需要放入png格式图片,播放顺序按字母顺序,图片最好按序号命名。
最后将bootanimation打包成.zip包
方法:
进入bootanimation目录
执行:zip -0 -r ../bootanimation.zip ./*
将生成.zip放入out\target\product\sdkDemo\system\media\即可
bootanimation.zip解压后,有一个desc.txt文件
其内容分析如下:
480 272 20 //表示480*272分辨率,这个可以根据机器自己设定;20每秒钟播放20张图片
p 1 0 part0
p 0 0 part1
1、第一步安装工具,运行./install_logotools命令。
2、生成开机logo图片。
运行./creatlogo命令。
将你需要生成的图片命名为logo.png.(前提是你的图片是png格式)
需要更详细资料发邮件到625820539@。