`
永远吃不饱
  • 浏览: 10154 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

Android 阻断adb install

阅读更多
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) {
                }
            }
        }
    }
分享到:
评论

相关推荐

    android4.4 adb工具包

    **Android Debug Bridge (ADB)** 是Android开发者不可或缺的工具之一,尤其在进行系统级调试、安装应用、设备控制以及数据传输时。标题中的“android4.4 adb工具包”特指的是适用于Android 4.4(KitKat)及其以下...

    android adb

    Android ADB,全称为Android Debug Bridge,是Android开发者不可或缺的工具之一。它是Android SDK(软件开发工具包)的一部分,主要用于连接Android设备与计算机,进行调试、数据传输、安装应用等操作。下面将详细...

    Android安卓 ADB 9版本和11版本

    在Android开发过程中,ADB(Android Debug Bridge)是一个至关重要的工具,它构成了Android开发者与设备之间的桥梁,用于进行数据传输、设备控制以及应用调试等操作。本文将深入探讨ADB的9版本和11版本,以及它们在...

    Android Adb工具

    **Android ADB工具详解** Android Debug Bridge(ADB)是Android开发者不可或缺的一款命令行工具,它在Android系统的开发、调试和故障排查过程中起着至关重要的作用。ADB能够连接运行Android操作系统的设备,包括...

    android-ADB工具-windows.zip

    ADB(Android Debug Bridge)是Android开发中的一个关键工具,它为开发者提供了命令行接口,用于在计算机和Android设备之间进行通信。"android-ADB工具-windows.zip"是一个专门为Windows用户提供的ADB工具包,包含了...

    【Android】adb工具

    - **安装和卸载应用**: `adb install 应用APK路径`安装应用,`adb uninstall 包名`卸载应用。 - **日志记录**: `adb logcat`查看设备的日志输出,通过过滤器如`adb logcat -v long | grep "关键字"`筛选特定日志。 ...

    Android13 wifi adb相关介绍和相关源码

    通过代码分析发现Android13 上对 网络adb 进行了限制! Android13原生代码要求:必现连接上某个wifi,才能进行adb ,并且切换wifi或者关闭wifi都是会停止adb。 并且Android13 上 wifi adb 端口号每次是变化的,这个...

    AndroidWiFiADB-2.4.zip

    一旦连接成功,你就可以像使用常规ADB一样,通过Wi-Fi进行各种操作,如运行`adb devices`检查设备状态,`adb install`安装应用,`adb logcat`查看日志,甚至`adb shell`进入设备的命令行环境。 使用Android WiFi ...

    android-adb.zip

    - 安装应用:使用`adb install &lt;apk_path&gt;`命令将APK文件安装到设备。 - 卸载应用:使用`adb uninstall &lt;package_name&gt;`命令卸载指定包名的应用。 - 查看设备状态:`adb devices`列出所有连接的设备。 - 传输...

    android adb最新版支持4.2.2系统,windows版本

    Android ADB(Android Debug Bridge)是Google为Android开发者提供的一款强大工具,用于连接和管理Android设备或模拟器。它是一个命令行工具,允许用户通过USB或Wi-Fi与设备进行通信,执行各种操作,如安装应用、...

    ADB_INSTALL.zip

    标题“ADB_INSTALL.zip”指的是一个包含了使用ADB(Android Debug Bridge)进行批量安装APK的工具包。这个压缩文件包括了必要的脚本和库文件,使得用户可以在同一网络段内的安卓设备上批量安装APK应用,前提条件是...

    androidStudio adb1.0.40

    - **应用安装**:`adb install app.apk`命令用于在设备上安装APK文件。 - **执行shell命令**:通过`adb shell`进入设备的shell环境,然后可以执行任意shell命令,如`ls`、`cat`等。 - **备份与恢复**:使用`adb ...

    android 5.1的ADB 工具ADB最新工具

    ADB(Android Debug Bridge)是Android开发中的一个关键工具,它为开发者提供了命令行接口,用于与连接的Android设备进行通信。在"android 5.1的ADB 工具ADB最新工具"这个主题下,我们将深入探讨ADB的核心功能、工作...

    android执行adb shell命令源码

    在Android开发中,`adb (Android Debug Bridge)` 是一个强大的工具,用于与连接到电脑的Android设备进行通信。它允许开发者执行各种操作,如安装应用、查看设备状态、传输文件以及执行shell命令。本篇文章将深入讲解...

    Android工具 adb tools

    - **安装和卸载应用**:使用`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 配置文件 ubuntu环境android adb ...

    Android_adb

    可以通过`adb install &lt;apkFilePath&gt;`命令将APK文件安装到设备或模拟器上。 4. **端口转发** `adb forward`命令用于端口转发,例如`adb forward tcp:8080 localabstract:logcat`将本地8080端口的数据转发到设备...

    Android adb投屏工具

    **Android ADB投屏工具详解** ADB(Android Debug Bridge)是Android开发者不可或缺的工具之一,它提供了一种命令行界面,允许用户与Android设备进行通信,执行各种操作,如安装应用、调试应用、查看设备状态等。在...

Global site tag (gtag.js) - Google Analytics