فشل إنشاء تطبيق Android (راجع كلاً من ActionBarSherlock وViewPagerTabs) باستخدام Ant

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

سؤال

لدي تطبيق Android واحد يستخدم ActionBarSherlock وViewPagerTabs.أستخدم Eclipse لكتابته وإنشائه، وهو يعمل جيدًا حتى أحاول بنائه باستخدام Ant.وإليك ما فعلته:

  1. انتقل إلى مجلد ActionBarSherlock، وقم بتشغيل "android update مشروع ليب --طريق ."
  2. انتقل إلى مجلد ViewPagerTabs، وقم بتشغيل "android update مشروع ليب --المسار." أيضًا
  3. انتقل إلى مجلد التطبيق، وقم بتشغيل "Android Update مشروع --طريق ."
  4. قم بتشغيل "وتصحيح" ضمن مجلد التطبيق، وحصلت على الأخطاء التالية:

:

[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 للتطبيق، ويمكن إنشاء ActionBarSherlock & ViewPagerTabs بنجاح، لماذا لا أزال أتلقى هذه الأخطاء؟

يوجد حل بديل لهذه المشكلة - انسخ جميع الفئات.jar الموجودة ضمن مجلد سلة المكتبة إلى مجلد libs الخاص بالتطبيق، وقم بتشغيل "ant debug" مرة أخرى.لكنني بحاجة إلى حذف ملفات .jar هذه ضمن مجلد libs الخاص بالتطبيق بعد أن يتم تجميع جميع ملفات .java الخاصة بالتطبيق.

عند تشغيل "ant debug" مرة أخرى بعد ذلك، سأحصل على الأخطاء التالية:

[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

سؤالي رقم 2 هو: كيف يمكنني حل هذه المشكلة؟

شكرًا!

هل كانت مفيدة؟

المحلول

وأخيرا حلها بنفسي.أجد أن هناك android-support-v4.jar في مجلد libs الخاص بـ ViewPagerTabs.الحل هو -- قم بحذف android-support-v4.jar هذا، ثم اجعل ViewPagerTabs يعتمد على ActionBarSherlock (لأن ActionBarSherlock لديه بالفعل نسخة واحدة من حزمة الدعم).

آمل أن يكون مفيدًا للأشخاص الذين يريدون استخدام ActionBarSherlock & ViewPagerTabs في تطبيق واحد واستخدام Ant لإنشاء تطبيقه/تطبيقها.حظ سعيد.

نصائح أخرى

لقد ذكرت ذلك لأن كلا المكتبتين لديهما android-support-v4.jar.راجع إجابة @porter-liu للتعرف على التصميمات غير المخضرمة.

بالنسبة للأشخاص الذين يستخدمون 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 --library ../pathToTheLibrary

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top