ไลบรารี่จะไม่ถูกเพิ่มเข้าไปใน APK อีกต่อไปหลังจากอัปเกรดเป็น ADT 22


238

ฉันมีโครงการ Android App ที่ค่อนข้างใหญ่ที่อ้างอิงโครงการห้องสมุดหลายแห่ง ทุกอย่างใช้ได้ดีจนกระทั่งฉันอัปเกรดปลั๊กอิน eclipse ADT เป็นเวอร์ชันใหม่ล่าสุด (v22) ฉันอัพเกรด SDK แน่นอน ฉันไม่เห็นข้อผิดพลาดในการคอมไพล์ใน eclipse แต่เมื่อฉันรันโปรเจ็กต์บนโทรศัพท์ฉันจะได้รับ NoClassDefFoundError

java.lang.NoClassDefFoundError: org.acra.ACRA
....

ไลบรารี arca รวมอยู่ในหนึ่งในโครงการห้องสมุดอ้างอิง (ในโฟลเดอร์ libs) และฉันสามารถดูได้ใน "Android Private Libraries" ในแพ็คเกจ explorer เช่นเดียวกับที่ฉันบอกว่าไม่มีข้อผิดพลาดในการรวบรวม โครงการทำงานได้ดีบนคอมพิวเตอร์ของทุกคนที่ไม่ได้อัพเกรด ADT

ฉันได้ลองทำสิ่งต่าง ๆ ทั้งหมดรวมถึง แต่ไม่ จำกัด เพียง:

  • ติดตั้ง android SDK อีกครั้ง
  • ดาวน์โหลดบันเดิล ADT ใหม่
  • ลบรหัสทั้งหมดของฉันและรับมันอีกครั้งจากคอมไพล์
  • คัดลอกไลบรารีที่เป็นปัญหาไปยังโครงการแอพ
  • ใส่ความคิดเห็นรหัสที่ใช้ไลบรารีนี้ - ฉันเพิ่งได้รับข้อผิดพลาดเดียวกันสำหรับไลบรารีถัดไป

ทั้งหมดนี้ไม่ประสบความสำเร็จดังนั้นฉันเลยหมดหวังที่นี่จริงๆ

ฉันจะมีความสุขมากถ้าใครสามารถให้คำแนะนำเกี่ยวกับวิธีการแก้ปัญหา

คำตอบ:


337

Quoting Streets of Boston จากโพสต์โฆษณาของเขา :

เมื่ออัปเกรด 'สั่งซื้อและส่งออก' ของ 'Android Private Libraries' ใหม่จะไม่ถูกตรวจสอบเสมอ และ android-support-v4.jar ตอนนี้อยู่ในส่วน 'Android Private Libraries'

ในการแก้ไขปัญหานี้ไปที่ 'สั่งซื้อและส่งออก' และตรวจสอบ 'ห้องสมุดส่วนตัวของ Android' จากนั้นรีเฟรช / ล้าง / สร้างใหม่

หลังจากที่คุณทำเช่นนี้ 'แก้ไข' สำหรับโครงการห้องสมุดคุณอาจต้องปิดและเปิดโครงการใด ๆ ขึ้นใหม่เนื่องจากพวกเขาอาจไม่เห็น 'แก้ไข' นี้ทันที

ลองยิงมันดูแล้วโชคดีที่มันจะช่วยแก้ปัญหาของคุณได้

ป้อนคำอธิบายรูปภาพที่นี่


32
CommonsWare เป็นเหมือนหนึ่งในผู้บุกเบิกคนแรกเสมอขอบคุณมาก! :)
Paul Wein

1
Avery new adt version แปลกใจใหม่;) หวังว่าระบบ build ใหม่จะดีขึ้น ขอบคุณ CommonsWare
lujop

3
เป็นแค่ฉันหรือว่าผิดที่มีนักพัฒนาซอฟต์แวร์ทุกคน [ที่ใช้ Eclipse และไลบรารี] เข้าไปในโครงการห้องสมุดทั้งหมดของพวกเขาและทำเครื่องหมาย "ห้องสมุดส่วนตัว Android" เป็นส่งออกหรือไม่ นี่ทำให้ฉันคิดว่าเราทุกคนเข้าใจผิดว่าเจตนาของ Google ในการเพิ่ม "คุณสมบัติ" ใหม่นี้ในตอนแรก บางทีเราไม่ควรทำเครื่องหมายไลบรารีเป็นส่งออก บางทีเราควรจะเพิ่มไฟล์ jar ที่ขาดหายไปโดยตรงไปยังโฟลเดอร์ "libs" ของเรา เช่นนี้จะทำให้โครงการห้องสมุดของฉันใช้ android-support-v4.jar [v13] ล่าสุดในขณะที่ ABS ใช้ android-support-v4-12.jar ภายใน
swooby

2
@swooby: "เป็นแค่ฉันหรือว่าผิดที่จะให้นักพัฒนาทุกคน [ที่ใช้ Eclipse และไลบรารี] เข้าสู่โครงการห้องสมุดทั้งหมดของพวกเขาและทำเครื่องหมาย" ห้องสมุดส่วนตัว Android "เป็นการส่งออก? - มันเป็น "ผิด" ตราบเท่าที่มันเป็นข้อผิดพลาดได้รับการยอมรับจากคนที่เขียนเครื่องมือ "บางทีเราควรจะเพิ่มไฟล์ jar ที่ขาดหายไปโดยตรงไปยังโฟลเดอร์" libs "ของเรา" - โอ้คุณต้องทำเช่นนั้นเหมือนที่คุณมีสำหรับปีที่แล้วและการเปลี่ยนแปลง อย่างไรก็ตามคุณยังต้องทำเครื่องหมายในช่องนี้
คอมมอนส์

