添加calendar.apk到android模拟器的尝试

   最近需要做一个android上面的calendar的项目。以前没有接触android相关的东西都要从头开始学习。

 

我尝试的方法

   弄了两天终于在ubuntu上面把android平台开发环境弄好了,在模拟器上写了两个小程序,熟悉了一下环境,想把android自带的calendar程序拿来看看,结果发现模拟器上面没有calendar程序,找了一下发现android源代码是有这个AP的,就把calendar工程用eclipse打开想直接编译成APK看看长得什么样子。结果打开发现一堆的错误,仔细看了一下发现是一些java相关的库没有加入到android.jar。

     好吧,自己动手,丰衣足食,参考了一下fix_android_sdk.py(http://code.google.com/p/android-scripting/source/browse/tools/fix_android_sdk.py?r=bd959f44d4b39cedfa156a361c3be033c2fc3433),写了一个函数自动编译calendar相关的java代码然后打包到adnroid.jar中去,把下面的代码保存成fix_android_sdk.py。然后运行

python fix_android_sdk.py "src_folder", "sdk_folder" 

就可以把calendar相关的代码加入到android.jar中去了.

测试了一下,这种添加方法,并没有把需要的库添加到模拟器上去,所以在运行的时候如果需要操作android.provider.calendar就会出问题。

解决办法,就是把calendar需要的库直接打包到calendar.apk中去,方法如下。

1. 把calendar需要的库打包成jar,修改fix_android_sdk.py单独生成一个jar(不加入到android.jar中)

2.在calendar工程中新建一个叫libs的packages,把单独生成的jar,添加到libs下面。

上面两步后,calendar基本上不crash了,但是从logcat中可以看到calendar还是找不到provider.calendar,这个应该是在AndroidManifest.xml中没有声明,所以系统找不到,我尝试来两种方法解决这个问题。

1.程序build system.img,用mmm命令把calendarprovider添加system.img中,这种方法我尝试可行,calendar工作起来没有什么问题

2.按照编译calendar的方法编译calendarprovider。

 

 

查了一下资料正确的添加方法是

在make  后

执行

. bulid/envsetup.sh

mmm /packages/apps/Calendar/

把生成的system.img, 替换sdk目录/platfroms/android-AOSP/images/ 下的system.img

这样这样calendar就直接被打包system.img中去了。

这样做后calendarprovider并不会被添加到SDK中,如果要在eclipse中使用,需要做下面的步骤

拷贝/out/target/common/obj /JAVA_LIBRARIES/framework_intermediates/classes.jar到SDK目录

然后

  1. Right-Click your project to open properties
  2. Java Build Path->Add Library->User Library->User Libraries->New
  3. Made up a name & check the “System Library” option
  4. Select the library you created->Add JARs
  5. Make sure all JARs you need are added to the project, and click OK

附fix_android_sdk.py代码

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值