android 量产软件改动信息(持续更新)
http://blog.csdn.net/xubin341719/article/details/8449352
关键词:android 4.0默认语言蓝牙名称 MTP名称默认时区关于平板电脑 内核版本号
平台信息:
内核:linux2.6/linux3.0
系统:android/android4.0
平台:S5PV310(samsungexynos4210)
作者:xubin341719(欢迎转载,请注明作者)
1、开关机logo;
2、用户模式、工程模式;
3、更改默认语言;
5、更改蓝牙名称;
6、更MTP名称;
7、更改“关于平板电脑”中的信息;
8、更改默认时区;
………………
以三星平台为基础,如果是其它平台,只做参考。
下面只是一些做订单时候经常要改动的地方,没什么技术含量,不过我觉得这一部分也比较重要,研发出来的东西,卖出去换回钱,才是到我们最大的回报。这一部分会持续更新,指不定一个“极品”的客户要更改什么不靠谱的东西,记录下来,节省大家的时间,知道在那个地方改就行了。
1、开关机logo
现在好多公司就是个皮包公司,自己不做研发,在外面买,开机画面要做成他们特有的,所以这一点在工作中用的也是比较多的。中国的产品,那叫“泛滥”呀。
这篇文章中对logo有详细描述:android logo:内核、android开机动画
2、用户模式、工程模式
产品出去的时候,要用用户模式,这时串口终端是不能操作的,只能显示。三星平台有一个问题就是,在工程模式下,如果系统有点卡,会有一个红色的边框出现,这个问题我们老大叫它“BUG”,这个没法跟他去理论,总之不应该出现的东西都是BUG,那就转换成user模式,把这个问题解了。
这篇文章中有关于usr eng的描述:android 4.0 编译模式 eng -- > user 时遇到的问题
3、更改默认语言
做产品服务要周道,不能出到别的国家的东西,一开机会是中文的,那就有点不太友好了,英文好多地方可以接受,可是现在中文还是没有那么广泛应用的。其实android默认是En的,我们内单的就是改过来的。下面看我们怎么把默认的英文改成中文,为没过“CET4”的同学服务。
android/device/samsung/smdk4x12/full_smdk4x12.mk
[html] view plaincopy
- PRODUCT_LOCALES := zh_CN \
- en_US \
- zh_TW \
- en_GB \
- fr_FR \
- it_IT \
- cs_CZ \
- de_DE \
- da_DK \
- el_GR \
用那个语言,把它放到早前面,就可以,如:
zh_CN:中文简体
zh_TW:中文繁体
en_US:英文(美国)
这篇文章中有对应的 语言地区Android 地区语言和简写对照表
5、更改蓝牙名称
android/external/bluetooth/bluez/src/main.c
[cpp] view plaincopy
- static void init_defaults(void)
- {
- /* Default HCId settings */
- memset(&main_opts, 0, sizeof(main_opts));
- main_opts.mode = MODE_CONNECTABLE;
- main_opts.name = g_strdup("W42");//更改这里的名称
- main_opts.discovto = DEFAULT_DISCOVERABLE_TIMEOUT;
- main_opts.remember_powered = TRUE;
- main_opts.reverse_sdp = TRUE;
- main_opts.name_resolv = TRUE;
- main_opts.link_mode = HCI_LM_ACCEPT;
- main_opts.link_policy = HCI_LP_RSWITCH | HCI_LP_SNIFF |
- HCI_LP_HOLD | HCI_LP_PARK;
- if (gethostname(main_opts.host_name, sizeof(main_opts.host_name) - 1) < 0)
- strcpy(main_opts.host_name, "noname");
- }
6、更MTP名称
android/system/vold/Volume.cpp
[cpp] view plaincopy
- int Volume::formatVol() {
- if (getState() == Volume::State_NoMedia) {
- errno = ENODEV;
- return -1;
- } else if (getState() != Volume::State_Idle) {
- errno = EBUSY;
- return -1;
- }
- if (isMountpointMounted(getMountpoint())) {
- SLOGW("Volume is idle but appears to be mounted - fixing");
- setState(Volume::State_Mounted);
- // mCurrentlyMountedKdev = XXX
- errno = EBUSY;
- return -1;
- }
- bool formatEntireDevice = (mPartIdx == -1);
- char devicePath[255];
- char *label = NULL;
- dev_t diskNode = getDiskDevice();
- dev_t partNode = MKDEV(MAJOR(diskNode), (formatEntireDevice ? 1 : mPartIdx));
- setState(Volume::State_Formatting);
- int ret = -1;
- // Only initialize the MBR if we are formatting the entire device
- if (formatEntireDevice) {
- sprintf(devicePath, "/dev/block/vold/%d:%d",
- MAJOR(diskNode), MINOR(diskNode));
- if (initializeMbr(devicePath)) {
- SLOGE("Failed to initialize MBR (%s)", strerror(errno));
- goto err;
- }
- }
- sprintf(devicePath, "/dev/block/vold/%d:%d",
- MAJOR(partNode), MINOR(partNode));
- if (mDebug) {
- SLOGI("Formatting volume %s (%s)", getLabel(), devicePath);
- }
- label="W42";//更改这个名称
- if (Fat::format(devicePath, 0, label)) {
- SLOGE("Failed to format (%s)", strerror(errno));
- goto err;
- }
- ret = 0;
- err:
- setState(Volume::State_Idle);
- return ret;
- }
7、更改“关于平板电脑”中的信息
(1)、型号
android/device/samsung/smdk4x12/full_smdk4x12.mk
[html] view plaincopy
- PRODUCT_MANUFACTURER := full_smdk4x12
- PRODUCT_BRAND := full_smdk4x12
- PRODUCT_MODEL := W42(QuadCore)
(2)、内核版本
这个有点不太好找,一个同事跟我说的,内核路径为:
kernel/scripts/mkcompile_h
[html] view plaincopy
- # Generate a temporary compile.h
- ( echo /\* This file is auto generated, version $VERSION \*/
- if [ -n "$CONFIG_FLAGS" ] ; then echo "/* $CONFIG_FLAGS */"; fi
- echo \#define UTS_MACHINE \"$ARCH\"
- echo \#define UTS_VERSION \"`echo $UTS_VERSION | $UTS_TRUNCATE`\"
- echo \#define LINUX_COMPILE_BY \"`echo $LINUX_COMPILE_BY | $UTS_TRUNCATE`\" //更改者两个echo的值
- echo \#define LINUX_COMPILE_HOST \"`echo $LINUX_COMPILE_HOST | $UTS_TRUNCATE`\"
- echo \#define LINUX_COMPILER \"`$CC -v 2>&1 | tail -n 1`\"
- ) > .tmpcompile
(3)、版本号
android/out/target/product/w42/system/build.prop
[html] view plaincopy
- ro.build.display.id=w42.eng.tim.20121224.093047
- ro.build.version.incremental=eng.tim.20121224.093047
其实在build.prop目录中有许多,关于系统的信息,有兴趣的话可以看下。
8、更改默认时区
除的语言外,外单产品默认时区也要改动。找到相应的system.prop,加入下面语句。
android/device/samsung/smdk4x12/system.prop
[html] view plaincopy
- #default time zone
- persist.sys.timezone=Asia/Shanghai
9、在桌面放一图标,点击链接到一指定网址
10、把应用程序的图标默认放到桌面
android 量产软件改动信息(持续更新)的更多相关文章
- Android中常用开发工具类—持续更新...
一.自定义ActionBar public class ActionBarTool { public static void setActionBarLayout(Activity act,Conte ...
- Android 常用开源库总结(持续更新)
前言 收集了一些比较常见的开源库,特此记录(已收录350+).另外,本文将持续更新,大家有关于Android 优秀的开源库,也可以在下面留言. 一 .基本控件 TextView HTextView 一 ...
- 超赞的Linux软件分享(持续更新)
开发 Android studio - Android 的官方 IDE:Android Studio 提供在各种类型的安卓设备上构建应用最快的工具. Aptana - Aptana Studio 利用 ...
- android 编译环境 & 开发教程 【持续更新】
一. 优秀博文推荐 1.ubuntu 搭建 android源码编译环境 ubuntu14.04LTS android 源码编译环境的搭建 2.开源网站 2.android 开源 网站 2015最流行的 ...
- android 开发中用到的工具-持续更新(码农必看)
1. vim 单文件查看改动利器(一直使用支持各种编码各种文件,各种插件),欢迎下载笔者插件 git clone https://github.com/green130181/vim-conf.git ...
- Android中AlarmManager使用示例(持续更新,已经更改)
现在普遍的手机都会有一个闹钟的功能,如果使用Android来实现一个闹钟可以使用AtarmManager来实现.AtarmManager提供了一种系统级的提示服务,允许你安排在将来的某个时间执行一个服 ...
- Android Studio的安装使用记录[持续更新]
参考资料: Windows环境下Android Studio v1.0安装教程 http://ask.android-studio.org/?/article/9 1. 下载与安装 在http://w ...
- Android Studio快捷键指南(本文持续更新)
这是我在使用Android Studio过程中接触到的一些快捷键,和大家分享,后面会继续完善此文,也欢迎大家踊跃补充,一起完善. 快捷键 删除并剪贴行:Ctrl+X 复制一行:Ctrl+D 代码格式整 ...
- ubuntu相关软件合集(持续更新中)
本人使用的是Ubuntu-Kylin14.04,自带了日历.输入法.优客助手等易于上手的应用.省的每次安装完原生的系统再麻烦的安装,下面介绍默认应用外的相关常用软件: 一.Keylock Applic ...
随机推荐
- 使用 requests 维持会话
什么是 Cookie 和 Session: 简单来说,我们访问每一个互联网页面,都是通过 HTTP 协议进行的,而 HTTP 协议是一个无状态协议,所谓的无状态协议即无法维持会话之间的状态.比如,仅使 ...
- TCPdump指定时间或者指定大小进行循环抓取报文
背景:我们用tcpdump工具循环抓取网卡上的报文,我们会遇到如下情况: 1. 抓取报文后隔指定的时间保存一次: 2. 抓取报文后达到指定的大小保存一次: 本文就这两种情况给出tcpdump的使用方法 ...
- 【delphi】delphi出现‘尚未调用CoInitialize’异常
1. 由于使用ado等引起的异常. 2. 若是子线程或某方法操作ado可在该方法开头和结尾分别加上: function myfun begin CoInitialize(nil); // your c ...
- 【线程】Thread中的join介绍
因为sleep.wait.join等阻塞,可以使用interrupted exception异常唤醒. 一.作用 Thread类中的join方法的主要作用就是同步,它可以使得线程之间的并行执行变为串行 ...
- Python Tkinter Entry(文本框)
Python学习记录--关于Tkinter Entry(文本框)的选项.方法说明,以及一些示例. 属性(Options) background(bg) borderwidth(bd) cursor e ...
- wps 批量调整图片大小 宏
Sub 批量调整图片大小() ' ' 批量修改图片 Macro ' 宏由 zxz 录制,时间: 2014/10/29 '批量调整图片大小,避免图片太大显示不完全 '循环图片集合 For Each iS ...
- sencha touch Carousel 自动切换
代码是在网上找的,忘记原出处了 /** * 跑马灯自动切换 */ Ext.define('ux.RotatingCarousel', { extend: 'Ext.carousel.Carousel' ...
- HDU 2199 Can you solve this equation(二分答案)
Can you solve this equation? Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K ( ...
- POJ 2456 Aggressive cows(二分答案)
Aggressive cows Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 22674 Accepted: 10636 Des ...
- cheerio ==> node中的jquery
三.cheerio ==> node中的jquery https://www.npmjs.com/package/cheerio $ npm install cheerio -- save 1 ...