frameworks\base\services\core\java\com\android\server\pm\PackageManagerShellCommand.java
adb install 流程会走到PackageManagerShellCommand中的runInstall()方法,在此处做阻断操作可使 failed to install *.apk;
private int runInstall() throws RemoteException {
Log.d("Ginger", "runInstall");
boolean refuse = SystemProperties.getBoolean("adb_install_refused", true);
if(refuse){
Log.d("Ginger", "refuse to install apk by adb");
return 1;
}
final PrintWriter pw = getOutPrintWriter();
final InstallParams params = makeInstallParams();
final String inPath = getNextArg();
boolean installExternal =
(params.sessionParams.installFlags & PackageManager.INSTALL_EXTERNAL) != 0;
if (params.sessionParams.sizeBytes < 0 && inPath != null) {
File file = new File(inPath);
if (file.isFile()) {
if (installExternal) {
try {
ApkLite baseApk = PackageParser.parseApkLite(file, 0);
PackageLite pkgLite = new PackageLite(null, baseApk, null, null, null);
params.sessionParams.setSize(
PackageHelper.calculateInstalledSize(pkgLite, false,
params.sessionParams.abiOverride));
} catch (PackageParserException | IOException e) {
pw.println("Error: Failed to parse APK file : " + e);
return 1;
}
} else {
params.sessionParams.setSize(file.length());
}
}
}
final int sessionId = doCreateSession(params.sessionParams,
params.installerPackageName, params.userId);
boolean abandonSession = true;
try {
if (inPath == null && params.sessionParams.sizeBytes == 0) {
pw.println("Error: must either specify a package size or an APK file");
return 1;
}
if (doWriteSplit(sessionId, inPath, params.sessionParams.sizeBytes, "base.apk",
false /*logSuccess*/) != PackageInstaller.STATUS_SUCCESS) {
return 1;
}
if (doCommitSession(sessionId, false /*logSuccess*/)
!= PackageInstaller.STATUS_SUCCESS) {
return 1;
}
abandonSession = false;
pw.println("Success");
return 0;
} finally {
if (abandonSession) {
try {
doAbandonSession(sessionId, false /*logSuccess*/);
} catch (Exception ignore) {
}
}
}
}
分享到:
相关推荐
**Android Debug Bridge (ADB)** 是Android开发者不可或缺的工具之一,尤其在进行系统级调试、安装应用、设备控制以及数据传输时。标题中的“android4.4 adb工具包”特指的是适用于Android 4.4(KitKat)及其以下...
Android ADB,全称为Android Debug Bridge,是Android开发者不可或缺的工具之一。它是Android SDK(软件开发工具包)的一部分,主要用于连接Android设备与计算机,进行调试、数据传输、安装应用等操作。下面将详细...
在Android开发过程中,ADB(Android Debug Bridge)是一个至关重要的工具,它构成了Android开发者与设备之间的桥梁,用于进行数据传输、设备控制以及应用调试等操作。本文将深入探讨ADB的9版本和11版本,以及它们在...
**Android ADB工具详解** Android Debug Bridge(ADB)是Android开发者不可或缺的一款命令行工具,它在Android系统的开发、调试和故障排查过程中起着至关重要的作用。ADB能够连接运行Android操作系统的设备,包括...
ADB(Android Debug Bridge)是Android开发中的一个关键工具,它为开发者提供了命令行接口,用于在计算机和Android设备之间进行通信。"android-ADB工具-windows.zip"是一个专门为Windows用户提供的ADB工具包,包含了...
- **安装和卸载应用**: `adb install 应用APK路径`安装应用,`adb uninstall 包名`卸载应用。 - **日志记录**: `adb logcat`查看设备的日志输出,通过过滤器如`adb logcat -v long | grep "关键字"`筛选特定日志。 ...
通过代码分析发现Android13 上对 网络adb 进行了限制! Android13原生代码要求:必现连接上某个wifi,才能进行adb ,并且切换wifi或者关闭wifi都是会停止adb。 并且Android13 上 wifi adb 端口号每次是变化的,这个...
一旦连接成功,你就可以像使用常规ADB一样,通过Wi-Fi进行各种操作,如运行`adb devices`检查设备状态,`adb install`安装应用,`adb logcat`查看日志,甚至`adb shell`进入设备的命令行环境。 使用Android WiFi ...
- 安装应用:使用`adb install <apk_path>`命令将APK文件安装到设备。 - 卸载应用:使用`adb uninstall <package_name>`命令卸载指定包名的应用。 - 查看设备状态:`adb devices`列出所有连接的设备。 - 传输...
Android ADB(Android Debug Bridge)是Google为Android开发者提供的一款强大工具,用于连接和管理Android设备或模拟器。它是一个命令行工具,允许用户通过USB或Wi-Fi与设备进行通信,执行各种操作,如安装应用、...
标题“ADB_INSTALL.zip”指的是一个包含了使用ADB(Android Debug Bridge)进行批量安装APK的工具包。这个压缩文件包括了必要的脚本和库文件,使得用户可以在同一网络段内的安卓设备上批量安装APK应用,前提条件是...
- **应用安装**:`adb install app.apk`命令用于在设备上安装APK文件。 - **执行shell命令**:通过`adb shell`进入设备的shell环境,然后可以执行任意shell命令,如`ls`、`cat`等。 - **备份与恢复**:使用`adb ...
ADB(Android Debug Bridge)是Android开发中的一个关键工具,它为开发者提供了命令行接口,用于与连接的Android设备进行通信。在"android 5.1的ADB 工具ADB最新工具"这个主题下,我们将深入探讨ADB的核心功能、工作...
在Android开发中,`adb (Android Debug Bridge)` 是一个强大的工具,用于与连接到电脑的Android设备进行通信。它允许开发者执行各种操作,如安装应用、查看设备状态、传输文件以及执行shell命令。本篇文章将深入讲解...
- **安装和卸载应用**:使用`adb install`来安装APK,`adb uninstall`来卸载应用。 - **远程 shell**:通过`adb shell`进入设备的命令行环境,执行各种Linux命令。 - **日志记录**:`adb logcat`用于收集和查看...
android adb 配置文件 ubuntu环境android adb 配置文件 ubuntu环境android adb 配置文件 ubuntu环境android adb 配置文件 ubuntu环境android adb 配置文件 ubuntu环境android adb 配置文件 ubuntu环境android adb ...
可以通过`adb install <apkFilePath>`命令将APK文件安装到设备或模拟器上。 4. **端口转发** `adb forward`命令用于端口转发,例如`adb forward tcp:8080 localabstract:logcat`将本地8080端口的数据转发到设备...
**Android ADB投屏工具详解** ADB(Android Debug Bridge)是Android开发者不可或缺的工具之一,它提供了一种命令行界面,允许用户与Android设备进行通信,执行各种操作,如安装应用、调试应用、查看设备状态等。在...