Android Manifest:Activity包仍然需要在apk的主包下吗?

时间:2012-01-25 18:17:33

标签: android android-manifest

我正在进入一个大型预先存在的Android项目。清单看起来像这样:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.company.group1.package1">
    <application ... >
    <activity android:name="com.company.group1.MyActivity />
    <service android:name="com.company.group2.blah.MyService" />
    <provider android:name="com.company.group3.etc.MyProvider" />
    ... more fully-qualified activities ...
    </application>
</manifest>

基本上,实体遍布所有地方,包装方式,所有完全合格。这当然打破了各种惯例,但不知何故它运作得很好。我试图从谷歌那里得到一个声明,这是一个坏主意,但我没有找到任何正式建议反对它或它会导致什么样的问题。

重命名包com.company不是一个好选择,因为该公司有多个应用程序。

我的问题是:除了惯例之外,还有什么理由以更明智的方式组织项目吗?由于源控制历史和诸如此类的问题,我预计会对大规模重命名进行推迟。

1 个答案:

答案 0 :(得分:3)

不,活动的名称不必在apk的主包下。例如,可以指定在使用完全不同的包名称的外部jar中定义的Activity。

根据AndroidManifest.xml documentation的实际要求是活动名称“应该是完全限定的类名”。

但是,正如文档继续提到的那样,在大多数情况下,您可以使用速记来不必始终指定完全限定的类名。这是在名称前加上'。'。 (即“<activity android:name=".MyActivity />”)