0

我从我的公司获得了一个没有文档的项目。现在我必须向这个项目添加一些东西,比如新的添加功能等。但我不知道这个项目是如何组织的以及它从哪里开始......有谁知道如何使用这样的项目?我可以用shema分析它吗?

我怎样才能找到这个应用程序的起点?

有没有办法从A到Z调试?

4

4 回答 4

3

在清单文件中查找主要活动。

虽然其他人可能会附和特定于 Android 的答案,但您应该将此项目视为“遗留代码”——由其他人创建,文档不佳或没有文档,并且(最初)对事物的实现方式一无所知。

如果您想要一本关于您的问题的体面的书,请查看 Feathers 的《有效地使用遗留代码》 。电子书“Rails Rescue”和 Rails Test Prescriptions 中的“Legacy Code”一章中的建议也是相关的,但不是特定于 Android 的。尽管与 Rails 相关,但作者给出的建议直接适用于大多数项目。

简而言之:

  • 如果还没有,则将项目置于版本控制之下(如果是,那么您很幸运,因为您可以查看提交历史以了解情况)
  • 让测试套件干净地运行。没有测试套件?开始一个简单的测试存根
  • 承诺为您实现的每个新功能创建测试

最后,阅读代码。您将不得不咬紧牙关并熟悉实施 - 没有办法解决这个问题。

于 2012-06-25T14:58:31.037 回答
2

应用程序的起点(主要活动)可以在清单文件中找到:

    <activity
        android:name=".MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

具有此意图过滤器的任何活动都是应用程序的入口点

于 2012-06-25T14:57:25.987 回答
0

检查 Manifest.xml<activity>有人应该得到的行

<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />

这是apk开始的地方

那么我将从onCreate()这个类的方法开始。您还应该检查可能在设备启动时启动的服务。检查 aBroadcastReceiver和类似的东西

 if("android.intent.action.BOOT_COMPLETED".equals(intent.getAction()))
于 2012-06-25T14:58:41.510 回答
0

正如 JesperB 所说,在清单中找到启动活动。

然后我会在调试模式下运行该应用程序,并在您使用该应用程序时遵循所有内容,并在此过程中做笔记。

您也可以尝试在其上运行视图层次结构查看器,这也可以提供一些方向。

于 2012-06-25T15:03:08.667 回答