这篇主要是把我尝试的“Eclipse导入android内置应用程序”过程记录下来。我尝试的是导入内置的Browser应用。admin管理员组文章数量:1605045
一、导入源码问题
1.首先是将源码中的browser源代码拷贝出来(源码路径packages\apps)。
2.把我们要用的几个class.jar拷贝出来,以备之后加入到工程项目中。
(1)源码路径out\target\common\obj\JAVA_LIBRARIES\android-common_intermediates下的class.jar
(2)源码路径out\target\common\obj\JAVA_LIBRARIES\framework_intermediates下的class.jar
(3)源码路径out\target\common\obj\JAVA_LIBRARIES\core_intermediates下的class.jar
(4)源码路径out\target\common\obj\Apps\Browser_intermediates下的class.jar
3.在eclipse下新建一个android工程,这时候要配合你用的源码版本,勾选SDK Version. 我用的是3.0的
导入后会看到好多错误。如何消除这些错误就要用到步骤2中的class.jar文件了。
4.添加一个User Library,名字你随便取一个。我随便取一个叫MyLib.
然后在这个MyLib中加入上面那个几个class.jar文件。
接下来这步比较重要,那就是把MyLib移到最上方。
这时候就不再报错了。我这里是这样的。可能你要根据具体情况进行修正。
5.这时导入源码的问题就告一段落了。
二、如何安装到模拟器上。
1.移除模拟器上自带的Browser.apk
在我们完成了(一)中导入源码的动作之后,我迫不及待的点击了运行。但是很不幸,apk是产生了,但是没有能安装到模拟器端。
后来想想很正常,一方面原本模拟器上就已经存在了一个Browser应用程序你不一定能再装一个。所以我们要先移除模拟器上的Browser应用,这个移除你需要root权限。
我是这样做的。打开命令行窗口,一次运行如下命令:
(1)adb shell mount -o remount ,rw /
(2)adb shell mount -o rw,remount -t yaffs2 /dev/block/mtdblock3 /system
(3)adb shell chmod 777 /system
这时你就有权去删除Browser这个应用程序了。
运行adb shell再转至Browser.apk所在的目录下。
cd system\app
移除Browser.apk
rm Browser.apk
这时你再到模拟器上看,就会发现Browser被你给移除了。
2.给apk签名
此时你已经卸载了模拟器自带的Browser.apk,你可能又想点击运行,但是你可能和我一样,又一次失望了。又报了一个错误,
我得到的错误大致是关于Signature not match。我的想法是,Eclipse产生的BrowserActivity.apk签名可能和自带的那个Browser.apk的签名不一样,所以你装不上去。
于是我到网上去查资料,改签名。
http://dev.10086/cmdn/supesite/?uid-49302-action-viewspace-itemid-907
上面这个网址上的信息给了我很大的帮助。其中提到的第一个方法,我试过,是绝对有用的。这里我主要讲一下我尝试的第二个方法。就是用signapk.jar的方式给apk签名。
(1)将Eclipse产生BrowserActivity.apk拷出来(要在AndroidManifest.xml中加入android:sharedUserId="android.uid.system")。建议你建一个文件夹,专门用来签名。我就是这样做的。
(2)用压缩工具打开这个apk,把删掉META-INF目录下的CERT.SF和CERT.RSA两个文件。
(3)你在源码中找出platform.x509.pem和platform.pk8这两个文件,所在源码路径为build\target\product\security
(4)去找到android的签名工具signapk.jar,所在的源码路径为
out/host/linux-x86/framework
(5)把BrowserActivity.apk, platform.x509.pem, platform.pk8, signapk.jar这四个文件放在一个文件夹中,在命令行中运行
java -jar signapk.jar platform.x509.pem platform.pk8 BrowserActivity.apk BrowserActivity-signed.apk
这样就会产生一个签名过的BrowserActivity-signed.apk。(6)这时候你再向模拟器上装这个BrowserActivity-signed.apk,就能装上了。
总结
虽然经历了上面这么多,也把eclipse产生的apk装到了模拟器上,但是很不幸的告诉大家,点击Browser时,报错了。目前我还不知道是什么具体原因,报的错大致是与数据存储相关的一个问题。如果有知道的,希望大家不吝指教。
贴出来目的主要是希望能和大家进行探讨,我想阐明以下几点:
(1)这个方法我没有在真机上试过,但我猜测是不行的,因为我们拿不到真机签名用的key,那肯定不能到真机上运行。我们公司的Key我也拿不到,所以没有这个条件试。千万不要轻易删除真机上的内置应用,可能你恢复出厂设置也补救不了,只能再刷rom。
(2)我只是在Browser这个应用上进行了尝试,大家可以尝试其他的内置应用程序如MMS,Email等等。
(3)可能有人觉得这样做多此一举,直接在源码中搞不就得了。我是这样想的,一来这是一个尝试,谁知道到底用处有什么,过程中也会学到不少知识。二来我计算机配置有限,虚拟机开了之后机器太卡,根本动不了。有了上述方法,大家可以不用受那么多错误提示的干扰,在eclipse中很清晰的去研究代码。如果某个应用安装到模拟器能直接运行,那你就不用再去开虚拟机了。三就是有时候我们做的一些开发中可能混杂这一些sdk中没有的代码,我们可以借鉴这个思路去源码中把这些内容找出来添进去。方便在eclipse中去调试。而不用每次都开虚拟器,放到源码中编译。
最后,谢谢大家,小弟菜,勿喷,呵呵!
版权声明:本文标题:再续Eclipse导入android内置应用程序 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dongtai/1725655200a1034867.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论