【问题标题】:Does all apps have their code inside "com" folder?所有应用程序的代码都在“com”文件夹中吗?
【发布时间】:2013-09-14 00:44:36
【问题描述】:

我有一个关于应用程序开发的非常基本的问题。我没有应用程序开发经验,但是,我需要对安卓应用程序进行逆向工程。当我对应用程序进行反向工程(使用 apktool 或 androguard 进行反编译)时,我看到每个应用程序都有一个以“com”开头的包(文件夹结构)。是否每个应用程序都有这个 com 文件夹(我猜 eclipse 创建了这个文件夹,开发人员在其中编写代码)。 此假设是否适用于所有应用?

【问题讨论】:

    标签: reverse-engineering android android-debug android-applicationinfo


    【解决方案1】:

    不需要com 文件夹。

    com 文件夹是因为包名。

    如果你拿任何包裹,可以说 - com.sudosaints.android

    所以在这种情况下src代码目录结构将是-src->com->sudosaints->android。

    如果是in.sudosaints.android,目录结构为-src->in->sudosaints->android

    因此com 文件夹的假设并非对所有应用都有效。

    【讨论】:

    • 好的,知道了,谢谢!我想在这里问一个更重要的事情。是否有一组关键字(如 com、org、in 等)作为应用程序包结构的根开始?
    • 不确定是否可以尝试“src”文件夹
    • 当我反编译代码时,我没有看到“src”文件夹。我使用 baksmali(来自 apk 工具)。有没有其他反编译工具可以提供文件夹结构?
    • 不,没有这样的关键字集可以搜索
    【解决方案2】:

    不,不是。您可以选择使用什么作为命名空间。许多开发人员将“com”用于商业应用程序,将“org”用于免费应用程序,但这完全取决于您。

    【讨论】:

    • 好的,知道了,谢谢!我想在这里问一个更重要的事情。 是否有一组关键字(如 com、org、in 等),应用程序包结构的根将从其中开始?
    • @AnnamalaiN 请参阅下面的答案。通常,任何字符串都可以是包结构的根。有约定,但没办法强求...
    • 命名空间主要用于类的消歧。从理论上讲,您可以命名两个具有相同名称但位于不同名称空间中的类。子类化是一个典型的例子,但您可以根据需要使用它们:root 通常是“com”、“org”或“net”,但它们可以是您选择的任何内容。
    【解决方案3】:

    我不能 100% 确定这是否可以被覆盖,但它基于应用程序的包名称。推荐的方式,据我所见,所有开发人员都遵循创建一个名为 com.yourcompany.yourappname 的包。

    在本例中,源代码位于: com.yourcompany.yourappname/src.

    希望这会有所帮助。

    【讨论】:

      【解决方案4】:

      命名包的一般约定基于程序作者拥有的域。

      例如,如果您的公司有网页

      www.mycompany.com

      他们的程序通常具有以

      开头的包结构
      com.mycompany.nameofproject
      

      这就是为什么大多数软件包都以com 开头的原因,因为大多数公司的网页都以.com 结尾。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-12-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多