Android移植与开发
Android移动开发基础教程 第2章 Android界面开发

android:textSize
显示文字的大小
android:textColor
显示文字的颜色
android:gravity
文字在文本框中的位置
android:ellipsize
文字内容超过文本框大小时的显示方式
android:password
是否以点代替显示输入的文字
android:editable
设置当前对话框是否可以被取消
setIcon(Drawable icon)
设置对话框的标题图标
setItems(CharSequence[] items, .OnClickListener listener)
DialogInterface
将对话框的内容设置为列表
setMessage(CharSequence message)
2.4 对话框
自定义对话框
除了创建已有的对话框样式外,AlertDialog.Builder还支持调用serView()方法显示自定义的View。
通过XML布局文件控制Android的界面,可以使界面的设计更加简单清晰,具有更低地耦合性。而且这种方式可以将 视图的逻辑从Java代码中抽离出来,更加符合MVC的设计原则。Android也推荐使用XML的方式设计界面。
Android开发基础知识入门
第2章 Android界面开发
2.2 常用布局
线性布局
2.1 视图组件和视图容器
基本概念
(1)组件或控件:界面的基本元素; (2)视图(View):所有控件的基类; (3)视图容器(ViewGroup):控件的载体;
Android开发基础知识入门
第2章 Android界面开发
2.1 视图组件和视图容器
Android_ROM制作移植及精简教程

