5

使用Maven Android插件的最新版本4.0.0-rc.1,某些類似乎在構建中缺失。我得到的一個例外,當我啓動應用程序(兩種可能的方法來啓動應用程序):Android支持庫和Maven的NoClassDefFoundError

  • java.lang.NoClassDefFoundError:android.support.v4.app.TaskStackBuilderHoneycomb
  • java.lang.NoClassDefFoundError :android.support.v4.widget.EdgeEffectCompatIcs

這兩個缺失的類都在support-v4-21.0.0.aar/libs/internal_impl-21.0.0.jar中。

我依賴的定義:

<dependency> 
     <groupId>com.android.support</groupId> 
     <artifactId>support-v4</artifactId> 
     <version>21.0.0</version> 
     <type>aar</type> 
    </dependency> 

這是一些配置錯誤? Android Maven插件中的錯誤?

+1

如果您通過gradle插入'support-v4-21.0.0',我可以確認這兩個類都存在。 – 2014-10-20 14:37:47

+0

我第二什麼托馬斯凱勒說,它適用於gradle,但不是maven,我一直試圖找出爲什麼已經幾個小時了,這裏是我提交給android maven插件回購的問題:https:// github。com/jayway/maven-android-plugin/issues/484 – jianinz 2014-10-21 13:23:56

+0

logcat顯示DexOut無法將來自classes.jar的調用引導至internal_impl-21.0.0.jar。 maven的android插件似乎成功地從aar中提取所有依賴關係並打包它,如果您查看'target/unpacked-libs/cas_support-v4'文件夾,它具有我們需要的一切。 – jianinz 2014-10-21 13:30:31

回答

0

我找到了一個臨時解決方案:

  • cp support-v4-21.0.0.aar ~/Desktop
  • cd ~/Desktop && mv support-v4-21.0.0.aar support-v4-21.0.0.jar
  • jar xf support-v4-21.0.0.jar

然後從libs文件夾中拉出來internal_impl-21.0.0.jar並上傳到自己的artifactory的,如果您有任何,和修改你應該工作的pom文件,如果你沒有自己的artifactory然後添加它nto類路徑。

這適用於我。

10

您需要設置以下配置在POM:

<includeLibsJarsFromAar>true</includeLibsJarsFromAar> 

因此,這將是這個樣子:

<plugin> 
    <groupId>com.jayway.maven.plugins.android.generation2</groupId> 
    <artifactId>android-maven-plugin</artifactId> 
    <extensions>true</extensions> 
    <configuration> 
     //... 
     <includeLibsJarsFromAar>true</includeLibsJarsFromAar> 
     //... rest of config 
    </configuration>  
</plugin> 

其原因的變化是,谷歌決定把罐子放在罐子裏面,這是一種不好的依賴做法。如果你想替換版本或其他東西,目前是不可能的。簡而言之,它使依賴關係難以管理。

默認情況下,此設置設置爲false,以阻止在libs文件夾內使用jar創建aar的行爲。

更新:

採用了最新的Android-Maven的插件(現在4.1.1很快4.2.0)這個標誌被默認設置爲true,這樣你就不需要添加它了。

+0

謝謝!我試了一下,效果很好!另一個問題,因爲support-v4和support-v13 aar包帶有libs文件夾,其中包含**相同的** jar文件名internal_impl-21.0.0.jar,如果同時包含兩個文件,maven-shade插件會過濾掉其中的一個他們正在使用?你知道,應用程序包含庫中有支持v4的? – jianinz 2014-10-23 20:18:31

+0

遇到與主題啓動程序相同的問題,「未找到android.support.v4.widget.DrawerLayoutImpl的類文件」。這已經順利解決了它。 – riwnodennyk 2014-10-26 13:43:31