首页 文章

Android会保留.apk文件吗?如果是这样的话?

提问于
浏览
172

android从Marketplace安装应用程序后,是否保留.apk文件?

是否有标准位置Android将保留此类文件?

19 回答

  • 0

    如果您正在寻找特定应用程序的路径,那么快速而肮脏的解决方案就是grep the bugreport:

    $ adb bugreport | grep 'dir=/data/app'
    

    我不知道这会提供详尽的列表,因此可能有助于首先运行该应用程序 .

  • 0

    您可以使用ADB拉取应用程序 . 他们在/ data / App /,我相信 .

    adb pull (location on device) (where to save)
    

    请注意,您必须将手机设为root用户才能获取受版权保护的应用 .

  • 95

    预安装的应用程序位于 /system/app 文件夹中 . 用户安装的应用程序位于 /data/app 中 . 我想你可以在这里使用root手机,但试试这个代码:

    public class Testing extends Activity {
        private static final String TAG = "TEST";
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            File appsDir = new File("/data/app");
    
            String[] files = appsDir.list();
    
            for (int i = 0 ; i < files.length ; i++ ) {
                Log.d(TAG, "File: "+files[i]);
    
            }
        }
    

    它确实列出了我的root htc魔法和emu中的apks .

  • 0

    您可以使用包管理器( pm )而不是 adb shell 来列出包:

    adb shell pm list packages | sort
    

    并显示 .apk 文件的位置:

    adb shell pm path com.king.candycrushsaga
    package:/data/app/com.king.candycrushsaga-1/base.apk
    

    adb pull 下载apk .

    adb pull data/app/com.king.candycrushsaga-1/base.apk
    
  • 7

    如果您只想获得之前安装的APK文件,请执行以下操作:

    • 从Google Play获取AirDroid

    • 使用AirDroid从PC网络浏览器访问手机

    • 转到应用并选择已安装的应用

    • 点击"download"按钮从手机上下载该应用的APK版本

    您不需要root手机,使用 adb 或任何东西 .

  • 7

    没有标准位置,但是您可以使用PackageManager来查找有关包的信息,您可以从中获取ApplicationInfo类,其中包含有关特定包的各种信息:.apk的路径,数据目录的路径,路径到资源专用.apk(对于转发锁定的应用程序)等 . 请注意,根据您与其他应用程序的关系,您可能有也可能没有权限阅读这些目录;但是,所有应用程序都能够读取资源.apk(这也是非正向锁定应用程序的真正.apk) .

    如果您只是在shell中浏览,目前非转发锁定的应用程序位于/data/app/.apk中 . shell用户可以读取特定的.apk,但它无法列出目录 . 在将来的版本中,命名约定会稍微改变,所以不要指望它保持不变,但是如果你从包管理器获得.apk的路径,那么你可以在shell中使用它 .

  • 25

    预安装的应用程序通常位于/ system / app中,用户安装的应用程序位于/ data / app中 .

    您可以使用“adb pull”,但您需要知道APK文件的完整路径 . 在模拟器上,您可以使用“adb shell”“ls”获取目录列表 . 但是在Android设备上,由于安全原因,您将无法在“/ data”文件夹中执行此操作 . 那你怎么弄清楚APK文件的完整路径?

    您可以通过编写查询PackageManager的程序来获取所有安装的应用程序的完整列表 . 下面的简短代码片段:

    PackageManager  pm = getPackageManager();
    List<PackageInfo> pkginfo_list = pm.getInstalledPackages(PackageManager.GET_ACTIVITIES);
    List<ApplicationInfo> appinfo_list = pm.getInstalledApplications(0);
    for (int x=0; x < pkginfo_list.size(); x++){             
      PackageInfo pkginfo = pkginfo_list.get(x);
      pkg_path[x] = appinfo_list.get(x).publicSourceDir;  //store package path in array
    }
    

    您还可以找到可提供此类信息的应用 . 它们很多 . Try this one (AppSender).

  • 3

    Install from marketplace

    市场的行为是否在安装后保留apk . 安装后Google Play不会保留apk . 其他第三方市场可能会有不同的行为 .

    Install from development/debug tool (adb, eclipse, android studio)

    当我们从调试工具安装apk,直接调用 adb install 或从eclipse / android studio安装apk时,apk将被转移( adb push )到公共可读写目录,通常是 /data/local/tmp/ . 之后,该工具将使用 pm 命令进行安装,它将在成功安装后删除 /data/local/tmp/ 中的临时apk .

    我们可以从调试输出中获取这些信息,如下所示 .

    $ adb install bin/TestApplication.apk 
    3155 KB/s (843375 bytes in 0.260s)
        pkg: /data/local/tmp/TestApplication.apk
    Success
    

    How system keeps the apk

    当然系统必须在某处存储所有apks . 系统有三个位置可以保持apks基本不同类型的apks .

    • for stock app

    这些通常是按制造商的设备发货,包括用于系统运行和谷歌服务的核心应用程序,您可以在目录 /system/app/system/priv-app 下找到它们 .

    • 用户安装的应用

    大多数apks属于这一类 . 这些apks通常由用户在市场上安装,或者在没有 -s 选项的情况下由 adb install 安装 . 您可以在目录 /data/app 下找到它们以获取有根设备 .

    sdcard上的

    • app

    如果apk在其清单中使用 android:installLocation="auto" 在sdcard中启用其安装位置,则可以将该应用程序从系统的应用程序管理器移至sdcard菜单 . 这些apks通常位于sdcard /mnt/sdcard/asec 的安全文件夹中 .

    另一种强制安装位置为sdcard的方法是使用命令 adb install -s apk-to-install.apk .

    请注意,预安装应用程序的文件不再位于单个 .apk 文件中 . 有一个文件夹,其中包含最新Android版本目录 /system/app/system/priv-app 中每个预安装应用程序的文件 .

  • 90

    如果您是root用户,请下载应用程序Root Explorer . root用户的最佳文件管理器 . 无论如何,System / app具有手机附带的所有默认apks,而data / apk包含您已安装的应用程序的所有apks . 只需长按你想要的apk(在Root Explorer中),转到你的/ sdcard文件夹然后粘贴 .

  • 3

    在/ data / app中,但对于复制保护,我认为您无法访问它 .

  • 0

    用它来列出/ data / app /下的所有.apks

    adb bugreport | grep 'package name="' | grep 'codePath="/data' | cut -d'"' -f4
    
  • 1
    • data / app

    • system / app

    • system / priv-app

    • mnt / asec(安装在SD卡中时)

    你可以从任何一个中提取.apks:

    adb pull / mnt / asec

  • 8

    如果您正在使用eclipse goto DDMS然后在那里存档资源管理器,您将看到System / Apps文件夹,而apks就在那里

  • 3

    .apk文件可以位于/ data / app /目录下 . 使用 ES File Explorer ,我们可以访问这些.APK文件 .

  • 4

    当我在模拟器上安装我的应用程序时,它显示我的.apk文件

    data / app然后我使用ls data / app //查看它是否存在

    安装应用程序后,只需使用ls命令vie shell并检查所需的目录,但这取决于您尝试安装的应用程序类型 . 如果有任何问题,我用这个方法Install点 .

  • 114

    在root设备上获取 apk 的另一种方法是使用 rom tool box .

    使用应用管理器进行备份,然后转到 storage/emulated/appmanager 并检查 system app backupuser app backup .

  • 17

    要查找 apk ,请从Play商店下载并安装Bluetooth App Sender . 安装完成后,打开蓝牙应用程序发件人 . 它将显示设备中安装的所有应用程序 (.apk) ,然后您可以通过蓝牙轻松将应用程序传输到PC .

  • 0

    与's written on the chosen answer, you don'需要root相反,可以获取已安装应用的APK,这就是我在我的应用上完成它的方式(here) . 例:

    List<PackageInfo> packages=getPackageManager().getInstalledPackages(0);
    

    然后,对于列表中的每个项目,您可以访问 packageInfo.applicationInfo.sourceDir ,这是已安装应用程序的APK的完整路径 .

  • 1

    好吧,我来到这篇文章是因为我想重新安装一些我非常喜欢的应用程序 . 如果是这种情况,只需转到Google Play,然后查找“我的应用”,“所有”标签,您就会找到一种方法来重新安装一些您喜欢的应用 . 我遇到了一个问题,我找不到搜索一个应用程序,但它在我的应用程序中,所以我可以重新安装在我的新手机;)

相关问题