Submitted by admin on 2011, July 13, 11:32 AM
说明:NewNetClient是源码目录名称,
当前环境变量设置:jdk,android sdk ,openssl的环境变量。
所需包文件:android.jar,signapk.jar.
C:/apk/hello/gen/android/hello
javac c:/apk/hello/*.java -classpath c:/testapk/android.jar -d c:/apk/classes
@rem主要是重新自动生成R.java文件,比如增加个图片或者字符串或者增加个layout目录xml文件
C:/Users/dell>aapt package -m -J c:/apk/NewNetClient/gen -M c:/apk/NewNetClient/AndroidManifest.xml -S C:/apk/NewNetClient/res -I C:/apk/android.jar
@rem 主要是重新自动生成R.java文件,比如增加个图片或者字符串或者增加个layout目录xml文件
aapt package -m -J src -M C:/apk/NewNetClient/AndroidManifest.xml -S C:/apk/NewNetClient/res -I C:/apk/android.jar
@rem 编译java文件包括R.java 并输出到c:/apk/classes
C:/Users/dell>javac C:/apk/hello/src/android/hello/*.java C:/apk/hello/gen/andro
id/hello/*.java -classpath C:/testapk/android.jar -d c:/apk/classes
@rem 把目录下*.class文件打成jar包,为了后面能够创建apk需要的classes.dex文件(生成的文件在当前目录 *。* 是相对路径)
c:/apk/classes>jar cvf ffff.jar *.*
@rem 把刚才的jar包转换成android手机能够运行的dex文件
c:/apk/classes>dx --dex --output=classes.dex c:/apk/classes/ffff.jar
@rem 如果存在则删除
IF EXIST fffnew3.apk. (
del fffnew3.apk.
echo message ab
) ELSE (
echo fffnew3.apk. missing.
echo message ab c
)
@rem 生成应用程序apk文件ffffqc.apk
c:/apk/classes>aapt package -z -u -f -M C:/apk/hello/AndroidManifest.xml -S C:/apk/hello/res -I C:/testapk/android.jar -F c:/ffffqc.apk
@rem 把前面生成的classes.dex文件压缩到apk文件,最终生成可运行的apk应用程序
c:/apk/classes>aapt add C:/ffffqc.apk classes.dex
@rem 方法一:给生成的apk进行自动签名,无签名的apk是无法安装
c:/testapk>java -jar signapk.jar aimoxiu.x509.pem aimoxiu.pk8 c:/apk/classes/fffnew3.apk fffnew3last.apk
"C:/Program Files/Java/jre6/bin/jarsigner" -verbose -keystore "D:/apksign/MyAnd.keystore" -signedjar %1 %2 "D:/apksign/MyAnd.keystore"
@rem 私钥的生成方式
@rem 产生RSA私钥(private key)
openssl genrsa -3 -out testkey.pem 2048
@rem 产生PKCS#10格式的认证请求。所谓认证请求就是发给认证机构认证的一个请求,它主要包括一个公钥和一些相关信息(如组织名称和联系人邮件地址)。
openssl req -new -x509 -key testkey.pem -out testkey.x509.pem -days 10000 / -subj ‘/C=US/ST=California/L=Mountain View/O=Android/OU=Android/CN=Android/emailAddress=android@android.com’
@rem 把私钥的格式转换成PKCS #8(Private-Key Information Syntax Standard.)
openssl pkcs8 -in testkey.pem -topk8 -outform DER -out testkey.pk8 -nocrypt
它的用法如下:
Usage: signapk publickey.x509[.pem] privatekey.pk8 input.jar output.jar
第一个参数是公钥,即前面第二步产生的testkey.x509.pem。
第二个参数是私钥,即前面第三步产生的testkey.pk8。
第三个参数是要签名的文件。
第四个参数是输出的文件(即签名后的文件)。
如:java -jar signapk.jar testkey.x509.pem testkey.pk8 update.zip update-signed.zip
@rem 方法二:keytool生成MyAndf.keystore签名 jarsigner生成签名的apk文件
keytool -genkey -alias MyAndf.keystore -keyalg RSA -validity 20000 -keystore MyAndf.keystore
jarsigner -verbose -keystore MyAndf.keystore -signedjar fffnew3last.apk fffnew3.apk MyAndf.keystore(密码123456 1234567)
开始打包:
javac C:/Users/dell>javac C:/apk/NewNetClient/gen/com/palmdream/NewNetClient/*.java C:/apk/NewNetClient/src/com/palmdream/Core/*.java C:/apk/NewNetClient/src/com/palmdream/ListHolder/*.java C:/apk/NewNetClient/src/com/palmdream/NetEngine/*.java C:/apk/NewNetClient/src/com/palmdream/NewNetClient/*.java C:/apk/NewNetClient/src/com/palmdream/XMLData/*.java C:/apk/NewNetClient/src/org/kxml2/io/*.java C:/apk/NewNetClient/src/org/xmlpull/v1/*.java -classpath c:/apk/android.jar -d c:/apk/classes
echo javac is ok
c:/apk/classes>jar cvf fffnew3.jar com/*.* org/*.*
echo jar cvf is ok
c:/apk/classes>dx --dex --output=c:/apk/classes/classes.dex c:/apk/classes/fffnew3.jar
echo dx --dex ok
c:/apk/classes>aapt package -z -u -f -M C:/apk/NewNetClient/AndroidManifest.xml -S C:/apk/NewNetClient/res -I C:/apk/android.jar -F c:/fffnew3.apk
echo aapt package ok
c:/apk/classes>aapt add C:/fffnew3.apk classes.dex
echo aapt add ok
c:/testapk>java -jar signapk.jar aimoxiu.x509.pem aimoxiu.pk8 fffnew3.apk fffnew3last.apk
echo java last ok
完成
@rem 多线程控制 启动 停止 暂停 启动新的线程 以及联网时header的传递。
@rem 基于android 代码保护
加注释
android | 评论:0
| Trackbacks:0
| 阅读:1428
Submitted by admin on 2011, July 12, 11:57 AM
Rom 更新实用程序 (RUU)开始准备
运行 ROM 更新实用程序 (RUU) 前,请确认下列事项:
· Android 手机已安装了正确的电脑驱动程序。
· Android 手机已通过 USB 线连接到了电脑。电脑必须能识别 Android 手机。
· 电脑的待机或休眠模式已禁用。
· 关闭电脑上所有正在运行的应用程序。
重要注意事项 除非 RUU 向导指示,否则不要对 Android 手机进行交互操作。
安装 ROM 更新实用程序 (RUU) 的一般步骤
1. 安装 ROM 更新实用程序 (RUU) 将会删除 Android 手机上的所有信息和数据。建议您使用 PC 同步工具将 Android 手机上的个人数据备份到电脑上。
2. 在电脑上运行 ROM 更新实用程序 (RUU) 将 ROM 更新安装到 Android 手机上。(下一节内容将详细介绍如何安装 ROM 更新)。
3. 使用 PC 同步工具将您的数据恢复到 Android 手机上。
如何安装 ROM 更新
警告:安装 ROM 更新实用程序 (RUU) 将会删除 Android 手机上的所有信息和数据。
1. 在欢迎页面,单击下一步开始 RUU 安装。
2. 查看对话框中所列指示,确认已按要求操作。单击下一步继续。
3. 将显示一条信息,表明工具正在验证和获取关于 Android 手机的信息,为更新作准备。等待此验证过程完成。
4. 验证完成后,将显示关于 Android 手机的当前信息。单击更新继续。
5. 下面将显示 Android 手机信息、关于当前映像版本以及新映像更新版本的信息。如果确定要安装新 RUU,请单击下一步继续。
6. 将显示一条确认信息,表明在 Android 手机上安装必要文件 (包括无线电通讯模块映像) 所需时间。单击下一步开始更新。更新过程中,屏幕上会显示不停变化的进度条。
注:在更新过程中,进度条可能会停止移动。这是正常现象,因为 RUU 正在自动进行调整以完成更新。
7. 如果显示以下画面,表示 RUU 更新已完成。单击结束退出工具。
疑难解答及错误恢复
几乎所有 RUU 错误均可恢复。出现错误时,工具将显示错误信息,并提供恢复方法让您继续进行更新。
如果错误无法恢复,请参见常见问题中的详细信息。
错误 [110]:文件打开错误
此错误信息表示 RUU 缺少某些文件或那些文件已损坏,因此 RUU 无法继续进行更新。您必须安装完整的 RUU 程序包,然后再重试。
错误 [120]:主电池电量
如果 Android 手机的电池电量不足 (电池电量应大于 30%),将显示此错误信息。虽然 RUU 会提示您插接交流适配器,但仍需确认您的 Android 手机有足够电量完成更新。(Android 手机在连接到电脑安装 RUU 时无法对电池进行充电)。
错误 [121]:屏幕锁定
如果 Android 手机启用了屏幕锁定功能,将显示此错误信息。您应先禁用锁定状态,才能继续进行 RUU 更新。
错误 [130]:型号 ID 错误
错误 [131]:客户 ID 错误
如果使用错误的 RUU 进行更新,将显示上面其中一条错误信息。RUU 会检查型号 ID 和语言 ID 是否与 Android 手机兼容。请务必使用正确的 RUU 进行更新。
错误 [155~159]:映像错误
如果使用不正确的 RUU 进行更新,且映像文件超出 Flash ROM 大小,将显示上面其中一条错误信息。在这种情况下,请下载正确的 RUU 版本,然后再重试。
错误 [170]:USB 连接错误
如果 Android 手机没有正确连接到主机电脑上,将显示此错误信息。这可能是 USB 连接问题,也可能是电脑 USB 驱动程序的问题。请确保 Android 手机正确连接到主机电脑上,并/或检查电脑驱动程序是否与Android 手机相匹配。
RUU 更新常见问题
1. 问:向服务中心寻求帮助前我应该做些什么?
答:将电脑安装屏幕上显示的错误信息 (错误编号) 记录下来,这样就能将错误情况告诉服务中心人员。
2. 问:验证过程要多长时间才能完成?
答:验证过程大约需要 1 分钟,但仍要取决于您电脑的速度。
3. 问:如果 Android 手机上的进度条不动了,我应如何处理?
答:不要进行任何操作。这是正常现象,因为 RUU 正在自行调整以完成该程序。如果没有出现操作提示,不要断开 Android 手机与电脑的连接使该进程中断。
4. 问:在更新过程中,进度条在移动。如果显示错误信息 (错误 [150], [151]…[159]),应如何操作?
答:如果遇到连接中断、电源中断、电脑主机当机或其他意外原因时,可能会出现此情况。Android 手机屏幕上会显示相应信息。如果进度条在移动,表明更新正在进行,Android 手机会自动重新启动,更新成功。如果 Android 手机屏幕显示“失败”的红色字样或屏幕变黑,表示更新失败。Android 手机将无法进入 Android 界面。此问题一般可以恢复。您需要按照错误信息框中的指示进行操作,即重置 Android 手机,再次运行 RUU。
5. 问:在更新过程中,进度条有几分钟停止移动,但没有显示错误信息,应该怎么办?
答:您可先拔下 Android 手机上的 USB 线,看是否会显示错误信息。如果显示错误信息,请按照提示进行恢复。如果没有显示错误信息,请重置 Android 手机,重新运行 RUU。如果问题仍然存在,请重新启动电脑,然后再重试。
6. 问:如果遇到错误 [170]:USB 连接错误,我应如何处理?
答:您可以重置 Android 手机,再次运行 RUU。如果问题仍然存在,请重新启动电脑,然后再重试。
7. 问:如果遇到错误 [120]:主电池电量不足,我应如何处理?
答:如果 Android 手机的电池电量不足 (电池电量应大于 30%),将显示此错误信息。虽然 RUU 会提示您将手机插上交流适配器,但仍需确认您的 Android 手机有足够电量进行 ROM 更新。Android 手机在 RUU 更新过程中无法为电池充电。
8. 问:如果遇到错误 [121]:屏幕锁定,应如何处理?
答:如果 Android 手机启用了屏幕锁定功能,将显示此错误信息。您应先禁用锁定状态,才能继续进行 RUU 更新。
9. 问:我用 RUU 进行更新,但没有成功。现在我的 Android 手机始终以 RUU 失败模式启动,再也无法进入 Android 主界面,应该如何处理?
答:这是正常现象,可以恢复。请按以下指示重置 Android 手机,再与电脑进行连接。
1. 从 Android 手机上拔下 USB 线。
2. 重置 Android 手机 (取出再重新装上电池)。
3. 将 USB 线重新插到 Android 手机上。
4. 检查电脑是否能识别 Android 手机。
5. 返回 ROM 更新实用程序。
android | 评论:0
| Trackbacks:0
| 阅读:1583
Submitted by admin on 2011, July 8, 3:13 PM
近日,记者了解到水货手机市场上原本具备国外运营商网络锁的手机,多数商家仅简单的采用所谓“白卡”的方式进行解锁,并销售给消费者。这一现象也本使系统稳定的手机却只能以工程测试机的不稳定形式供消费者使用。
手机测试卡用作解锁卡
“白卡”是一种手机测试SIM卡,由于其一般颜色为白色,故被俗称为“白卡”,其被广泛应用于通讯工业生产及测试过程。手机测试卡本身用于测试显示手机、调节器版本,显示话音加密码、还原通话时间和误码率等方面的手机功能性测试。
据悉,现在主要测试卡有GSM、TD-SCDMA、WCDMA、CDMA、CDMA2000多种网络类型的支持。其卡身内存常用的有32K/64K/128K,并可根据不同的测试需求进行定制。
近日,记者了解到一些水货市场中的商家普遍利用“白卡”对有国外运营商网络锁的手机进行解锁,使其被解锁的手机可以使用国内运营商的网络。而这一现象也使得专用于测试的“白卡”有了新的市场。
另据记者了解,销售解锁“白卡”的分类与手机测试卡分类不同,网络类型多被以不同手机品牌或地区的划分所取代。如销售价约为65元左右的MrSIM解锁卡则专门针对解锁日*本运营商的网络锁而设计,主要适合NTTDocomo和Softbank手机的解锁。
针对手机品牌的则有夏普手机解锁卡、iPhone手机解锁卡、NOKIA及索尼爱立信解锁卡、HTC解锁卡等。尽管卡的网络属性及针对品牌不同,但SIM卡样式基本相同,颜色也全部为白色。
某销售“白卡”的商家表示,此卡主要销售对象为一些水货手机商或部分手机发烧友。
手机易变为工程测试机
跟据市场调查发现,由于此种方法进行手机的解锁效率相对较高,水货市场上的多数商家均喜欢采取此种方式对含有外国网络锁的手机进行解锁,然后再销售给消费者并可插入我国运营商的SIM卡后使用。
但记者针对此事采访相关进行手机启动项安装程序开发的人士时却得知,此种方法解锁的一些智能手机尽管可以正常使用,但实际上由于“白卡”为手机测试卡,用此卡解锁后的手机系统引导模式将被更改,当手机开机加载系统时将会加载入工程测试机的启动项。
本身为正式销售的手机产品,“白卡”解锁在系统层却变为工程测试机,影响了用户使用手机时系统的稳定性。
另有相关专业人士提示消费者,“白卡”解锁后的智能手机在二次刷机后还可脱离工程测试机属性,并跳出原有国外运营商的网络锁。只因步骤相对复杂,大部分水货销售商对此步骤进行了省略。建议消费者在熟悉所购买的手机后要求水货商进行二次刷机或进行自行刷机。
了解了白卡机的源头之后,再来看看怎样辨别是否白卡机:
1.机子从一开始入手至今,没自己去彻底root过,但是你发现你的机子进去FASTBOOT里面可以看到已经显示有”S-OFF”字样!(关机,按住返回键和电源键直到开机,三色英文字体的界面就是FASTBOOT,看最顶部一行英文后面显示“S-ON”还是“S-OFF”即可,我的就是S-OFF);
2.机子一到手至今开机就是个安智网的登录界面而不是原厂的开机界面也不是是Alpharev S-OFF第一屏,那就很大可能是工程机了(安置登录的最近好像少了,我的就是原厂开机界面,不知道是不是JS们换了另一个体面点的ROM);
3.试试更换你的第一屏吧!如果没权限会提示“no allowed”。
android | 评论:0
| Trackbacks:0
| 阅读:1036
Submitted by admin on 2011, July 8, 3:06 PM
HTC安卓系统手机进入HBOOT界面显示的是 ACE PVT SHIP S-ON/OFF或者是 ACE PVT ENG S-ON/OFF,现对此显示进行深入了解(SHIP S-OFF、ENG S-OFF、软解、白卡解锁释疑)。
ACE: 这个是手机的内部代号
Desire HD这台 HTC版叫Desire HD 内部代号是 ACE
PVT : 这台机子的主板类型是PVT
关于主板,稍微说明下下哈,一台硬件设备上市前,其都经历过大量的实验以及修改,主板版本的不同代表了这台机子是什么时期的硬件
主板类型其实还有很多 EVT DVT CVT PVT 什么的
EVT:工程机 恭喜你了,你拿到了工程样机,说好听的多有纪念价值啊,说不好听的,这台机子跟上市的机子可能有很大硬件上的区别,基本上不要指望能跟大家用一样的ROM软件啥的
DVT:开发机 比EVT好点,硬件较稳定或接近稳定状态,但是基本也都存在跟正式版硬件上的差异,请更多关注纪念价值吧~
CVT:商试用机(认证机)拿来试用,交给运营商贴ok标签的机型,一般到这个版本,硬件是不会再去改动的了,和零售版不会有啥区别
PVT:最终量产机 不需解释了吧
这里一般不会有假的,大可放心(EVT,DVT数量极少,就算不小心流出市面,JS要是有能力改SPL信息的话,也早就不用做JS这行啦~) 如果你还不放心,告诉你,确认主板类型最保险的还是拆机直接看主板,主板上直接印有的,安心了吧~~
SHIP: 当前SPL版本
这个纠结的人多啊~~ 哈哈 这个是当前SPL的版本(SPL是啥?靠,完机器人怎能不知道呢?简单来说就是你这台手机的BIOS)
版本也有几个的 SHIP ENG DEV
SHIP: 原生版 也就是系统原生自带的SPL,处女膜SPL哦~
ENG: 工程版(自制版) 这里其实更多是自制的意思,也就是大神们修改过后的SPL
DEV: 开发版 极少有,对咱们终端用户意义不大的
S-OFF : 安全锁 OFF
S-ON:安全锁打开 CID校验 检测往里刷的东东副不符合CID校验,不符合的就砍你没商量
S-OFF: 安全锁关闭 SUPERCID
简单来说,S-OFF 关闭CID校验,刷ROM比较自由,权限最大,大部分自制ROM都要求关闭CID校验的,所以才有说S-ON刷不了这么一说
回到我们手上的机器
现在大家应该知道 白卡解的是SHIP S-OFF 软解的是 ENG S-OFF
看过上面的解释后,估计大家也就明白区别了
白卡就是那HTC内部的某神奇SIM卡,直接修改了安全锁校验为OFF 这本身就是官方内部的东西,只不过不知道JS通过什么手段拿到了这张官方SIM卡
对于白卡解的机子,并没有对原生SPL进行修改,所以还是SHIP版的 就只是安全锁OFF了
软解的机子,基本上都对SPL进行了操作修改,可以说并不是原生系统SPL了 所以显示版本为 ENG
那SHIP 和 ENG 有啥区别呢
原生的SPL 对于我们刷ROM是没有任何限制,但是对于刷RECOVERY和刷IMG是要验证签名的,这也是为啥下面替换开机画面那贴里所谓“白卡机用不了”的原因
而ENG的SPL,去掉了这些签名机制,可以直刷
但也并不是说SHIP版的就刷不了,跟ENG版的有些少不同罢了.
而且SPL本身是可以刷的,SHIP版ENG版,没啥所谓啦 反正刷ROM都一样的
android | 评论:0
| Trackbacks:0
| 阅读:1099
Submitted by admin on 2011, July 8, 2:59 PM
想要玩好android,有一些词汇那是相当的重要,必须要牢记的。否则会给以后的刷机留下很大的麻烦。
什么?你说只玩游戏不刷机?那也要明白这些词,因为这些都是日常使用当中对你很有帮助的。比如为什么我的手机那么慢?为什么别的人桌面效果我没有?为什么我的手机信号总不好?为什么我的手机会出现灵异事件?
如果掌握了这些东西,就不会被自己身上发生的灵异事件吓到。即使吓到了,你也知道怎么在网上询问,其他网友也知道怎么跟你沟通。
Recovery
Recovery模式可以给你的android系统升级固件版本,升级系统版本,升级通讯基带版本,做APPtoSD,系统备份还原等等很多功能,所以一定一定要明白recovery。
进入recovery的方法也很简单,拿G1来说,按住小房子+电源进入就好了。
root
root权限和我们在windows系统的administrator权限一个意思 。root是android系统中的超级管理员用户帐户,该帐户拥有整个系统至高无上的权利,所有对象他都可以操作。(现在的手机,大部分都已经提取了root权限)
radio
Radio是无线通信模块的驱动程序,负责网络通信。
菜单->设置->关于手机->基带版本,看是不是62.50S.20.17H_2.22.19_26I。
升级系统一定要刷新最近的radio,而且新的radio对通信质量的帮助很大。属于比刷的东西。
SPL
SPL负责主板,电源、硬件初始化程序。SPL 一般提供这几部分功能:检测手机硬件、寻找系统启动分区、启动操作系统为系统的基本维护提供操作界面,可以通过数据线与操作终端建立连接,并接受和执行相应命令。
是否spl了 用超级终端:键入su 回车 再键入df 回车 看到data 91M的就是spl,其他则不是。
固件版本
固件是说操作系统的系统内核版本。就好像是电脑用的winXP,win7的样子。
目前最新的固件是【2.2】,但是个人比较倾向于【2.1】,经过几个改动,目前还是很稳定的。
ROM
ROM就和固件版本关系比较暧昧了。我还用刚才的例子打比方,固件是winXP,那么ROM就是XPsp3,是固件版本的细分。再或者说,比如是番茄花园的XP,枫林玉林的XP。
android | 评论:0
| Trackbacks:0
| 阅读:940
Submitted by admin on 2011, July 2, 10:05 AM
Ubuntu 10.10 x64的版本
第一步:安装Java SDK 1.6 后续的版本估计都是要用JDK 1.6了吧
这里给个地址,大家自助下载:
http://www.oracle.com/technetwork/java/javase/downloads/index.html
然后修改~/.profile 添加下边这两行:
export PATH=$PATH:/opt/jdk1.6/bin/
export JAVA_HOME=/opt/jdk1.6/
其中上边的/opt/jdk1.6是我安装JDK的地方,大家想装那里就随意吧,也可以让1.6和1.5共存,就看大家愿意怎么弄了
第二步:Ubuntu 10.10中缺少什么就装什么,这里主要总结一下出错的地方
1、编译过程中出现com.sun.javadoc不存在的错误,如下方式解决:
export ANDROID_JAVA_HOME=$JAVA_HOME
2、usr/include/gnu/stubs.h:7:27: error: gnu/stubs-32.h: No such file or directory
解决办法:sudo apt-get install libc6-dev-i386
3、/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.4.3/libstdc++.so when searching for -lstdc++
解决办法:sudo apt-get install g++-multilib
4、Traceback (most recent call last):
File "../repo", line 595, in <module>
main(sys.argv[1:])
File "../repo", line 562, in main
_Init(args)
File "../repo", line 181, in _Init
_CheckGitVersion()
File "../repo", line 210, in _CheckGitVersion
proc = subprocess.Popen(cmd, stdout=subprocess.PIPE)
File "/usr/lib/python2.6/subprocess.py", line 623, in __init__
errread, errwrite)
File "/usr/lib/python2.6/subprocess.py", line 1141, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory
解决办法:sudo apt-get install git
5、/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.4.5/../../../libz.so when searching for -lz
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.4.5/../../../libz.a when searching for -lz
/usr/bin/ld: skipping incompatible //usr/lib/libz.so when searching for -lz
/usr/bin/ld: skipping incompatible //usr/lib/libz.a when searching for -lz
/usr/bin/ld: cannot find -lz
collect2: ld returned 1 exit status
解决办法:sudo apt-get install lib32z1-dev
6、/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.4.3/libstdc++.so when searching for -lstdc++
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.4.3/libstdc++.a when searching for -lstdc++
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.4.3/libstdc++.so when searching for -lstdc++
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.4.3/libstdc++.a when searching for -lstdc++
解决办法:sudo apt-get install g++-multilib
7、/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.4.3/../../../libncurses.so when searching for -lncurses
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.4.3/../../../libncurses.a when searching for -lncurses
/usr/bin/ld: skipping incompatible /usr/lib/libncurses.so when searching for -lncurses
/usr/bin/ld: skipping incompatible /usr/lib/libncurses.a when searching for -lncurses
/usr/bin/ld: cannot find -lncurses
解决办法:sudo apt-get install lib32ncurses5-dev
8、prebuilt/linux-x86/sdl/include/SDL/SDL_syswm.h:55:22: error: X11/Xlib.h: 没有那个文件或目录
prebuilt/linux-x86/sdl/include/SDL/SDL_syswm.h:56:23: error: X11/Xatom.h: 没有那个文件或目录
解决办法:sudo apt-get install libx11-dev
最后就是搞定代码开始编译了
转
android | 评论:0
| Trackbacks:0
| 阅读:866
Submitted by admin on 2011, July 2, 10:04 AM
建立编译环境
1.在VirtualBox上安装Ubuntu
2.安装JDK
$ sudo apt-get install sun-java5-jdk 或
$ sudo apt-get install sun-java6-jdk (donut 1.6)
3.安装flex,bison,gperf,libsdl-dev,libesd0-dev,libwxgtk2.6-dev(可选),build-essential,zip,curl。
$ sudo apt-get install flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev
4.安装Valgrind(可选),此工具可以帮你查找内存泄漏、堆栈破坏以及数组访问越界等错误。
$ sudo apt-get install valgrind
5.下载Android源代码
从Android官方下载donut分支的Android源代码
sudo apt-get install git-core curl
curl http://android.git.kernel.org/repo >~/bin/repo
chmod a+x ~/bin/repo
cd ~/bin/
$ ./repo init -u git://android.git.kernel.org/platform/manifest.git -b android-1.6_r2
$ ./repo sync
6.在 ~/.bashrc 加环境变量。
$ vim ~/.bashrc
在.bashrc文件的最后面加入如下2行,即将JDK的安装路径加入到环境变量中
export JAVA_HOME=/usr/lib/jvm/java-6-sun
export ANDROID_JAVA_HOME=$JAVA_HOME
完成后,$source ~/.bashrc即可生效。
运行 $ java -version 将出现下面提示:
[root@Neil java]# java -version
java version "1.6.0_11"
Java(TM) SE Runtime Environment (build 1.6.0_11-b03)
Java HotSpot(TM) Client VM (build 11.0-b16, mixed mode, sharing)
[root@Neil java]#
说明Java已经成功被安装了
通过
$ update-alternatives --config javadoc
$ sudo update-alternatives --config java
$ sudo update-alternatives --config javac
然后选一个编号,就切换过去了。
编译Android
$ cd android //(进入android目录)
$ make //(编译android)
注意:编译时要确保系统的内存在1.2GM以上,且有足够的硬盘可用空间,否则会编译失败终止。
Android编译环境提供了”showcommands”选项来显示编译命令行,如:
$ make showcommands
1.5_r2版编译出错的解决方法:
The Android code contains a bug that hasn’t been solved up to the date of this article.
So before you start compiling the code, you’ll need a few modifications, or the build will fail (after consuming some of your time and patience). The error is:
external/qemu/sockets.c: In function 'sock_address_init_resolve':
external/qemu/sockets.c:637: error: 'EAI_NODATA' undeclared (first use
in this function)
external/qemu/sockets.c:637: error: (Each undeclared identifier is
reported only once
external/qemu/sockets.c:637: error: for each function it appears in.)
make: *** [out/host/linux-x86/obj/EXECUTABLES/emulator_intermediates/
sockets.o] Error 1
To fix this, before compiling the android code, open ~/mydroid/external/qemu/sockets.c and add
#define __USE_GNU
just before the #include <netdb.h>
新编译的system.img不能正常使用sdcard 的解决办法:
$ mount -t vfat /dev/block//vold/179:0 /sdcard
也可以更改system/core/vold程序
运行emulator
我们这里使用已经编译好的模拟器kernel镜像,即kernel-qemu,位于android/prebuilt/android-arm/kernel目录下,然后运行模拟器。
1.在 ~/.bashrc 加环境变量。(本项可选)
$ vim ~/.bashrc
在.bashrc文件的最后面加入如下2行,即将Android工具的路径
export PATH=/archer/external/android/out/host/linux-x86/bin
PATH
export ANDROID_PRODUCT_OUT=/archer/external/android/out/target/product/generic
export ANDROID_SWT=/android/out/host/linux-x86/framework
2.创建Android虚拟设备
$ cd android/out/host/linux-x86/bin (进入模拟器程序所在目录)
$ ./android create avd -t 2 -n g1
其中 -t 指定TargetID (Android 1.5 SDK的ID为2,Android 1.0 SDK的ID为1),-n指定创建的Android虚拟设备名字。
3.运行emulator
$ cd android/out/host/linux-x86/bin (进入模拟器程序所在目录)
$ ./emulator -avd g1 或者
$ ./emulator -avd g1 -scale 0.8
其中 -avd指定Android设备名,-scale指定缩放比例。
按 Ctrl + F12 可以使模拟器屏幕旋转90度,即横屏、竖屏切换。
4.删除创建的Android虚拟设备
$ ./android delete avd -n g1
编译linux kernel
直接编译Android源码时,并没有编译 linux kernel。如果只运行模拟器,不用编译 linux kernel。
从emulator获取内核编译参数的配置文件:
启动模拟器
$ adb pull /proc/config.gz .
解压缩config.gz $ gzip -d config.gz
将config文件替换kernel文件夹下的.config文件。
根据需要,修订config与Makefile配置文件
编译模块
Android中的一个应用程序可以单独编译,编译后需要重新生成system.img。
在Android目录下运行
$ . build/envsetup.sh 或者
$ source build/envsetup.sh ,然后就会多出几个可用的命令:
- croot: Changes directory to the top of the tree.
- m: Makes from the top of the tree.
- mm: Builds all of the modules in the current directory.
- mmm: Builds all of the modules in the supplied directories.
- cgrep: Greps on all local C/C++ files.
- jgrep: Greps on all local Java files.
- resgrep: Greps on all local res/*.xml files.
- godir: Go to the directory containing a file.
- printconfig: 当前build的配置情况.
可以使用 --help查看用法。
如:在修改了某一个模块以后,可以使用 $ mmm <目录> 来重新编译所有在<目录>中的所有模块,使用 $ mm 编译当前目录中的所有模块。
编完之后,即修改了Android系统以后,可以使用 $ make snod 重新生成system.img。
转
android | 评论:0
| Trackbacks:0
| 阅读:1426
Submitted by admin on 2011, July 2, 10:02 AM
安卓现在是炙手可热啊,原来支持其他系统的玩家对都纷纷转投安卓怀抱了。在这里给大家也是给自己普及下刷机知识。
一、关于Root
1、什么是“root”?
“Root”权限相当于电脑的管理员权限,“Root”后用户可以完全权限访问Linux内核:“Root用户”可以编辑修改系统 内的任何东西。出于安全考虑,“普通用户”没有该完全访问权限。
root你的手机 之后,你就可以读写未root时你无法访问的手机内部核心区块。
当然,是否root完全取决你自己。普通手机用户不root也可以很好的使用自己的手机。
2、为何要“root”我的手机?
最主要的原因是刷第三方ROM(相当于重装电脑的操作系统)。另外,有ROOT权限后就可以运行一些需要root的软件。
Root后,你可以做的事:
a)运行更多的Linux命令(android ADB)和超级用户权限。
b)可以使用许多需要root权限的软件(例如,钛备份,Root Explorer等)。
c)更改某些重要的核心系统设置 。比如,关闭官方 Rom的安全校验以使我们可以刷写第三方固件,或者运行某些有趣的调节程序 比如说超频,再或者还可以让我们安装核心recovery程序。
3、root安全吗?
是的。如果你胆大心细,按照教程来做,不会发生什么蛋疼的事。
4、root后会删除我的个人资料吗?
不会。root仅仅是改变系统权限而已。
5、root会使我的保修失效吗?
退一万步说,你可以unroot你的手机并恢复出厂设置,来假装什么事也没发生过。
6、root过程是可逆的吗?
是的。只要你愿意完全可以unroot你的手机。
二、关于S-OFF和刷机
1、“S-OFF”是什么?“S-ON”和“S-OFF”有什么区别?我为何需要“S-OFF”?
每一部手机缺省状态下都是“S-ON”。为了获取完全的写入权限(例如刷自制固件,装自制recovery工具),需要转换为“S-OFF”。
通常手机都是处于“S-ON”(Security ON)状态,此时手机“/system”和“/recovery”分区无法被读写。最直接的表现就是如果用RE管理器等高权限文件管理器删除“/system”文件夹下的程序,重启后程序又会出现(这也好多网友说获得root后还是删除不了系统自带软件的原因);另外无法修改开机第一屏画面。
S-OFF不同于root:S-OFF可以让你通过Bootloader里的Fastboot或者自制recovery(多数人用的都是clockwork)刷写自制固件。
2、如何“S-OFF”?
目前有两种S-OFF的方法:
a)通过安装工程模式 的hBoot来S-OFF。即所谓的软解。
b)通过某些设备,例如白卡来S-OFF。即所谓白卡解锁。
软解的手机进入Bootloader后第一行的末尾显示的是:ENG S-OFF,白卡解的手机则是:SHIP S-OFF。ENG意为engineering即工程模式,SHIP即意为原厂发布的。
3、如何改回“S-ON”?
因某些原因(送去保修等)想要恢复S-ON的话,需要下载 对应你手机版本的HTC 官方刷写程序RUU刷回原厂固件。这样S-ON就回来了。
4、“RUU”是什么?
RUU意为Rom Update Utility。是一个PC端的刷机工具。大多数RUU都是HTC官方发布的,其包含了刷机工具和官方固件,并打包为一个单独文件 。
5、什么是“Rom”?
Rom意为Read Only Memory,他指手机的不可访问的只读的内部存储单元。他包含了android操作系统和所有原厂预装应用软件工具。
通常一个完整的ROM(或者说固件)包含了:一个recovery镜像,一个boot镜像(包含了核心(Kernel)和ramdisk),一个系统镜像(操作系统,或者简称“OS”),和一个Radio镜像。
我们也经常把可刷入手机内存 的镜像统称为ROM或固件。
6、什么是“Radio”?我们为何要刷Radio?
一个合适的Radio可以改善我们手机的信号 、蓝牙、WiFi和GPS 。也许也可以提高手 机电池 的寿命。
7、什么是“刷机”?
刷机就是把一个新的固件镜像刷入手机的内存里。
你可以刷入一个recovery,或是一个boot,或系统,或Radio,或者是包含以上所有东西的完整Rom。
8、我为什么要刷机?
刷机后:
a)把你的手机更新到最新的官方固件(因为是官方的,所以无需root也无需S-OFF,也不会使保修失效)。
b)把你的手机去除品牌定制化,变成通用的官方固件。
c)刷入了自制固件,其:包含/去除HTC sense,其他android版本,等等。
d)安装了更好用的recovery工具,比如clockwork。
e)更合适的Radio。
9、刷机会删除我的个人资料吗?
如果你仅仅是刷boot或者recovery的话,不会。
但是如果你刷的是系统或者完整的Rom的话,会的。你个人的所有资料都会被清理掉,所以在刷机前请备份个人资料。
在菜市场里有很多备份软件。(例如钛备份)
你也可以备份NANDroid 。
10、刷机会使保修失效吗?
同样的退一万步讲,如果你备份后原厂固件或是下载了对应你手机版本的固件的话,可以随时刷回去。
同样,对于大多数的水货手机来说,一切保修都是浮云。
三、关于Bootloader和Recovery
1、何为“Bootloader”?
Bootloader是一个Rom里的固件管理工具。使用它可以让你恢复出厂设置,用Fastboot刷机,加载Recovery工具。
在Bootloader里你也可以查看S-ON/S-OFF的状态,固件和Radio的版本等等。
进入Bootloader无需root或S-OFF。在每台HTC出厂的手机里都有。
2、如何进入Bootloader?
关机,然后按住音量-和电源键。(需要把“快速开机 ”关闭,在“设置”》“应用程序”里改。或者拔掉电池,让手机真正的关机。)
你可以直接拔电池来退出Bootloader。
如果你装了自制recovery的话,可以进入recovery,然后重启手机。
3、如何备份我的当前ROM(固件)?
在自制recovery里备份。
4、自制recovery是什么?
自制recovery(比如clockwork)是一个增强的recovery版本,其替换了固件里原来的recovery。
自制recovery比原厂的recovery要好,因为他可以让你可以安全的刷写未签名的自制rom,也可以备份你手机内存里的整个固件镜像(NANDroid备份)。
5、如何安装ClokworkMod (CWM)Recovery?
你必须先root和S-OFF。然后用“Rom Manager”安装,或者单独下载clockwork recovery在ADB环境下手动刷写。
6、什么是NANDroid备份?
一个完整的体统镜像可以被重新刷回手机。其不仅仅是简单备份,因为他包含了当前在你手机内存里的所有内容:Boot、Recovery、系统、数据、缓存,等。他是你手机整个ROM的快照。
执行NANDroid备份的方法:进入clockwork recovery,进到“Backup and Restore”选项中执行。NANDroid备份将会被保存在sd卡ClockworkMod文件夹内。
7、如何加载NANDroid备份?
如果你可以进入clockwork recovery的话,只需简单的从他的菜单里加载NANDroid。
如果你的手机变砖从而无法进入clockwork recovery的话,也有最后一个方法:单独下载clockwork recovery至PC里,然后打开cmd控制台,进入存有clockwork recovery的目录,使用以下ADB命令刷写:“fastboot flash recovery recovery-clockwork-2.5.1.2-vision.img”。(前提是你的PC上有ADB环境,不过好像这招对白卡解锁的机器 无用)
8、什么是ADB?
ADB意为Android Debug Bridge。其使用Linux命令对手机发出指令。你可以在MS-DOS环境下直接使用ADB命令,或者进入ADB shell使用Linux命令。通过ADB,你可以安装软件,卸载软件,刷写镜像,改变手机设置等。
android | 评论:0
| Trackbacks:0
| 阅读:791