9
@Phillip: AFAIK มันคือโครงการทั้งหมด ฉันคิดว่ามันถูกต้องกว่านี้คือทุกโครงการที่มีสิ่งของlibs/แต่คุณอาจตรวจสอบได้ทั้งหมดในกรณีที่คุณเพิ่มสิ่งต่าง ๆ ในlibs/อีกหลายเดือนต่อมาและลืมเรื่องนี้ไป
คอมมอนส์

10

การตรวจสอบห้องสมุดส่วนตัวของ Android นั้นไม่เพียงพอฉันต้องติดตั้งAndroid SDK Build-toolsใน Android SDK Manager ด้วย


ฉันไม่สามารถยืนยันได้ว่าเป็นสิ่งจำเป็น แต่ฉันไม่ได้ผ่านข้อผิดพลาดที่ SimonSays พบก่อนที่จะทำการติดตั้ง อาจต้องการการตั้งค่าที่เหมาะสมของช่องทำเครื่องหมายส่งออกตามที่อธิบายไว้ข้างต้น แต่รู้สึกว่าฉันควรพูดถึงว่าฉันได้ติดตั้งเครื่องมือ Build แล้ว
strangeluck

มันใช้งานได้สำหรับฉัน การเปลี่ยนแปลงการกำหนดค่าตามความชอบของ eclipse เท่านั้นไม่เพียงพอคุณอาจต้องตรวจสอบ build-tools ที่ติดตั้งใน android SDK manager
Stevens

4

ฉันมีปัญหาเดียวกันและฉันadtก็เป็น22.0.1เช่นนั้น และไม่มีวิธีการแก้ปัญหาข้างต้นทำงาน เพิ่มเติมเมื่อเพิ่มโครงการห้องสมุดภายนอกในโครงการทำงานฉันจะตรวจสอบgenโฟลเดอร์ของโครงการทำงานเสมอและหากมีRโครงการห้องสมุดภายนอกอยู่ที่นั่น (พร้อมกับชื่อแพ็คเกจ) แล้วส่งออกเฉพาะโครงการห้องสมุดภายนอกเท่านั้น และในgenโฟลเดอร์ของฉันไม่มีpackagenameการแสดงไลบรารีภายนอก

ดังนั้นฉันจึงตรวจสอบproject.propertiesไฟล์และไม่มีลิงก์ภายนอกของห้องสมุดปรากฏandroid.library.reference.1=อยู่ project->properties->Java Build Path->Projects->Addดังนั้นผมด้วยตนเองเพิ่มอ้างอิงห้องสมุดภายนอกมีแม้ว่าฉันได้มาจาก ดังนั้นการแก้ไขด้วยตนเองproject.propertiesทำให้ฉันทำงานได้ทั้งหมด

ป้อนคำอธิบายรูปภาพที่นี่


1
ฉันคิดว่ามันเกิดขึ้นตั้งแต่สถานที่ GUI ชุดandroid.library.reference.nคือไม่ได้ java build pathแต่project-> properties-> Android-> ->Library gotcha Add...
n611x007

4

ฉันพบปัญหาที่คล้ายกันใช้เวลาประมาณ 3 ชั่วโมง แต่ไม่มีการตัดสินใจใด ๆ ที่เสนอที่นี่ไม่ได้ช่วย ... ในที่สุดฉันก็พบแหล่งที่มาของปัญหา: ไฟล์โครงการ & project.properties เป็นแบบอ่านอย่างเดียว Eclipse เพียง แต่เพิกเฉยต่อการเปลี่ยนแปลงใด ๆ ในการพึ่งพาไลบรารีเมื่อฉันทำใน GUI!


3

ผมมีปัญหาเหมือนกัน. มันเป็นเพราะโครงการคราส เพื่อแก้ปัญหานั้นฉันได้สร้างโครงการใหม่ใน eclipse ให้คัดลอกคลาสโปรเจ็กต์และทรัพยากรที่มีอยู่ของฉันลงในมันแล้วเปิด eclipse อีกครั้งและเพิ่มการรวมที่กำหนดเองของฉัน


1
ความยุ่งยากมากเกินไปโซลูชันของ CommonsWare ใช้งานได้สำหรับฉันและฉันเชื่อว่ามันจะได้ผลกับคุณเช่นกัน
Bilthon

2

ฉันมีปัญหาที่คล้ายกันและคำตอบของฉันแตกต่างจากของ CommonsWare เล็กน้อย นี่คือภาพหน้าจอของฉัน:

ป้อนคำอธิบายรูปภาพที่นี่

หลังจากตรวจสอบ libs กลับในงานสร้างของฉันเริ่มทำงานอีกครั้ง


2
ฉันจะระมัดระวังด้วยวิธีนี้ Android Dependenciesถูกแทนที่ด้วยAndroid Private Librariesและอาจยังอยู่ในนั้นด้วยเหตุผลดั้งเดิมเท่านั้น ฉันคิดว่ามันสามารถลบออกได้ตลอดเวลา
SimonSays

0

ฉันก็มีปัญหาเดียวกัน

i) เพิ่ม gson lib เป็น librairies ที่อ้างอิง
2) ตรวจสอบใน java Build Path http://i.stack.imgur.com/Gldhs.png

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.