我正在进入一个大型预先存在的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不是一个好选择,因为该公司有多个应用程序。
我的问题是:除了惯例之外,还有什么理由以更明智的方式组织项目吗?由于源控制历史和诸如此类的问题,我预计会对大规模重命名进行推迟。
答案 0 :(得分:3)
不,活动的名称不必在apk的主包下。例如,可以指定在使用完全不同的包名称的外部jar中定义的Activity。
根据AndroidManifest.xml documentation的实际要求是活动名称“应该是完全限定的类名”。
但是,正如文档继续提到的那样,在大多数情况下,您可以使用速记来不必始终指定完全限定的类名。这是在名称前加上'。'。 (即“<activity android:name=".MyActivity />
”)