无法使用Ant构buildAndroid应用程序(请参阅ActionBarSherlock和ViewPagerTabs)

我有一个使用ActionBarSherlock&ViewPagerTabs的Android应用程序。 我使用Eclipse来编写和构build它,直到我尝试使用Ant构build它时,它才运行良好。 以下是我所做的:

  1. 进入ActionBarSherlock文件夹,运行“android update lib-project -path”。
  2. 进入ViewPagerTabs文件夹,运行“android update lib-project –path”。 太
  3. 去app文件夹,运行“android update project –path”。
  4. 运行“和debugging”下的应用程序文件夹,我有以下错误:

[javac] C:\Android\TestApp\src\com\test\App\TestActivity.java:46: cannot find symbol [javac] symbol : method getSupportActionBar() [javac] location: class com.test.App.TestActivity [javac] final ActionBar ab = getSupportActionBar(); [javac] ^ 

所以问题没有。 1: 我在应用程序的project.properties中有正确的库引用,并且可以成功构buildActionBarSherlock&ViewPagerTabs,为什么仍然会得到这些错误?

这个问题有一个解决方法 – 将库bin文件夹下的所有classes.jar复制到应用程序的libs文件夹中,然后再次运行“ant debug”。 但是我需要删除应用程序的libs文件夹下的这些.jar文件,所有应用程序的.java文件都可以被编译。

之后再次运行“antdebugging”,我会得到以下错误:

 [dx] processing archive C:\Android\ActionBarSherlock\library\bin\classes.jar... [dx] ignored resource META-INF/MANIFEST.MF [dx] processing android/support/v4/accessibilityservice/AccessibilityServiceInfoCompat$AccessibilityServiceInfoStubImpl.class... [dx] processing android/support/v4/accessibilityservice/AccessibilityServiceInfoCompat$AccessibilityServiceInfoVersionImpl.class... [dx] processing android/support/v4/accessibilityservice/AccessibilityServiceInfoCompat.class... [dx] processing android/support/v4/accessibilityservice/AccessibilityServiceInfoCompatIcs.class... [dx] processing android/support/v4/app/ActionBar$LayoutParams.class... [dx] processing android/support/v4/app/ActionBar$OnMenuVisibilityListener.class... [dx] processing android/support/v4/app/ActionBar$OnNavigationListener.class... [dx] processing android/support/v4/app/ActionBar$Tab.class... [dx] processing android/support/v4/app/ActionBar$TabListener.class... [dx] processing android/support/v4/app/ActionBar.class... [dx] processing android/support/v4/app/ActivityCompatHoneycomb.class... [dx] [dx] UNEXPECTED TOP-LEVEL EXCEPTION: [dx] java.lang.IllegalArgumentException: already added: Landroid/support/v4/app/ActivityCompatHoneycomb; [dx] at com.android.dx.dex.file.ClassDefsSection.add(ClassDefsSection.java:123) [dx] at com.android.dx.dex.file.DexFile.add(DexFile.java:163) [dx] at com.android.dx.command.dexer.Main.processClass(Main.java:486) [dx] at com.android.dx.command.dexer.Main.processFileBytes(Main.java:455) [dx] at com.android.dx.command.dexer.Main.access$400(Main.java:67) [dx] at com.android.dx.command.dexer.Main$1.processFileBytes(Main.java:394) [dx] at com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java:245) [dx] at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:131) [dx] at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:109) [dx] at com.android.dx.command.dexer.Main.processOne(Main.java:418) [dx] at com.android.dx.command.dexer.Main.processAllFiles(Main.java:329) [dx] at com.android.dx.command.dexer.Main.run(Main.java:206) [dx] at com.android.dx.command.dexer.Main.main(Main.java:174) [dx] at com.android.dx.command.Main.main(Main.java:95) [dx] 1 error; aborting 

我的第二个问题是: 我该如何解决这个问题?

谢谢!

Solutions Collecting From Web of "无法使用Ant构buildAndroid应用程序(请参阅ActionBarSherlock和ViewPagerTabs)"

我终于自己解决了。 我发现在ViewPagerTabs的libs文件夹中有一个android-support-v4.jar。 解决scheme是 – 删除这个android-support-v4.jar,然后使ViewPagerTabs依赖于ActionBarSherlock (因为ActionBarSherlock实际上有一个支持包的副本)。

我希望对于那些想在一个应用程序中使用ActionBarSherlock&ViewPagerTabs并使用Ant来构build他/她的应用程序的人来说是非常有用的。 祝你好运。

你说,因为这两个库都有android-support-v4.jar 。 请参阅@ porter-liu对非maven构build的回答。

对于使用maven的用户,将ViewPager依赖设置为:

  <dependency> <groupId>com.viewpagerindicator</groupId> <artifactId>library</artifactId> <version>2.4.1</version> <type>apklib</type> <exclusions> <exclusion> <groupId>com.google.android</groupId> <artifactId>support-v4</artifactId> </exclusion> </exclusions> </dependency> 

exclusion标签停止双重导入修复问题。

当你更新lib-project时,你正在更新项目,以便它编译为一个库。 有一个独立的步骤来更新您的项目,以便它看到它所需要的库。

对于您要使用的每个库项目,运行

android更新项目 – 库../pathToTheLibrary