2012-01-25 45 views
4

我進入一個已經存在的大Android項目。清單看起來像這樣:Android Manifest:活動包是否仍然需要在apk的主包裝下?

<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是不是一個好的選擇,因爲該公司有多個應用程序。

我的問題是:是否有任何理由比常規其他組織項目以更合理的方式?由於源代碼控制歷史問題以及其他問題,我預計會大規模重命名。

回答

3

沒有,活動的名稱不必是APK的主包下。例如,可以指定一個在使用完全不同包名的外部jar中定義的Activity。

實際需要根據AndroidManifest.xml documentation的是,活動名稱爲「應該是一個完全合格的類名」。

但是,隨着文檔繼續提及,在大多數情況下,有一種速記,您不必始終指定完全限定的類名稱。這是通過在'。'之前的名稱。 (即 「<activity android:name=".MyActivity />」)

相關問題