http://source.android.com/porting/customization.html

启动屏幕定制

网络定制平台

自定义预加载的应用程序

自定义浏览器的书签

电子邮件提供商定制

平台主题

启动屏幕定制

在启动时,Android会显示启动画面图像,同时启动该设备。如果你想修改默认的启动画面,如下操作:

1. 创建一个320x480的图像,在这个例子中用splashscreen.jpg.

2. 使用ImageMagick,转换您的.jpg文件通过.r格式:

convert screen.jpg screen.r

3. rgb2565 应用程序转换至 565 格式:

rgb2565 < screen.rgb > screen.565

4. 使用fastboot将图片写至闪存:

fastboot flash splash1 screen.565

网络定制平台

网络配置

Build, Android网络配置存储为一个被编译成二进制的形式资源。这一XML资源的表示位于//android/frameworks/base/core/res/res/xml/apns.xml. 此文件不包含任何配置APNs。你不应该修改这个文件,而是通过配置Build-time APNs(见Build-time APN的配置如下)。

每个网络配置存储在一个XML元素的语法如下:

<apn carrier="T-Mobile US"
 mcc="310"
 mnc="260"
 apn=" wap.voicestream.com"
 user="none"
 server="*"
 password="none"
 proxy=" 216.155.165.50"
 port="8080"
 mmsc="http://216.155.174.84/servlets/mms"
/>

Build-time APN的配置

要设置一个特定的产品目标的APN的配置,添加一个apns - conf.xml对产品的配置文件(不要修改默认的平台APNs)。这允许多个产品,有不同APNs,构建了相同的代码基础。

要配置在产品层面APNs,添加一行如下面的例子中的产品配置文件(vendor/<vendor_name>/products/myphone-us.mk):

PRODUCT_COPY_FILES := vendor/acme/etc/apns-conf-us.xml:system/etc/apns-conf.xml

APNrun time配置

在运行时, Android读取下列文件APNs

system/etc/apns-conf.xml

And Android的支持下运行时的网络配置方法, 可选择适当的APN配置:

Automatic Configuration:在启动时,Android 确定正确的网络配置上的MCCMNCSIM卡为基础,并自动配置所有的网络设置。

Manual Configuration:该平台还将支持运行时按名称(用户)的网络设置手动选择,例如,“Company Name US”,并支持手动网络配置项。

WAP / SMS Push Configuration:网络配置是标准的Android资源。在运行时,您可以安装一个新的系统资源APK包升级。这将有可能开发一个网络配置服务,监听一个特定的二进制短信的二进制短信包含网络配置信息的端口。注意:执行将依赖于网络运营商可能因不符短信端口,二进制短信格式等

自定义预加载的应用程序