Android_ROM制作,精简及移植教程本教程主要内容有:Android系统文件夹结构解析、应用软件说明、定制精简、ROM签名把包等内容。
刷机有风险,出问题自负。
其实这个教程一早就想写的,但由于时间及本人的懒惰,一直拖着。
今晚终于静下心来写好本文,本文有部份内容来自于网络。
速度与华丽,你喜欢那个。
是不是想要一个又够速度又华丽的ROM呢?我是一个追求新鲜的人,对于手机的ROM,我又追求稳定、精简、美观、省电。
现在Hero ROM有很多,最新的有第三方Android 2.1版本,但这些ROM的制作者都会跟据自已的个人喜欢会增加和增少相应的功能或是界面,但我们往往不喜欢这些ROM的某些小方面,所以随着而来面对的问题就是怎样把这个ROM修改成为一个自已真正需要的ROM呢?以往一直是依靠“大杀器”来解决,但觉得还是过于麻烦,所以寻求办法自己动手修改ROM。
于是有了本文。
废话少说,进入题。
一、Android系统文件夹结构一个完整的ROM根目录会有以下几个文件夹及文件:dataMETA-INsystemboot.img系统目录说明1. 应用程序安装目录1) 系统应用程序所在目录/system/app/*.apk2)用户安装应用程序所在目录/data/app/*.apk3) 注意:a)在模拟器中,每重启一次,/system/app/下的应用都会被还原,有时/data/app下也会被清除b)若在/system/app和/data/app下有重名的应用,不一定会启动哪一个,尤其是在adb install杀死正在运行的程序时,有时旧的就会被启动2.用户数据所在目录/data/data/应用包名/shared_prefs 配置文件/data/data/应用包名/databases/* 库文件所在目录3. SD卡对应目录/sdcard/而我们需要处理的只是两个文件夹里面的内容:data/app –该文本夹里的文件可以全删,也可以自由添加自已所需安装的应用软件,刷机安装后可以自由删除。
Android移动应用开发实验指导书.docx

《Android移动应用开发》实验指导书课程代码:总课时数:适用专业:院(系)名称:实验一深入理解Activity目标(1)掌握Activity的开发、配置和使用。
(2)掌握Intent的几种常用的属性。
(3)Android系统内置Intent的使用。
(4)了解Activity的生命周期实验软、硬件环境硬件:PC电脑一台;配置:winxp或win7系统,内存大于4G,硬盘250G及以上JDK1.7 、Eclipse、ADT、Android SDK实验主要技术基础(1)活动是Android的四大组件之一,它是一种可以包含用户界面的组件,主要用于和用户进行交互。
(2)Intent是Android程序中各组件之间进行交互的一种重要方式,它不仅可以指明当前组件想要执行的动作,还可以在不同组件之间传递数据。
任务:1、请在AndroidManifest.xml文件中配置SecondActivity;配置Intent的Action属性为com.sise.intent.action.JHY_ACTION。
配置Category属性为com.sise.intent.category.JHY_CATEGORY通过隐式Intent的使用从FirstActivity,编写代码,运行程序,预期效果启动SecondActivity如下所示。
图1 程序运行初始化界面 图2 点击图1中的按钮后的运行结果。
传递数据到SecondActivity,并使用Intent从FirstActiv2、请使用显式Intent启动SecondActivity编写代码,运行程序,预期效果如下所示。
图1 程序运行初始化界面图2 点击图1中的按钮后的运行结果3、使用Intent传递数据从SecondActivity返回数据到FirstActivity中去。
编写代码,运行程序,预期效果如下所示。
图1 程序运行初始化界面图2 点击图1按钮运行结果图3 点击图2按钮运行结果实验方法与步骤(1)创建活动Activity是Android系统提供的一个活动基类所有的活动都必须直接或间接继承此类才能拥有活动的特性。
精通Android游戏开发(将本地PC游戏轻松移植到Android的秘技)ch02

构建静态测试程序;
7
图 2-5 项目布局
30 第 2 章 在 Android 中编译本地代码 将文件部署到设备来完成测试。 下面将会更详细地分析这些文件,了解它们的具体工作。首先从 Java 层开始讨论。 1. 主活动 ch02.project.MainActivity.java 文件由向导工具创建,是这个应用的入口点。代码清单 2-1 显
建 Android 项目)对话框。
2
(2) 在这个对话框中,输入一个项目名(此例中为 ch02.Project)。.
(3) 输入一个应用名(此例中应用名为 Chapter2 )。
(4) 输入一个包名(此例中包名为 ch02.project)。
3
(5) 输入一个活动名(此例中的活动名为 MainActivity)。
// 加载库 System.load(LIB_PATH);
// 运行 String[] argv = { "MyLib", "arg1", "arg2" };
Natives.LibMain(argv);
} catch (Exception e) { e.printStackTrace();
} }
/** * 写入一个流 * * @param in * @param out * @throws IOException */
jni.Natives.java:这是一个新文件,包含本地库中将调用的本
地方法,以及 C 库将在 Java 中完成的回调。
必须在本地文件夹中创建以下文件(见图 2-5)。
lib.c:这是本地库的主代码,其中包含所有必要的 JNI 系统调
5
用,从而可以在 Android 与 C 之间来回级联传递信息。
Android应用开发

Android应用开发第一章:Android应用开发简介Android应用开发是基于Android系统的移动应用开发。
Android系统是由Google公司开发的一种基于Linux内核的开源操作系统,它被广泛应用于移动设备。
Android应用开发是一门复杂而又有趣的技术,它给予开发者强大的工具和平台,使得开发人员可以创建各种类型的应用程序,包括游戏、应用、工具以及标准的手机功能等。
第二章:Android系统架构Android系统架构包括Linux内核、硬件抽象层、运行时库、应用框架和应用层。
Linux内核提供了系统底层的设备驱动、内存管理、进程管理等基本功能。
硬件抽象层则为上层提供了一套统一的硬件接口,使得上层应用可以不用关心硬件差异即可运行于不同的设备上。
运行时库包括Dalvik虚拟机、核心库等,是编写Android应用程序的基础。
应用框架是Android开发的核心,提供了各种应用程序开发的API和类库,包含了Android的四大组件:Activity、Service、BroadcastReceiver、ContentProvider。
最上层为应用层,是Android系统的应用程序集合。
第三章:Android应用开发环境搭建搭建Android应用开发环境需要安装JDK、Android SDK、Eclipse或Android Studio等工具。
首先需要先安装JDK,并配置环境变量;接着安装Android SDK,并安装对应的API包和工具;最后安装Eclipse或Android Studio等集成开发环境。
第四章:Android应用开发基础在Android应用开发中,需要熟悉Java编程语言和Android API。
Java是Android开发的基本语言,而Android API是开发Android应用程序的核心。
Android应用开发中需要掌握的基础知识包括:Activity、Fragment、Intent、Service、BroadcastReceiver、ContentProvider等。
安卓开发流程

