2012-03-02 14 views
8

Tengo una aplicación de Android que usa ActionBarSherlock & ViewPagerTabs. Uso Eclipse para escribirlo y compilarlo, y funciona bien hasta que intento construirlo con Ant. Esto es lo que hice:No se pudo construir la aplicación de Android (consulte ActionBarSherlock y ViewPagerTabs) con Ant

  1. Ir a la carpeta ActionBarSherlock, ejecute "Actualización androide -lib proyecto --path."
  2. vaya a la carpeta ViewPagerTabs, ejecute "android update lib-project --path." también
  3. vaya a la carpeta de la aplicación, ejecute "android update project --path."
  4. plazo "y de depuración" en la carpeta de aplicaciones, y me dieron siguientes errores:

:

[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]       ^

Así que la pregunta no. 1: Tengo referencias de biblioteca correctas en project.properties de la aplicación, y ActionBarSherlock & ViewPagerTabs podría construirse con éxito, ¿por qué sigo recibiendo estos errores?

Hay una solución alternativa para este problema: copie todo classes.jar en la carpeta bin de la biblioteca en la carpeta libs de la aplicación y ejecute "depuración de hormigas" nuevamente. Pero necesito eliminar estos archivos .jar en la carpeta libs de la aplicación después de que todos los archivos .java de la aplicación puedan compilarse.

Running "depuración hormiga" de nuevo después de esto, voy a tener errores siguientes:

[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 

Mi pregunta es NO.2: cómo puedo solucionar este problema?

Gracias!

Respuesta

24

finalmente resolver yo mismo. Encuentro que hay un android-support-v4.jar en la carpeta libs de ViewPagerTabs. La solución es - borrando este android-support-v4.jar, luego haga que ViewPagerTabs dependa de ActionBarSherlock (porque ActionBarSherlock en realidad tiene una copia del Support Package).

Espero que sea útil para las personas que quieran usar ActionBarSherlock & ViewPagerTabs en una aplicación y usar Ant para crear su aplicación. Buena suerte.

+0

¡Gracias! No tuve este problema con mi configuración hasta que actualicé a ADT17 pero esto lo solucionó. – Damian

+0

Tenga en cuenta que también tiene que hacer que ActionBarSherlock exporte android-support (está en el diálogo Estructura de proyecto-> Módulos). Creo que lo haces de todos modos. Está actuando un poco raro ... – Timmmm

+0

Y aunque compila bien, IntelliJ rocía un montón de errores de compilación a través del proyecto. : -/ – Timmmm

0

Cuando actualiza lib-project, está actualizando el proyecto para que se compile como una biblioteca. Hay un paso separado para actualizar su proyecto principal para que vea la biblioteca que necesita.

Para cada proyecto de biblioteca que va a utilizar, ejecutar

proyecto de actualización androide --library ../pathToTheLibrary

+0

Alexander, gracias por la respuesta! He creado mi aplicación con Eclipse, así que tengo todas las referencias de la biblioteca en el proyecto. Propiedades de mi aplicación. Si ejecuto "proyecto de actualización android --library ../pathToTheLibrary", la referencia de la biblioteca reduplicate se agregará a project.properties. –

3

Usted indicó que su biblioteca tiene android-support-v4.jar. Ver @ porter-liu answer para compilaciones no maven.

Para las personas que utilizan experto, establecer sus ViewPager dependencia como:

<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> 

La etiqueta exclusion detiene el doble de importación fijación de la cuestión.

Cuestiones relacionadas