2012-03-16 28 views
1

我有一個包名稱的主要應用:com.company.package具有相同的包名稱的Android庫

和我有一個包名庫:com.company.package.librarypackage

在我的主清單文件,我已經把:

<activity 
     android:configChanges="orientation" 
     android:name="com.company.package.librarypackage.classA" 
     android:screenOrientation="landscape" > 
</activity> 

我也試過:

<activity 
     android:configChanges="orientation" 
     android:name=".librarypackage.classA" 
     android:screenOrientation="landscape" > 
</activity> 

但是我的代碼目前有消息崩潰:

java.lang.NoClassDefFoundError:com.company.package.librarypackage.classA

我不知道那麼,如果有可能具有分享它的一部分與主要的應用程序包名稱庫。

有什麼建議嗎?

謝謝!

+0

android:name =「。librarypackage.classA」應該工作,你的問題可能與最終的apk導出/構建(即庫代碼不是最終的apk中的dexed)有關,而不是語法定義你的AndroidManifest.xml。 – yorkw 2012-03-16 23:09:35

+0

你確定你已經正確添加了庫項目嗎?你不應該面對這樣的問題。 – 2012-04-10 09:41:58

回答

1

你只需要基本的包在你的清單延伸....所以只使用

<activity 
     android:configChanges="orientation" 
     android:name=".librarypackage.classA" 
     android:screenOrientation="landscape" > 
</activity> 

不要忘了「」

UPDATE

您還需要設置意圖過濾器和動作/類別。如果你想這是默認的活動,你將需要:

<activity 
     android:configChanges="orientation" 
     android:name=".librarypackage.classA" 
     android:screenOrientation="landscape" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
</activity> 

如果要調用你需要在名稱屬性來指定這個意圖的活動。

Here is a reference...

+0

我也試過... – Showpath 2012-03-16 14:43:26

+0

@wnaffee你是否將package =「com.company.package」屬性設置爲你的清單?這是對的嗎? (標記中應該有一個包屬性) – jjNford 2012-03-16 14:45:41

+0

是的,它設置正確。 – Showpath 2012-03-16 14:53:30

1

如果你的主要的應用程序包是com.company.package,那麼如果你要刪除從活動清單XML。它應該是:

android.name=".librarypackage.classA" 

,而不是你有什麼...上面

0

的活動需要在清單中聲明的​​主要應用。在圖書館清單中聲明它是沒用的。

庫和主應用程序的包名稱可以相同。

請注意,活動的類不需要位於應用程序包或子包中。 (如果是,可以縮寫清單,但這不是必需的。)請確保classA實際上是指定軟件包的一部分。

+0

我在編輯主應用程序清單。 – Showpath 2012-03-16 14:44:24

0

已解決。 buildPath中缺少Jar文件依賴項。對不起,打擾...