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

    安装APK

  首先,将模拟器执行起来,直到正式进入系统。

  接下来,打开一个cmd窗口,路径切换到模拟器目录下的tools目录。

  输入:adb install 你要安装的apk文件的路径。

  如果看到一行显示传输速度的文字,那说明安装成功了。

  adb install HelloAndroid.apk

  591 KB/s (180315 bytes in 0.297s)

  pkg: /data/local/tmp/HelloAndroid.apk

  Success

  回到Android模拟器的界面,本来以为可以看到刚刚安装的APK程序图标,结果,却根本没有…后来研究了一下,发现这根APK包自身有关。具体 原因是来自于AndroidManifest.xml文件的内容:

  < ?xml version="1.0" encoding="utf-8"?>

  < manifest xmlns:android="http://schemas.android.com/apk/res/android"

  package="org.gooss.android.hello"

  android:versionCode="1"

  android:versionName="1.0">

  < application android:icon="@drawable/icon" android:label="@string/app_name">

  < 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>

  < uses-SDK android:minSdkVersion="6" />

  < /manifest>

  注意其中的category行定义,它表示这个apk属于哪个归类里,如果不正确的填写这个信息,Launcher将不会将其显示在桌面上,因为它 会认为这个应用部署以自己的归类。

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

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

  usage: am [start|instrument] am start [-a ] [-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 ] [-p ] [-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" android:label="@string/app_name">

  < activity android:name=".HelloAndroid" android:label="@string/app_name">

  < intent-filter>

  < category android:name="android.intent.category.LAUNCHER" />

  < /intent-filter>

  < /activity>

  < /application>

  < /manifest>

  使用的指令为:

  adb shell

  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.VIEWgeo:0,0?q=tianjin

  卸装APK

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

  adb shell rm data/app/org.gooss.android.hello.apk

  # 上面的命令可拆解成:

  adb shell

  rm data/app/org.gooss.android.hello.apk

  可以看出Android系统是将第三方应用放在data/app目录内的。org.gooss.android.hello.apk的安装目录可以 通过下面的命令查询:

  adb shell

  ls data/app

  也可以通过Android主菜单-设置-应用程序-管理应用程序,选择相应的应用程序,并在打开的界面中点击”卸载”按钮来删除已安装的apk软件 包。

  补充一点:

  卸载最好用android 中的setting->application manage进行卸载,否则下次安装会出错。

  【一些思考】

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

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

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值