如何移植android2.1源代码到自己的手机上
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何移植android2.1源代码到自己的手机上相关的知识,希望对你有一定的参考价值。
一,准备好android2.1源码编译环境以及手机USB调试环境。二,将手机上硬件驱动程序以及相关的配置文件通过ADB命令保存好。
三,针对不同的手机机型,制作相应的vendor配置文件。
四,编译源码。
五,通过手机提供的bootloader刷机或者直接以recovery的方式更新ROM。
在以上五个步骤中,其中最难处理的便是第2个步骤,这个步骤需要熟悉每个手机机型的硬件参数,并且能够在手机上找到相关的驱动程序以及了解他们如何配置。而CyanogenMod团队公布的源码当中,己经将相关的工作做好了,编译源码之前仅仅需要执行相应的shell命令,便可顺利的下载相应的手机驱动程序以及配置文件。
下面是移植步骤,供参考:
一,首先需要下载CyanogenMod 5.0.8的源码:
$ mkdir android-cm5
$ cd android-cm5
$ repo init -u git://github.com/CyanogenMod/android.git -b eclair
$ repo sync
二,下载CyanogenMod需要的一些共同文件,如果想最终版本中不需要这些APK,也可以通过配置/vendor/cyanogen/cyanogen.mk文件将这些需要的APK COPY命令注释掉。
$ cd vendor/cyanogen/
$ ./get-rommanager #下载一个RomManager.apk包,主要是刷ROM用的。我没用过。
$ ./get-google-files #其它的一些google开发的android apk包,我也没有用过!
三,下载针对htc legend(g6)的vendor.
$ cd ../../vendor/htc
$ git clone git://github.com/aleho/android_vendor_htc_legend.git #下载针对htc legend(g6)手机的vendor,里面包括相关的配置参数,以及从手机上下载驱动程序的SHELL命令。
$ mv android_vendor_htc_legend/ legend
$ cd legend
$ ./extract-files.sh #确保这个命令执行将你的手机连接好电脑并且开了手机USB调试,adb命令可以连接手机。这个过程主要是下载htc legend(g6)驱动程序以及配置文件。
四,针对CyanogenMod 5.0.8源码打上htc legend(g6)的补丁包,这个补丁包主要是wifi和触摸屏的,如果不做,触摸屏将无法触摸以及wifi功能无法启动。 参考技术A 不太好 参考技术B 刷机 参考技术C 编译源代码,对你的手机做适配
你如何同时为*所有*手机/移动设备写作?
【中文标题】你如何同时为*所有*手机/移动设备写作?【英文标题】:How do you write for *all* phones/mobile devices simultaneously? 【发布时间】:2009-09-27 16:49:11 【问题描述】:我们创建在移动设备上运行的非游戏程序; iPhone、Windows Mobile、Android、Palm WebOS 等。我们的主程序是用 C# 为 Windows Mobile 编写的,我们被要求将其移植到 iPhone。我们不期待:
-
学习曲线
Objective-C、XCode 和 Cocoa Touch。
维持两个的痛苦
保存产品的代码集
在两个不同的平台上同步。
我们已经决定,作为一项战略,我们希望同时在尽可能多的移动平台上创建所有新产品,这是一项艰巨的任务。
我们知道我们将不得不屈服于这些,但我们更愿意:
避免强迫我们的用户 连接到网络以使用产品。 没有一堆不同的集合 源代码。 支持尽可能多的移动平台 我们可以。我的问题是这样的; 您对针对 2 到 5 个最受欢迎的移动平台开发的最佳策略有何建议?
编辑:根据 cmets,我想澄清一下,我们的产品在 PalmOS 和 Winmobile 上都广受好评。它在两个平台上的工作方式完全相同,使用户可以轻松切换手持设备并继续使用它。
现在我们即将创建许多新的商业应用程序,并希望将其扩展到其他硬件/操作系统。您对在许多新平台上进行部署有什么建议?
【问题讨论】:
【参考方案1】:考虑通过网络实现您的应用程序。这违反了您对“避免用户连接到网络”的偏好,但出于以下原因考虑使用网络:
-
如果您的 C# 应用程序以正确的方式编写,您可以通过重用现有库向这些应用程序公开 Web 前端。
几乎所有现代移动平台都支持Web 2.0。
您的开发人员可以继续使用他们习惯使用的语言 (C#) 进行编写。
many advantages 用于编写 Web 应用程序与特定于平台的应用程序。
【讨论】:
我很惊讶没有人要求他查看离线网络应用程序,这些应用程序似乎符合未连接标准,同时保持了适应尽可能多的平台的目标。 无法连接的网络应用程序很难说 WIndows Mobile,但再过一两年,WinMob 将不再是问题。【参考方案2】:考虑 Appcelerator Titanium、Rhomobile 的 Rhodes、PhoneGap、xmlvm.org 或其他跨设备工具包。
【讨论】:
使用跨设备工具包将帮助您快速进入市场。但是,这将意味着您在所有设备上都会获得糟糕的用户体验。这对您的业务可能是致命的; iPhone 和 Android 用户有数千款应用可供选择,用户体验良好,变得挑剔。如果他们认为该应用程序不够像 Android 或 iPhone,他们会跳过您的应用程序。这很糟糕,因为 Android 和 iPhone 用户是您想要的,他们更有可能为应用程序付费。【参考方案3】:我假设您已经完成了市场调查,并且实际上知道所有平台都会盈利,而不仅仅是为了开发一两次而消耗您的资源。
除非你打破“不连接到互联网”规则,否则没有很好的答案。但是有一个很好的答案;普通的老C。
在普通的旧 C 中实现所有应用程序逻辑。然后;
iPhone - Objective-C 是 C 的严格超集,因此只需按原样使用代码即可。并使用 Cocoa Touch 在 Objective-C 中编写 UI。
Android - Android 的 Java 有 JNI 用于调用用 C 编写的本机代码。编写一个薄粘合层,并使用普通的 Android 的 Java 实现您的 UI。
Windows Mobile - 您可以从任何 .NET 应用程序调用本机代码。因此,编写另一个粘合层,并使用 C# 或您喜欢的 .NET 语言实现您的 UI。
Symbian - Symbian 使用 C++ 的变体,因此就像在 iPhone 上一样,您可以按原样调用 C 代码。使用 C++ 和 Symbian API 编写您的 UI:s.
如果您打破了“不连接到互联网” 规则,那么使用您现有的 C# 代码实现服务器并使用 HessianC# 将其公开为 Web 服务是轻而易举的事。然后,Hessian 实现适用于您可以安装应用程序的每部手机,自 2002 年左右开始销售。
【讨论】:
【参考方案4】:我建议您将应用程序的核心和 GUI 分开。因此,您可以继续使用 C# 为 Windows mobile 和 iPhoneOS 开发应用程序(感谢monoTouch)。使用此策略,您只需在 Windows mobile (C#) 和 iPhone (Cocoa Touch) 上开发特定的 GUI。
对于其他移动操作系统,您不能使用跨平台开发环境(目前)。您需要重新开发所有应用程序。
所以:
Windows Mobile:核心 (C#) 和 GUI(C#) iPhone:核心(C#)和 GUI(Cocoa Touch) Android:核心(Java)和 GUI(Java) 其他:取决于操作系统【讨论】:
MonoTouch 仍然没有答案。你仍然必须学习 CocoaTouch,然后在没有像样的调试器的情况下实现你的应用程序。 MonoTouch 也不会在 Android 上为您提供帮助。而是在 C 计划中编写您的应用程序逻辑。并编写三个不同的用户界面。 iPhone 上的 Cocoa Touch,Android 上带有 JNI 调用的 Java,以及 Windows Mobile 上带有本机调用的 .NET。【参考方案5】:虚拟化
我听说 VMWare 正在开发一种移动虚拟化产品,可以将平台统一到移动设备上的 VM 内的单个执行点,这取决于您是否着急。它几乎肯定会支持大多数智能手机平台(Windows Mobile、Android、Symbian、Blackberry 甚至 iPhone)。当他们支持所有人时,他们(和我们)肯定会受益最大。
如果你不着急,可以等一下。
【讨论】:
【参考方案6】:使用适用于 Iphone 的 c# 应用程序查看 Monotouch。它是 iPhone 的 .net 框架的 OSS 版本。
【讨论】:
【参考方案7】:我会反其道而行之,给你一些严厉的爱,而不是简单地回答你提出的问题。
我的想法是,为什么要制作 2-5 个版本的应用程序,充其量只能在所有平台上获得不冷不热的接收?因为那是你将要得到的。
如果您想制作广受好评的应用程序并让用户兴奋地使用它们,请让他们充分利用该平台。 iPhone 应用程序应该对用户输入进行深思熟虑,并利用尽可能多的平台功能,例如多点触控、轻松数据存储、加速度计、摄像头等。
Palm 应用在后台运行良好,因此请编写充分利用这一点的内容。它甚至可能不止一个应用程序来保持 Palm 简单而小巧的应用程序方法。
Android 应用可以更紧密地与系统集成,因此让它们这样做以造福于用户。
您使用任何应用程序的主要好处应该是您完全了解该领域,并且可以描述问题领域的哪些方面最适合任何给定设备的优势。移动应用程序很小(ish),您从尝试跨设备共享代码中获得的任何小收益(以及它如何在 Java/Obj-C 之间准确地工作,更不用说 Android 与 Blackberry 库的差异?)完全丢失在您的失真中通过适应的棱镜来理解。
【讨论】:
【参考方案8】:尝试使用PhoneGap!您只需要了解网络技术。
【讨论】:
【参考方案9】:你的问题有点晚了。但是您可以使用 Rhodes (http://rhomobile.com/products/rhodes) 为每个主要的智能手机操作系统编写代码。数以万计的其他开发人员这样做。 Rhodes 是第一个智能手机应用程序框架,也是唯一一个将 Web 开发人员所享有的 Model View Controller 优势提供给原生智能手机开发的框架。
【讨论】:
添加问题永远不会太晚。谢谢,亚当。以上是关于如何移植android2.1源代码到自己的手机上的主要内容,如果未能解决你的问题,请参考以下文章