【问题标题】:Get the Main Package Name of an .apk File获取 .apk 文件的主包名称
【发布时间】:2014-04-16 08:03:16
【问题描述】:

我必须使用命令行在 android 模拟器上启动应用程序。因为我知道 adb 命令有一个方法;

adb shell am start -a android.intent.action.MAIN -n com.example.myApplication

但我必须在执行此命令之前找到应用程序包名称,所以任何人都可以帮助我找到包名称,或者在模拟器上运行 apk 的任何替代解决方案

【问题讨论】:

  • 你想要什么样的包?我们只需要先解决您的问题。
  • 我想获取主要活动的应用程序包名称,就像我在命令行参数中指定的那样

标签: java android command-line android-emulator adb


【解决方案1】:

在 Linux 上,只需使用以下命令获取包名:

aapt dump badging {apk-file.apk} | grep package | awk '{print $2}' | sed s/name=//g | sed s/\'//g

获取主(启动器)活动类似:

aapt dump badging {apk-file.apk} | grep launchable-activity: | awk '{print $2}' | sed s/name=//g | sed s/\'//g

为了我个人的使用,我编写了一个名为 apkinfo.sh 的 shell 脚本,如下所示:

#!/bin/bash package=`aapt dump badging $* | grep package | awk '{print $2}' | sed s/name=//g | sed s/\'//g` activity=`aapt dump badging $* | grep launchable-activity: | awk '{print $2}' | sed s/name=//g | sed s/\'//g` echo echo package : $package echo activity: $activity

并按如下方式使用:

./apkinfo.sh {path-to-apk-file.apk}

【讨论】:

    【解决方案2】:
    aapt dump badging <path-to-apk>
    

    【讨论】:

    • 这个命令显示应用的完整信息,我只需要包名。
    【解决方案3】:

    解压apk文件并重新构建manifest文件,然后通过解析xml manifest文件可以找到主activity包名。 解析参考this link,提取apk文件参考this link

    【讨论】:

      【解决方案4】:

      这是我在我的一个项目中使用的,在一个 shell 脚本中。

      apk= #apk path
      package=`.//aapt dump badging $apk | grep package | awk '{print $2}' | sed s/name=//g | sed s/\'//g`
      echo $package
      adb install $apk
      

      如果你只想在 cmd 提示符下输入,那就是

      .//aapt dump badging ***apk relative path*** | grep package | awk '{print $2}' | sed s/name=//g | sed s/\'//g
      

      应该可以的。

      【讨论】:

      • 显示错误 grep 未被识别为内部外部命令
      • 你使用的是 linux 还是 mac?
      • 另外如果app在google play store上也可以查看,包名会显示在url末尾。
      • 好的。那么ypu不能在windows上grep。所以这就是我的方法,对不起。
      【解决方案5】:

      您可以使用Andgroguard

      这就是我在 Python3 中的做法:

      from androguard.misc import AnalyzeAPK
      a, d, dx = AnalyzeAPK(apk_file)
      package_name = a.get_package()
      print(package_name)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-07-06
        • 1970-01-01
        • 2011-12-22
        • 1970-01-01
        • 2014-05-16
        • 2012-03-02
        • 2018-04-03
        相关资源
        最近更新 更多