Error al construir la aplicación de Android (consulte la ActionBarsherlock & ViewpagAbs) con hormiga

StackOverflow https://stackoverflow.com/questions/9527075

Pregunta

Tengo una aplicación de Android que utiliza ActionBarsherlock & ViewpagAbs. Uso Eclipse para escribirlo y construirlo, y simplemente funciona bien hasta que intento construirlo con hormiga. Esto es lo que hice:

  1. Ir a la carpeta ActionBarsherlock, ejecute "Actualización de Android Lib-Project --path".
  2. Ir a la carpeta ViewPagAbs, ejecute "Actualización de Android Lib-Project --path". demasiado
  3. Ir a la carpeta de la aplicación, ejecute "Actualización de Android Project --path".
  4. ejecutar "y depurar" en la carpeta de la aplicación, y obtuve los 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 correctas de la biblioteca en el proyecto.properties, y ActionBarsherlock & Viewpagabs podrían construirse con éxito, ¿por qué sigo siendo estos errores?

    Hay una solución para este problema: copie todas las clases.jar en la carpeta de la banda de la biblioteca en la carpeta LIBS de la aplicación, y ejecute "hormiga debug" nuevamente. Pero necesito eliminar estos archivos .jar en la carpeta LIBS de la aplicación después de que todos los archivos de la aplicación .java puedan compilarse.

    Ejecutando "debug" de ejecución nuevamente después de esto, obtendré los siguientes errores:

    [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 No.2 es: ¿Cómo puedo solucionar este problema?

    ¡Gracias!

¿Fue útil?

Solución

I finally resolve it myself. I find that there's a android-support-v4.jar in ViewPagerTabs' libs folder. The solution is -- deleting this android-support-v4.jar, then make ViewPagerTabs depend on ActionBarSherlock (because ActionBarSherlock actually have one copy of Support Package).

I hope it's useful for people who wants to use ActionBarSherlock & ViewPagerTabs in one application and use Ant to built his/her application. Good luck.

Otros consejos

You stated its because both library have android-support-v4.jar. See @porter-liu answer for non-maven builds.

For people using maven, set your ViewPager dependancy as:

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

The exclusion tag stops the double import fixing the issue.

When you update lib-project, you're updating the project so that it compiles as a library. There's a separate step to update your main project so that it sees the library it requires.

For each library project you're going to use, run

android update project --library ../pathToTheLibrary

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top