使用adb命令批处理安装&卸载apk



安装:
安装比较简单,批处理获取拖放的文件参数直接调用adb命令即可,需要设置下adb的路径,批处理文件如下:

install.bat

@echo off 
title adb install

set adb="D:\adt-bundle-windows-x86\sdk\platform-tools\adb.exe"
set apk=%~1

if not exist %adb% (echo abd.exe路径不正确,请修正!&goto :end) 
 
%adb% install %apk%

:end
pause


卸载稍微复杂一点,因为需要提供包名给adb,所以要获取apk的包名。这里使用的方法是:先用winrar从apk文件中提取出AndroidManifest.xml文件,然后用 AXMLPrinter2.jar 把AndroidManifest.xml文件转换成标准的xml文本,然后从这个xml文本中读取出包名。

相关工具:
AXMLPrinter2.jar 下载: http://ishare.iask.sina.com.cn/download/explain.php?fileid=19218022

readpackagefromxml.exe是从 xml文本中读取出包名的工具,代码很简单:
// readpackagefromxml.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <atlstr.h>


void ReadPackageNameFromFile(LPCTSTR lpszFile)
{
    CString strText;
    DWORD dwSize = 0;
    DWORD dwReadWrite = 0;

    HANDLE hFile = CreateFile(lpszFile, GENERIC_READ | GENERIC_WRITE, NULL, NULL, OPEN_EXISTING, NULL, NULL); 
    if ( hFile==INVALID_HANDLE_VALUE ){
        return;
    }

    dwSize = ::GetFileSize(hFile,NULL);
    if ( (int)dwSize>0 ) {
        PBYTE pBuff = new BYTE[dwSize];
        if ( pBuff!=NULL ) {
            ReadFile(hFile,pBuff,dwSize,&dwReadWrite,NULL);
            strText = pBuff;
            delete []pBuff;
        }
    }
    CloseHandle(hFile);

    //////////////////////////////////////////////////////////////////////////
    int nPos1 = 0;
    int nPos2 = 0;
    nPos1 = strText.Find(_T("package=\""));
    if ( nPos1!=-1 ) {
        nPos2 = strText.Find(_T("\""),nPos1+9);
        strText = strText.Mid(nPos1+9,nPos2-nPos1-9);
        _tprintf(strText);
    }
}

int _tmain(int argc, _TCHAR* argv[])
{
    if ( argc<2 ) {
        _tprintf(_T("error: no input xml file\n"));
        return 1;
    }

    ReadPackageNameFromFile(argv[1]);

    return 0;
}



卸载apk批处理文件:uninstall.bat

@echo off
title adb uninstall [by sing]

set rar="C:\Program Files\WinRAR\winRar.exe"
set dir=%~dp0
set dir=%dir%tools\
set apk=%~1
set xml=AndroidManifest.xml
set tmpfile=AndroidManifest2.xml

echo 解压%xml%
%rar% e -o+ %apk% %xml% %dir%


if exist %dir%%xml% (goto :handle) else (echo %xml%未成功解压出来!&goto :end) 
 
:handle

echo 转换%xml%
java -jar %dir%AXMLPrinter2.jar %dir%%xml% > %dir%%tmpfile%

echo 从%xml%中提取包名
for /f "delims=" %%t in ('%dir%readpackagefromxml.exe %dir%%tmpfile%') do set package=%%t

echo 删除生成的临时文件
del %dir%%xml%
del %dir%%tmpfile%

echo 卸载apk:%package%
adb uninstall %package%


:end
pause




以上工具和批处理已经打包上传到csdn的资源下载区: http://download.csdn.net/detail/asmcvc/5840997

参考:
使用adb命令批处理安装&卸载apk: http://vaero.blog.51cto.com/4350852/774705

PC端解析APK文件中的信息(图标、权限、包名等): http://www.apkbus.com/blog-33641-44398.html






你可能感兴趣的:(使用adb命令批处理安装&卸载apk)