【问题标题】:need to check if file is a valid APK需要检查文件是否是有效的 APK
【发布时间】:2011-06-12 13:59:19
【问题描述】:

我正在开发一个允许最终用户上传.apk files 的网页。 我需要一个库/组件来检查上传的文件是否是有效的 .apk 文件。 我正在寻找的不仅仅是查看内容的能力。

提前谢谢...

【问题讨论】:

    标签: android validation apk


    【解决方案1】:

    对于大量文件来说有点慢,但对于单个文件,这是最快最好的方法。

    PackageInfo packageInfo = context.getPackageManager().getPackageArchiveInfo(file.getAbsolutePath(), 0);
    if(packageInfo != null){
        // you can be sure that it is a valid apk
    } else {
        // not a valid apk
    }
    

    【讨论】:

      【解决方案2】:

      如果您需要以编程方式执行此操作,我建议您尝试使用zip --check filenamedex2jar filename。就我而言,它有助于丢弃无效的 apk。

      【讨论】:

        【解决方案3】:

        您想要多深的验证?

        APK 是一个重命名的 ZIP 存档。因此,第一行验证将尝试将其作为 zip 打开。然后您可以检查 Android 清单是否存在并且看起来是否正确。最后,您可以尝试从文件中加载 Java 类……但您需要一份 Dalvik VM 的副本,因为 Android 字节码格式与常规 Java 不同。

        您如何使用 ZIP 和 XML 取决于您的后端平台,您可能应该在问题标签中指定。

        【讨论】:

        • 没有加载类。但绝对解压缩并检查 .apk 所需的所有部分是否都在那里。 .apk 文件中的内容是否有规范?至于清单是否有可用于验证的方案?
        • 只是后端的标准东西。 java.util.zip 和 DOM + Xerces。
        • 另外,我不会根据架构验证清单,而是检查是否存在具有至少一个活动的应用程序。一般来说,在实施任何类型的验证之前,请先问问自己:您是否试图防止意外的用户错误或蓄意的恶意意图?
        猜你喜欢
        • 2012-08-18
        • 2015-11-15
        • 2020-02-10
        • 1970-01-01
        • 1970-01-01
        • 2015-09-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多