若要自定义为一个特定产品(applications, input methods, providers, services, etc., 在产品配置设置PRODUCT_PACKAGES property,如下图所示的Android packages列表:

PRODUCT_PACKAGES := /
 <company_name>Mail /
 <company_name>IM /
 <company_name>HomeScreen /
 <company_name>Maps /
 <company_name>SystemUpdater

Package的名称应为每个包对应的 build目标规定的LOCAL_PACKAGE_NAME。例如,Android.mk建立<company_name>邮件引用上述目标,看起来是这样的:

# Build the <company_name>Mail application
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
 
LOCAL_MODULE_TAGS := user development
 
LOCAL_SRC_FILES := $(call all-java-files-under,src,tests)
 
LOCAL_STATIC_JAVA_LIBRARIES := <company_name>login-client
 
# Specify the package name
LOCAL_PACKAGE_NAME := <company_name>Mail
 
# Specify the certificate used to sign the application
LOCAL_CERTIFICATE := vendor/<company_name>/certs/app
 
include $(BUILD_PACKAGE)
 
# Build the login client static library
include $(LOCAL_PATH)/client/Android.mk

请注意,主屏幕只是一个Android应用程序,可以完全取代或更改源代码和应用程序资源(Java源代码,布局等)定制。

自定义浏览器的书签

浏览器的书签是储存在浏览器应用程序的字符串资源://android/packages/apps/Browser/res/values/strings.xml. 包。书签被定义为简单值的字符串数组称为“书签”。每个书签条目存储为一个数组值对,第一个代表书签名称,第二个书签的网址。例如:

<!-- Bookmarks -->
<string-array name="bookmarks">
 <item>Google</item>
 <item>http://www.google.com/</item>
 <item>Yahoo!</item>
 <item>http://www.yahoo.com/</item>
 <item>MSN</item>
 <item>http://www.msn.com/</item>
 <item>MySpace</item>
 <item>http://www.myspace.com/</item>
 <item>Facebook</item>
 <item>http://www.facebook.com/</item>
 <item>Wikipedia</item>
 <item>http://www.wikipedia.org/</item>
 <item>eBay</item>
 <item>http://www.ebay.com/</item>
 <item>CNN</item>
 <item>http://www.cnn.com/</item>
 <item>New York Times</item>
 <item>http://www.nytimes.com/</item>
 <item>ESPN</item>
 <item>http://espn.go.com/</item>
 <item>Amazon</item>
 <item>http://www.amazon.com/</item>
 <item>Weather Channel</item>
 <item>http://www.weather.com/</item>
 <item>BBC</item>
 <item>http://www.bbc.co.uk/</item>
</string-array>

Android应用资源,该平台将在平台上加载配置值的备用资源。见资源与国际化的Android SDK的细节。要配置一个特定的移动网络运营商的书签,放置在一个单独的您的自定义书签文件strings.xml, 并把它放在下一个移动网络代码(MNO)的特定的资源文件夹。例如,Browser/res/values-mccXXX-mncYYY/strings.xml , 其中XXXYYY代表三位MCC23位数字MNC值。

Android加载为默认值覆盖值任何配置特定资源,所以只需要包括书签字符串数组在此文件中的值。

电子邮件服务提供商定制

默认的电子邮件服务提供商设置存储为在电子邮件应用程序(//android/packages/apps/Email/res/xml/providers.xml),如下图所示。

<providers>>

<!-- Gmail variants -->
 <provider id="gmail" label="Gmail" domain="gmail.com">
 <incoming uri="imap+ssl+://imap.gmail.com" username="$email"/>
 <outgoing uri="smtp+ssl+://smtp.gmail.com" username="$email"/>
 </provider>
 <provider id="googlemail" label="Google Mail" domain="googlemail.com">
 <incoming uri="imap+ssl+://imap.googlemail.com" username="$email"/>
 <outgoing uri="smtp+ssl+://smtp.googlemail.com" username="$email"/>
 </provider>
 <provider id="google" label="Google" domain="google.com">
 <incoming uri="imap+ssl+://imap.gmail.com" username="$email"/>
 <outgoing uri="smtp+ssl+://smtp.gmail.com" username="$email"/>
 </provider>
 <provider id="android" label="Android" domain="android.com">
 <incoming uri="imap+ssl+://imap.gmail.com" username="$email"/>
 <outgoing uri="smtp+ssl+://smtp.gmail.com" username="$email"/>
 </provider>
 
<!-- Common US providers -->
 
<provider id="aim" label="AIM" domain="aim.com">
 <incoming uri="imap://imap.aim.com" label="IMAP" username="$email"/>
 <outgoing uri="smtp://smtp.aim.com:587" username="$email"/>
 </provider>
 <provider id="aol" label="AOL" domain="aol.com">
 <incoming uri="imap://imap.aol.com" label="IMAP" username="$email"/>
 <outgoing uri="smtp://smtp.aol.com:587" username="$email"/>
 </provider>
 <provider id="comcast" label="Comcast" domain="comcast.net">
 <incoming uri="pop3+ssl+://mail.comcast.net" username="$user"/>
 <outgoing uri="smtp+ssl+://smtp.comcast.net" username="$user"/>
 </provider>
 <provider id="compuserve" label="CompuServe" domain="cs.com">
 <incoming uri="imap://imap.cs.com" username="$user"/>
 <outgoing uri="smtp://smtp.cs.com" username="$user"/>
 </provider>
 <provider id="dotmac" label=".Mac" domain="mac.com">
 <incoming uri="imap+tls://mail.mac.com" username="$email"/>
 <outgoing uri="smtp+tls://smtp.mac.com" username="$email"/>
 </provider>
 <provider id="earthlink" label="Earthlink" domain="earthlink.net">
 <incoming uri="pop3://pop.earthlink.net" username="$email"/>
 <outgoing uri="smtp://smtpauth.earthlink.net:587" username="$email"/>
 </provider>
 <provider id="juno" label="Juno" domain="juno.com">
 <incoming uri="pop3://pop.juno.com" username="$user"/>
 <outgoing uri="smtp://smtp.juno.com" username="$user"/>
 </provider>
 <provider id="live" label="Windows Live Hotmail Plus" domain="live.com" note="@string/provider_note_live">
 <incoming uri="pop3+ssl+://pop3.live.com" username="$email"/>
 <outgoing uri="smtp+tls+://smtp.live.com" username="$email"/>
 </provider>
 <provider id="hotmail" label="Windows Live Hotmail Plus" domain="hotmail.com" note="@string/provider_note_live">
 <incoming uri="pop3+ssl+://pop3.live.com" username="$email"/>
 <outgoing uri="smtp+tls+://smtp.live.com" username="$email"/>
 </provider>
 <provider id="msn" label="Windows Live Hotmail Plus" domain="msn.com" note="@string/provider_note_live">
 <incoming uri="pop3+ssl+://pop3.live.com" username="$email"/>
 <outgoing uri="smtp+tls+://smtp.live.com" username="$email"/>
 </provider>
 <provider id="mobileme" label="MobileMe" domain="me.com">
 <incoming uri="imap+tls://mail.me.com" username="$email"/>
 <outgoing uri="smtp+tls://smtp.me.com" username="$email"/>
 </provider>
 <provider id="netzero" label="NetZero" domain="netzero.com">
 <incoming uri="pop3://pop.netzero.com" username="$user"/>
 <outgoing uri="smtp://smtp.netzero.com" username="$user"/>
 </provider>
 <provider id="sbcglobal" label="SBC Global" domain="sbcglobal.net">
 <incoming uri="pop3://pop.sbcglobal.yahoo.com" username="$email"/>
 <outgoing uri="smtp://smtp.sbcglobal.yahoo.com" username="$email"/>
 </provider>
 <provider id="verizon" label="Verizon" domain="verizon.net">
 <incoming uri="pop3://incoming.verizon.net" username="$user"/>
 <outgoing uri="smtp://outgoing.verizon.net" username="$user"/>
 </provider>
 <provider id="yahoo" label="Yahoo Plus" domain="yahoo.com" note="@string/provider_note_yahoo">
 <incoming uri="pop3+ssl+://plus.pop.mail.yahoo.com" username="$user"/>
 <outgoing uri="smtp+ssl+://plus.smtp.mail.yahoo.com" username="$user"/>
 </provider>
 
<!-- Common UK providers -->
 
<provider id="aol-uk" label="AOL" domain="aol.co.uk">
 <incoming uri="imap+ssl+://imap.uk.aol.com" label="IMAP" username="$user"/>
 <outgoing uri="smtp+ssl+://smtp.uk.aol.com" username="$user"/>
 </provider>
 <provider id="bt" label="BT Internet" domain="btinternet.com">
 <incoming uri="pop3://mail.btinternet.com" username="$email"/>
 <outgoing uri="smtp://mail.btinternet.com" username=""/>
 </provider>
 <provider id="tiscali" label="Tiscali" domain="tiscali.co.uk">
 <incoming uri="pop3://pop.tiscali.co.uk" username="$email"/>
 <outgoing uri="smtp://smtp.tiscali.co.uk" username="$email:wq"/>
 </provider>
 <provider id="yahoo-uk" label="Yahoo" domain="yahoo.co.uk" note="@string/provider_note_yahoo_uk">
 <incoming uri="pop3+ssl+://pop.mail.yahoo.co.uk" username="$user"/>
 <outgoing uri="smtp+ssl+://smtp.mail.yahoo.co.uk" username="$user"/>
 </provider>
 
<!-- Common Germany providers -->
 
<provider id="freenet" label="Freenet" domain="freenet.de">
 <incoming uri="pop3://mx.freenet.de" username="$user"/>
 <outgoing uri="smtp+ssl://mx.freenet.de" username="$email"/>
 </provider>
 <provider id="gmx" label="GMX" domain="gmx.de">
 <incoming uri="pop3+tls://pop.gmx.net" username="$email"/>
 <outgoing uri="smtp+tls://mail.gmx.net" username="$email"/>
 </provider>
 <provider id="T-Online" label="T-Online" domain="t-online.de" note="@string/provider_note_t_online">
 <incoming uri="pop3://popmail.t-online.de" username="$email"/>
 <outgoing uri="smtp://smtpmail.t-online.de" username="$email"/>
 </provider>
 <provider id="web.de" label="Web.de" domain="web.de">
 <incoming uri="pop3+tls://pop3.web.de" username="$user"/>
 <outgoing uri="smtp+tls://smtp.web.de" username="$user"/>
 </provider>
</providers>

正如所有的Android应用程序资源,该平台将在平台上加载配置值的备用资源。见<资源与国际化>Android SDK的细节。要配置一个特定的移动网络运营商,放置在一个单独的providers.xml定制的电子邮件提供商提供的文件,并把它下一个移动网络代码(MNO)的特定的资源文件夹。例如,Email/res/xml-mccXXX-mncYYY/providers.xml 其中XXXYYY代表三位MCC23digit MNC 值。

平台的主题

主题和风格

系统级的样式定义在//android/framework/base/core/res/res/values/styles.xml.

动画

Android的支持窗口并查看配置动画过渡。系统级动画定义在全局资源文件//android/framework/base/core/res/res/anim//.

更多相关文章

  1. android 网络图片双缓存
  2. Android(安卓)Asynchronous Http Client-Android异步网络请求客
  3. Android网络之HttpUrlConnection和Socket关系图解
  4. Android的XMPP协议的smack开源框架
  5. Android网络请求库——android-async-http使用
  6. 在Android库中不能使用switch-case语句访问资源ID
  7. Android常用的网路框架
  8. Android逆向之旅—解析编译之后的Resource.arsc文件格式
  9. Android网络渗透套件—dSploit

随机推荐

  1. android50大秘籍
  2. 如何获取Android源码
  3. 彻底分清Activity的启动模式,明白什么情况
  4. Android中用AsyncTask简单实现多线程
  5. Android开发笔记之adb参数指南
  6. Android开发指南-三维图形
  7. android 5.0
  8. Android(安卓)Studio 学习 - HelloWorld
  9. Android(安卓)Framework ContentProvider
  10. Android(安卓)AsyncTask 初探