android 命令行执行java 的方式

    技术2022-07-11  98

    大家都熟悉android 的安装命令,pm 

    pm usage: pm list packages [-f] [-d] [-e] [-s] [-3] [-i] [-u] [--user USER_ID] [FILTER]        pm list permission-groups        pm list permissions [-g] [-f] [-d] [-u] [GROUP]        pm list instrumentation [-f] [TARGET-PACKAGE]        pm list features        pm list libraries        pm list users        pm path PACKAGE        pm dump PACKAGE        pm install [-lrtsfd] [-i PACKAGE] [PATH]        pm install-create [-lrtsfdp] [-i PACKAGE] [-S BYTES]        pm install-write [-S BYTES] SESSION_ID SPLIT_NAME [PATH]        pm install-commit SESSION_ID        pm install-abandon SESSION_ID        pm uninstall [-k] [--user USER_ID] PACKAGE        pm set-installer PACKAGE INSTALLER        pm clear [--user USER_ID] PACKAGE        pm enable [--user USER_ID] PACKAGE_OR_COMPONENT        pm disable [--user USER_ID] PACKAGE_OR_COMPONENT        pm disable-user [--user USER_ID] PACKAGE_OR_COMPONENT        pm disable-until-used [--user USER_ID] PACKAGE_OR_COMPONENT        pm hide [--user USER_ID] PACKAGE_OR_COMPONENT        pm unhide [--user USER_ID] PACKAGE_OR_COMPONENT        pm grant PACKAGE PERMISSION        pm revoke PACKAGE PERMISSION        pm set-install-location [0/auto] [1/internal] [2/external]        pm get-install-location        pm set-permission-enforced PERMISSION [true|false]        pm trim-caches DESIRED_FREE_SPACE        pm create-user [--profileOf USER_ID] [--managed] USER_NAME        pm remove-user USER_ID        pm get-max-users

    pm list packages: prints all packages, optionally only   those whose package name contains the text in FILTER.  Options:     -f: see their associated file.     -d: filter to only show disbled packages.     -e: filter to only show enabled packages.     -s: filter to only show system packages.     -3: filter to only show third party packages.     -i: see the installer for the packages.     -u: also include uninstalled packages.

    pm list permission-groups: prints all known permission groups.

    pm list permissions: prints all known permissions, optionally only   those in GROUP.  Options:     -g: organize by group.     -f: print all information.     -s: short summary.     -d: only list dangerous permissions.     -u: list only the permissions users will see.

    pm list instrumentation: use to list all test packages; optionally   supply <TARGET-PACKAGE> to list the test packages for a particular   application.  Options:     -f: list the .apk file for the test package.

    pm list features: prints all features of the system.

    pm list users: prints all users on the system.

    pm path: print the path to the .apk of the given PACKAGE.

    pm dump: print system state associated with the given PACKAGE.

    pm install: install a single legacy package pm install-create: create an install session     -l: forward lock application     -r: replace existing application     -t: allow test packages     -i: specify the installer package name     -s: install application on sdcard     -f: install application on internal flash     -d: allow version code downgrade     -p: partial application install     -S: size in bytes of entire session

    pm install-write: write a package into existing session; path may   be '-' to read from stdin     -S: size in bytes of package, required for stdin

    pm install-commit: perform install of fully staged session pm install-abandon: abandon session

    pm set-installer: set installer package name

    pm uninstall: removes a package from the system. Options:     -k: keep the data and cache directories around after package removal.

    pm clear: deletes all data associated with a package.

    pm enable, disable, disable-user, disable-until-used: these commands   change the enabled state of a given package or component (written   as "package/class").

    pm grant, revoke: these commands either grant or revoke permissions   to applications.  Only optional permissions the application has   declared can be granted or revoked.

    pm get-install-location: returns the current install location.     0 [auto]: Let system decide the best location     1 [internal]: Install on internal device storage     2 [external]: Install on external media

    pm set-install-location: changes the default install location.   NOTE: this is only intended for debugging; using this can cause   applications to break and other undersireable behavior.     0 [auto]: Let system decide the best location     1 [internal]: Install on internal device storage     2 [external]: Install on external media

    pm trim-caches: trim cache files to reach the given free space.

    pm create-user: create a new user with the given USER_NAME,   printing the new user identifier of the user.

    pm remove-user: remove the user with the given USER_IDENTIFIER,   deleting all data associated with that user

    pm 在android 代码中的外置:

    frameworks\base\cmds\pm

    Android.mk 的解析:

    3LOCAL_PATH:= $(call my-dir) 4include $(CLEAR_VARS) 5 6LOCAL_SRC_FILES := $(call all-subdir-java-files) 7LOCAL_MODULE := pm 8include $(BUILD_JAVA_LIBRARY) //pm.jar编译出 9 10 11include $(CLEAR_VARS) 12ALL_PREBUILT += $(TARGET_OUT)/bin/pm 13$(TARGET_OUT)/bin/pm : $(LOCAL_PATH)/pm | $(ACP) //拷贝pm 命令为/system/bin/pm 14 $(transform-prebuilt-to-target) 15

    pm 命令代码为

    1# Script to start "pm" on the device, which has a very rudimentary 2# shell. 3# 4base=/system 5export CLASSPATH=$base/framework/pm.jar 6exec app_process $base/bin com.android.commands.pm.Pm "$@" 7

    上面代码中调用pm.jar 中的Pm 静态方法,传入$@ 参数,执行apk 的安装流程。

    Processed: 0.009, SQL: 9