安卓开发流程
安卓开发流程主要包括以下几个步骤:
1. 需求分析:确定应用的功能和需求,明确开发目标。
2. UI设计:根据需求,设计应用的界面布局和交互方式。
3. 开发环境搭建:安装Android Studio开发工具,配置Java开发环境和Android SDK。
4. 项目创建:在Android Studio中创建一个新的Android项目。
5. 编写代码:根据需求和设计,编写应用的Java代码,包括业务逻辑、界面交互和数据处理等。
6. 资源管理:管理应用所需的图片、音频、文本等资源文件。
7. 调试与测试:在模拟器或真机上调试应用,检查是否存在bug或逻辑错误。
8. 优化与改进:优化应用的性能和用户体验,解决可能存在的问题。
9. 打包和发布:将应用打包成APK文件,并发布到应用商店或其他发布渠道。
10. 更新与维护:根据用户反馈和市场需求,不断优化和更新应用,进行bug 修复和功能改进。
以上是安卓开发的主要流程,具体的开发流程还会根据不同的项目和需求进行调整和补充。
Android详细移植过程
apt-get 设置好后,按照下面的步骤安装相关组件Required Packages (Ubuntu 8.04)$ sudo apt-get install python2.5$ sudo apt-get install sun-java6-jdk sun-java6-bin sun-java6-jreAdd/Edit /etc/bash.bashrcexport JA V A_HOME=/usr/lib/jvm/java-6-sun-1.6.0.07$ sudo apt-get install flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev zlib1g-dev zip curl valgrind libncurses5-dev build-essential$ sudo apt-get install x-dev$ sudo apt-get install libx11-dev编译Android source code$ cd ~/mydroid$ export ANDROID_JAVA_HOME=$JAVA_HOME$ cd ~/mydroid$ make编译Android KernelBuilding zImageGo into kernel directory$ cd ~/mydroid/kernel$ make msm_defconfig ARCH=arm$ make ARCH=arm CROSS_COMPILE=../prebuilt/linux-x86/toolchain/arm- eabi-4.2.1/bin/arm-eabi-可以在 kernel/arch/arm/boot/目录下看到build好的zImage原文地址:/archiver/tid-2413.html由于论坛改版,很多有用的资源都不见了,所以这里把自己对cupcake下载和编译方法进行详细说明,以后还会陆续发完善的开发板移植说明、内核编译说明、一些模块级的分析等,希望对刚开始做android的朋友有所帮助,同时欢迎高手指正。
android开发实验报告总结
android开发实验报告总结《android 开发实验报告总结》在当今科技飞速发展的时代,移动应用开发成为了热门领域之一,其中 Android 开发更是备受关注。
通过本次 Android 开发实验,我获得了丰富的实践经验和深刻的技术理解。
接下来,我将详细阐述这次实验的各个方面。
实验背景与目标随着智能手机的普及,Android 操作系统占据了相当大的市场份额。
本次实验的目标是通过实际开发一个简单的 Android 应用程序,深入了解 Android 开发的流程、技术架构以及相关工具的使用,从而提高自己的编程能力和解决问题的能力。
实验环境与工具在实验过程中,我们使用了 Android Studio 作为主要的开发工具。
Android Studio 提供了丰富的功能,包括代码编辑、调试、版本控制等,极大地提高了开发效率。
同时,还需要安装 Java 开发环境(JDK)以及 Android SDK 等必要的组件。
实验内容与步骤首先是项目创建。
在Android Studio 中,通过选择合适的项目模板,设定项目名称、包名等基本信息,创建了一个初始的 Android 项目框架。
接着是界面设计。
利用 XML 布局文件,定义了应用的界面元素,如按钮、文本框、列表等,并通过设置属性来调整它们的外观和位置。
同时,使用了 ConstraintLayout 等布局管理器,实现了灵活且美观的界面布局。
然后是功能实现。
通过编写 Java 代码,实现了应用的各种功能逻辑。
例如,点击按钮触发相应的事件处理,从网络获取数据并展示在界面上,以及与本地数据库进行交互等。
在数据存储方面,学习和使用了 SharedPreferences 来保存简单的配置信息,以及 SQLite 数据库来存储复杂的数据结构。
在网络通信方面,使用了 HttpURLConnection 或者 Volley 等库来发送 HTTP 请求,获取服务器端的数据。
调试与测试在开发过程中,不可避免会遇到各种问题。
安卓Android ROM定制、移植教程。
CyanogenMOD移植教程转自秋叶随风Ivan;乐蛙论坛等。
第一章:环境的搭建一.系统选择和安装建议使用ubuntu LTS 10.04 X64新手朋友推荐Deepin Linux 基于ubuntu定制的,适合新手使用/download系统安装教程,以下方法通用于UBUNTU官方版本U盘安装:/index.php/Unetbootin光盘安装:/index.php/光盘安装搭建android编译环境:英文好的请猛击这里:WIKI:/index.php?title=Building_from_source1.安装JDK因为ANDROID大部分东西是java写的,所以首先我们需要安装JDK 打开终端按照如下命令输入或者直接复制粘贴:编译android 2.3 或者更新的版本请使用jdk 6$ sudo add-apt-repository "deb / lucid partner"$ sudo apt-get update$ sudo apt-get install sun-java6-jdk如果你需要编译的是2.2以下的版本请使用JDK 5,因为现在大家都是使用Gingerbread 以上的系统,这里就不介绍jdk5如何安装的了,如果有需要请度娘或者google2.安装各种依赖包64位环境:依然是终端中输入$ sudo apt-get install git-core gnupg flex bison gperfbuild-essential \zip curl zlib1g-dev libc6-dev lib32ncurses5-dev ia32-libs \x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev \libgl1-mesa-dev g++-multilib mingw32 tofrodospython-markdown \libxml2-utils xsltproc如果这些依赖包依然不能解决你的问题,请参考如下:/wiki/HTC_Hero_(CDMA):_Com pile_CyanogenMod_(Linux)/source/initializing.html3.下载代码打开终端:在个人目录下面使用的是android 代替我的工程,用cm7代替CM7的源码用CM9代替CM9的源码如果要更新下载CM7的源码请输入:mkdir -p ~/binmkdir -p ~/android/cm7个人目录下的bin目录是为了保存repo 等更新脚本的依然再终端输入:curlhttps:///dl/googlesource/git-repo/repo > ~/bin/repochmod a+x ~/bin/repo可以把~/bin/repo 加入到环境变量里面终端输入sudo gedit /etc/environment在PATH=“”加入PA TH="/home/ivanhuang/bin:" ivanhuang为个人目录的名称,也就是计算机登录名更改结束之后终端输入source /etc/environment就能直接在终端中使用repo 命令了。
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。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Android移植与开发学校:西南大学学院:计算机与信息科学学院班级:08级自动化1班姓名:李鹏学号:222008321042025组员:万敏、孔祥瑞、宋彬彬、贾振涛指导老师:黄伟邮箱:weihuang@赵亦欣邮箱:zyx_cq@目录1、引言 ........................................................................................................................................- 1 -2、设备 ........................................................................................................................................- 1 -3、Android移植...........................................................................................................................- 1 -4、Android开发环境配置...........................................................................................................- 6 -5、Android程序设计................................................................................................................ - 12 -6、总结 ..................................................................................................................................... - 22 -7、文献 ..................................................................................................................................... - 22 -1、引言随着科技和经济的发展,人们对于生活的要求越来越高。
手机也是同样的,人们总是希望可以界面华丽美观、操作方便、维修方便、刷机和装软件方便。
为了满足人们的要求,谷歌开发出了Android系统,这一系统可以满足人们的基本需求。
由于Android的出现,以前的手机系统基本淘汰,以后Android必将成为潮流,所以学习Android系统移植和程序开发成为了当代大学生的一条走向成功的道路。
2、设备友善之臂的Tiny6410开发板、计算机等等。
3、Android移植(1)制作SD卡启动盘Step1:SD-Flasher.exe烧写软件,请注意,你需要通过管理员身份来打开该软件才行,如图打开后,如下图所示,请注意,此时软件中的“ReLayout”按钮是有效的,我们将使用它来分割SD卡,以便以后可以安全地读写。
(注:此次制作启动盘是基于win7操作系统的,在windows xp系统下不能进行分区,所以xp系统可以在他人的win7下分好区再制作启动盘,或者自己下载分区工具分区,这里就不多说了)Step2:点按钮找到所要烧写的superboot.bin,如图Step3: 把FAT32格式的SD卡插入笔记本的卡座,也可以使用USB读卡器连接普通的PC,假如卡中有重要数据,请务必先备份卡中的数据,否则会丢失数据。
点“Scan”,找到的SD卡就会被列出,可以看到此时SD卡是不能被烧写的(红色圈处) ,如图Step4: 再点“ReLayout”,会跳出一个提示框,如图,提示你SD卡中的所有数据将会丢失,点“Yes”,开始自动分割,这需要稍等一会。
分割完毕,回到SD-Flasher主界面,此时再点“Scan”,就可以看到SD卡卷标已经变为“FriendlyARM”,并且可以使用了,如图。
Step5: 点“Fuse”,superboot就会被安全地烧写到SD卡的无格式区中了,以后你也可以在WindowsXP中烧写这张卡,不必担心FAT32区域中的数据被破坏。
Superboot被写入SD卡后是无法看到的,该如何检测呢?很简单,把SD卡插到开发板上,并把开发板上S2开关设置为“SDBOOT”模式,开机后,就可以看到板上的LED1在不停的闪烁,这就说明Superboot已经正常运行了。
如果你没有看到LED1闪烁,或串口也没有输出,说明没有烧写成功。
以下几种原因均有可能导致不行,并有解决方法:1. 使用了笔记本自带的读卡器,建议使用外接的usb读卡器,注意,有的外接usb读卡器也是不行的2. 使用了山寨的SD卡,请使用正品,最好是4G或以上的SDHC3. 使用了microSD/TF卡+卡套,请使用普通的SD卡,因为卡套的方式非常容易导致接触不良4. SD卡启动功能是6410本身就带的,里面的代码是固定死的,它有可能无法识别某些卡,因此有些卡可能不行,建议多试几张。
5. 因接触不良导致无法使用SD卡启动的可能性比较大,建议多插拔几次试试,这包括(1)核心板和底板的接触,(2)SD卡座本身的接触6. 6410从SD卡启动时,要把superboot或其他bootloader烧写到SD卡高位地址起始处,如果你的卡在此处损坏了,也是无法启动的(虽然你可以在普通电脑上使用);烧写工具是无法检测你的卡是否损坏的。
(2)移植Android系统Step1: 把SD卡插入电脑,双击打开”images\FriendlyARM.ini”文件。
Step2: 找到”OS=CE6”,并改为”OS=Android”,保存修改,取出SD卡插到开发板上。
(注:假如”OS=Android”就不用修改)Step3: 上电开机,同样的“滴”一声开始,同样的“滴滴”两声结束,更新完毕,整个过程不到1分钟。
Step4: 把开发板S2开关设置为”NAND”启动,这时重启系统就可以看到Android已经被安装好了。
注意:如果你听到急促的“滴滴”声,或者看四个LED并行闪烁,那说明你可能拼写出错了。
Step5:当你安装了Android系统,第一次使用时,会出现一个校准界面,如图,校准程序会自动检测你使用的触摸屏设备,如果采用了一线触摸,将显示:/dev/touchscreen-1wire如果使用的是ARM本身带的触摸屏控制器,会显示:/dev/touchsreen,如图根据提示,依次点击十字中心点进行校准,直到进入系统,如果你点的位置比较偏,或有校准时有抖动,将会进行循环校正。
Step6:进入系统后界面如下:(3)按键说明:开发板总共有8个用户按键,它们在android系统中的定义如下表所示:4、Android开发环境配置Step1:下载并安装JDK (Java SE Development Kit)由于Android SDK和Eclipse都是用Java编写的,因此需要先在Windows 7上安装JDK,JDK可按以下方法下载:(注:下载的好处是保证能获得最新版本,但不想或无法下载的用户,可以直接用已经下载好了此文件,名字为jdk-6u25-windows-i586.exe)访问网站/technetwork/java/javase/downloads/index.html,在页面中点击JDK:在打开的页面中,选中Accept License Agreement:接着根据平台选择jdk下载链接,Windows7 32bit版本是点击jdk-6u25-windows-i586.exe 下载JDK的安装程序,下载完成后,双击安装程序,根据向导的提示完成安装即可。
安装完成后,需要将JDK命令添加到Path环境变量中,通过下面的方法将JDK命令所在的路径添加到Path环境变量中:1) 右击“计算机”->属性,再选择左边导航的“高级系统设置”选项。
(注:win7是如此,xp系统中右击“计算机”->属性->高级)2) 点击右下角的“环境变量”选项。
3) 在"系统变量"中,找到Path 环境变量,双击它,在变量值前面追加以下内容:“C:\Program Files\Java\jdk1.6.0_25\;”,注意后面有一个分号。
(注:该地址是安装jdk的文件夹地址,假如不是默认的,需要改为自己安装jdk的文件夹地址)4) 点击“确定”完成环境变量设置。
Step2: 下载并安装Android SDK首先,前往从网站/sdk/获取Windows平台的最新的Android SDK 套件,下载完成会得到一个安装文件,下载页面如下图所示,请下载红色方框框出的文件:(注:下载的好处是保证能获得最新版本,但不想或无法下载的用户,可以直接用已经下载好了此文件,名字为installer_r11-windows.exe)(注:截止2011-05-18日,最新版本为installer_r11-windows.exe,与上图有点出入)双击下载得到的安装程序installer_r11-windows.exe,根据安装向导的提示安装即可,默认将安装在C:\Program Files\Android\android-sdk目录下,安装完成后,SDK Manager默认会自动启动。
如果安装过程中出现找不到JDK的错误提示,只要Back回去一次再点Next即可。
SDK Manager启动时,由于我们还没有下载任何的Packages,因此会弹出一个Choose Packages to Install的对话框,询问你是否安装所有可用的Packages,由于我只想安装Android 2.3相关的Packages,因此,这里我点击Cancel关闭对话框,回到Android SDK and AVD Manager的主界面。
以后可以通过在开始菜单中找到Android SDK Tools,然后点击SDK Manager 来启动SDK Manager,如下图所示:由于默认SDK是安装在C盘,所以最好将SDK Manager以管理员身份运行,否则在下载并安装Packages时会因为无法往C盘写入数据而导致失败,通过以下方法设置在每次启动SDK时,都以管理员身份启动:(注:如果系统用户就是超级管理员可以省去此步)1) 在开始菜单中右击SDK Manager 的快捷方式,点属性2) 在SDK Manager 快捷方式的属性对话框,点击“兼容性”的选项卡,选中“以管理员身份运行此程序”,如下图所示:以后每次点击快捷方式运行SDK时,都会弹出权限确认对话框,点击“是”即可以管理员身份运行程序。