注册本站  论坛  繁體中文

电脑技巧
手机 | MP3 | MP4 | 显卡 | 主板 | 显示器 | 光存储 | 笔记本 | 网络设备 | 移动存储 | 数码相机
键鼠 | CPU | 音箱 | GPS | 电视 | 服务器 | 投影机 | 机箱电源 | 品牌电脑 | 办公打印 |
| 网站首页 | Cisco | Windows | Linux | Java | Dotnet | Oracle | 网页设计 | 平面设计 | 安全 | 软件应用 | 电脑维修 | 办公维修 |
您现在的位置: 电脑技巧 >> Java >> 新手入门 >> 安装配置 >> Java正文

如何在Android模拟器上安装和卸载APK包

文章来源:中国IT实验室收集整理 作者:佚名 更新时间:2008-6-28 20:09:50 【 】 【加入收藏

    玩过了一天Android模拟器,也写了几个小测试程序。突然有个问题出现,如果脱离Eclipse开发环境,如何能将APK包部署给模拟器呢?
    研究了一下模拟器的内存文件系统,似乎没什么发现,是一个Linux内核。
    于是到google问问老外们,终于知道了,吼吼。

    【安装APK】
    安装APK当然首先是要有模拟器,和要安装的APK包,这个不多废话了。直接切入正题,在模拟器安装APK。
    首先,将模拟器执行起来,直到正式进入系统。
    接下来,打开一个cmd窗口,路径切换到模拟器目录下的tools目录。
    输入:adb install 你要安装的apk文件的路径。
    如果看到一行类显示传输速度的文字,那说明安装成功了。
    C:\Documents and Settings\Administrator>cd D:\andriod\tools

    C:\Documents and Settings\Administrator>d:

    D:\android\tools>adb install c:\NetScramble_1.1.apk 100 KB/s (0 bytes in 164464.001s)


    回到Android模拟器的界面,我本来以为可以看到刚刚安装的APK程序图标,结果,却根本没有...后来研究了一下,发现这根APK包自身有关。使用自己编写的HelloAndroid安装,图标就可以显示在桌面上,而NetScramble_1.1.apk安装后却显示不出来。具体原因是来自于AndroidManifest.xml文件的内容。

    <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android"     package="net.xiashou.android">     <application android:icon="@drawable/icon">         <activity android:name=".HelloAndroid" android:label="@string/app_name">             <intent-filter>                 <action android:name="android.intent.action.MAIN" />                 <category android:name="android.intent.category.LAUNCHER" />             </intent-filter>         </activity>     </application> </manifest>

    xml文件中,红色一行是表示这个apk属于哪个归类里,如果不正确的填写这个信息,Launcher将不会将其显示在桌面上,因为它会认为这个应用部署以自己的归类。

    那么,是不是我们就无法执行缺失了category的apk了呢?

    后来,在一个老外的blog上,查到了方法:在shell内使用am来加载android应用

    usage: am [start|instrument]        am start [-a <ACTION>] [-d <DATA_URI>] [-t <MIME_TYPE>]                 [-c <CATEGORY> [-c <CATEGORY>] ...]                 [-e <EXTRA_KEY> <EXTRA_VALUE> [-e <EXTRA_KEY> <EXTRA_VALUE> ...]                 [-n <COMPONENT>] [-D] [<URI>]        am instrument [-e <ARG_NAME> <ARG_VALUE>] [-p <PROF_FILE>]                 [-w] <COMPONENT>

    比如启动一个manifest为如下内容的apk

    <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android"     package="net.xiashou.android">     <application android:icon="@drawable/icon">         <activity android:name=".HelloAndroid" android:label="@string/app_name">             <intent-filter>                 <action android:name="android.intent.action.MAIN" />                 <category android:name="android.intent.category.LAUNCHER" />             </intent-filter>         </activity>     </application> </manifest>

    使用的指令为:

    am start -n net.xiashou.android/net.xiashou.android.HelloAndroid

 

    还有一些很有用处的用法

    直接启动浏览器打开一个网址 # am start -a android.intent.action.VIEW -d http://www.xiashou.net

 

    拨打电话 # am start -a android.intent.action.CALL -d tel:10086 启动google map直接定位在天津 # am start -a android.intent.action.VIEW geo:0,0?q=tianjin


    am很可能将来成为第三方lancher的基础。

    【卸装APK】

    与安装类似的,卸妆是利用adb执行一个卸妆指令:

    D:\android\tools>adb shell rm data/app/NetScramble_1.1.apk

    这里,也可以看出,Android系统是将第三方应用放在data/app目录内的。

 

    【一些思考】

    因为模拟器内运行的是一个内存文件系统,也就是说,你安装的apk文件,在模拟器被关闭后,也就不再存在了(它实际上是被安装到内存里)。所以,下次启动模拟器,依然需要再次安装APK。然后,实际测试结果并非如此...于是打开AndroidSDK目录发现,tools\lib\images的文件都被更新了。原来Android模拟器是将他的内存系统实时dump到img中保存下来的。

    还有一个特别有意义的发现,是从adb shell rm而来的思考。rm本身是linux的一个文件删除指令,加上前面的shell关键字,会不会adb shell直接就能打开一个linux终端呢?实测结果果然如此!不过,Android的linux shell显然做了很多精简,大量的linux常用指令都不支持。

    更多关于adb详细的使用,可以使用adb help指令来查看。

 

  • 上一篇Java:

  • 下一篇Java:
  • 最 新 热 门
     手机开发平台指南、教程和资料介绍
     关于什么叫面向接口编程
     编写高级JavaScript应用代码
     不要验证,直接转化科学计数法
     Eclipse插件开发中实现刷新和重编译介绍
     Java开源技术:Eclipse的使用技巧详解
     配置eclipse 3.2 使用JDK1.5中文JavaAPI
     集成Windows本地应用到Eclipse RCP 程序中
     hibernate.cfg.xml配置文件的说明
     eclipse开发jface时,main.class解决方法
    最 新 推 荐
     Tomcat 5常用优化和配置
     JBoss配置mySQL数据源
     如何在Android模拟器上安装和卸载APK包
     连接到localhost后提示要求用户名和密码
     如何配置一个最简单的svn服务器
     Tomcat6.0的配置问题
     在 Tomcat 上配置虚拟主机
     更新XP后,JAVA获取时间出错的解决办法
     Spring Bean的配置问题
     Java中使用遍历文件夹的2种方法
    相 关 文 章

    servlet中如何访问spring容器
    如何学习struts框架
    初学者如何开发出一个高质量的J2EE系统
    如何用Java Mail进行认证发信
    如何重构出DAO模式
    如何配置一个最简单的svn服务器
    介绍下Eclipse中如何debug程序?
    使用技巧:Java程序开发中如何应用线程
    如何用Java 5更新原有代码
    该如何实践State模式

    | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 网站公告

     

    Copyright 2006-2008 pcjx.com All Rights Reserved
    电脑技巧 版权所有 粤ICP备06059145号 地图
    本网站所有内容未经许可不得转载或做其他使用