Android(安卓)阻断adb install
16lz
2021-12-04
阅读更多 frameworks\base\services\core\java\com\android\server\pm\PackageManagerShellCommand.java
adb install 流程会走到PackageManagerShellCommand中的runInstall()方法,在此处做阻断操作可使 failed to install *.apk;
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) { } } } }
更多相关文章
- 浅谈Java中Collections.sort对List排序的两种方法
- Python list sort方法的具体使用
- python list.sort()根据多个关键字排序的方法实现
- Android(安卓)Timer 更好方法
- Tab控件 笔记
- android ListView 多次调用 getView方法
- Android(安卓)AudioManager控制系统声音的流程
- Android之SeekBar的简单使用
- Android键盘操作响应