ข้อผิดพลาดในการสร้างโครงการ Android-NDK Eclipse

ฉันมีโปรเจ็กต์ Android พร้อมโค้ดเนทีฟ เมื่อฉันชำระเงินจาก repo ของฉันและสร้างเวอร์ชันใหม่ทั้งหมด มันจะบิลด์ได้โอเคและเริ่มบนอุปกรณ์ แต่หลังจากที่ฉันรันคำสั่ง project->clean eclipse ฉันได้รับข้อผิดพลาด:

...
Install        : libgnustl_shared.so => libs/armeabi/libgnustl_shared.so

D:/android-ndk-r8b/toolchains/arm-linux-androideabi-4.6/prebuilt/windows/bin/arm-linux-androideabi-strip: unable to rename './libs/armeabi/libgnustl_shared.so'; reason: File exists
make: *** [libs/armeabi/libgnustl_shared.so] Error 1
make: *** Deleting file `libs/armeabi/libgnustl_shared.so'

**** Build Finished ****

ข้อผิดพลาดนี้สามารถทำซ้ำได้ในคอนโซล Cygwin ด้วยเอาต์พุตเดียวกัน (ใช่ ฉันทำงานภายใต้ MS Windows Vista)

ฉันได้รับข้อผิดพลาดเดียวกันเมื่อฉันเริ่มต้นโครงการ และได้รับการแก้ไขโดยการใส่ไฟล์ libgnustl_shared.so ลงใน obj/local/armeabi/libgnustl_shared.so และตั้งค่าสิทธิ์ 777 ให้กับไฟล์โครงการทั้งหมดผ่านคอนโซล cygwin ที่ทำงานภายใต้ผู้ดูแลระบบ แต่ตอนนี้มันไม่ได้ช่วยอะไร

คุณสามารถค้นหาโครงการของฉันได้ที่ github https://github.com/aboritskiy/pacman
I ยังไม่ได้ตั้งค่าใบอนุญาตโครงการใดๆ และฉันหวังว่าฉันจะไม่ละเมิดใบอนุญาตโครงการอื่นๆ กับโครงการด้านการศึกษานี้

ฟังก์ชันที่เปิดใช้งาน JNI อยู่ในสาขา jni-powered

แก้ไข: ดูเหมือนว่าฉันจะใส่ libgnustl_shared.so ผิดวิธี


person Anton Boritskiy    schedule 25.11.2012    source แหล่งที่มา


คำตอบ (3)


คุณมี https://github.com/aboritskiy/pacman/blob/jni-powered/libs/armeabi/libgnustl_shared.so อยู่ในที่เก็บของคุณ แต่ NDK คิดว่าควรสร้างขึ้นระหว่างการสร้าง

person Alex Cohn    schedule 25.11.2012
comment
อืม โอเค! การกำหนดค่าผิดพลาดอยู่ที่ไหน? - person Anton Boritskiy; 25.11.2012
comment
ไฟล์นี้ไม่ควรเป็นส่วนหนึ่งของการควบคุมเวอร์ชันของคุณ - person Alex Cohn; 25.11.2012
comment
ไม่ใช่ปัญหาของการควบคุมเวอร์ชัน เพราะแม้ว่าฉันจะลบทั้ง ./obj และ ./libs ออกจากโปรเจ็กต์ แต่ก็ยังคอมไพล์โดยมีข้อผิดพลาดเดียวกัน - person Anton Boritskiy; 25.11.2012
comment
เป็นเรื่องแปลกจริงๆ ที่โปรเจ็กต์สามารถคอมไพล์ได้สำเร็จเป็นครั้งคราว เนื่องจากมีปัญหาเรื่องเวลาระหว่างไฟล์ IO - person Anton Boritskiy; 26.11.2012
comment
ลองใช้สถานการณ์นี้: ทำการชำระเงินใหม่ทั้งหมด ลบ ./libs และ ./obj สร้างโปรเจ็กต์ ควรสร้างตกลงในเวอร์ชันที่แล้ว จากนั้นสร้างอีกครั้ง และข้อผิดพลาดควรปรากฏขึ้นที่นี่ ฉันมี NDK เวอร์ชันเดียวกัน - person Anton Boritskiy; 26.11.2012
comment
ข้อผิดพลาดอาจเป็นเพราะคุณตั้งค่า ./obj และ ./libs เป็นเส้นทางเอาต์พุตใน Eclipse ฉันไม่เคยแตะการตั้งค่าเหล่านี้สำหรับโครงการ NDK ผลกระทบของการตั้งค่านี้ดูเหมือนว่า Eclipse สามารถขัดโฟลเดอร์เหล่านี้ได้เมื่อทำความสะอาดโปรเจ็กต์ ยังไม่ชัดเจนว่า scrub นี้ซิงค์กับ ndk-build ซึ่งใช้ makefile ภายนอกในแง่ของ Eclipse อย่างไร โปรดตรวจสอบว่าปัญหาของคุณเกิดขึ้นซ้ำได้จากบรรทัดคำสั่งของ Windows (cd pacman-jni-powered และ ndk-build) หรือไม่ - person Alex Cohn; 26.11.2012
comment
มันค่อนข้างงี่เง่า แต่ปัญหาไม่ปรากฏอีกต่อไป... ฉันแก้ไขเฉพาะ Android.mk ฉันเพิ่มบรรทัด LOCAL_C_INCLUDES := sources/cxx-stl/gnu-libstdc++/include/ และทำไปแล้วเมื่อวานนี้ แต่ไม่มีผลกระทบใด ๆ เลย อาจจะรีสตาร์ท eclipse ทำให้เกิดเอฟเฟกต์นี้... - person Anton Boritskiy; 26.11.2012
comment
การรีสตาร์ท eclipse ควรเป็นสิ่งแรกที่ต้องลอง! - person Alex Cohn; 27.11.2012
comment
อเล็กซ์ คุณจะรังเกียจไหมถ้าฉันยอมรับคำตอบแบบสรุป หรือเปลี่ยนคำตอบของคุณเองเพื่อให้ฉันยอมรับได้ - person Anton Boritskiy; 27.11.2012
comment
ฉันเชื่อว่าคุณคิดผิด: ndk-build ดูแล LOCAL_C_INCLUDES ให้ฉัน ฉันจะตรวจสอบและโพสต์คำตอบโดยละเอียด - person Alex Cohn; 27.11.2012

ฉันสังเกตเห็นปัญหานี้เมื่อฉันติดตั้ง Tortoise Git และ TGitCache.exe ทำงานในพื้นหลัง และโค้ดที่ฉันกำลังสร้างก็คือโค้ดของพื้นที่เก็บข้อมูล

ลองฆ่า TGitCache.exe ในตัวจัดการงานและสร้างใหม่

person Suman    schedule 22.07.2014

การสรุป:

ฉันต้องการเพิ่ม libgnustl_shared.so ในโครงการ ฉันใช้ Eclipse กับปลั๊กอินเครื่องมือสำหรับนักพัฒนา Android และปลั๊กอินเครื่องมือสำหรับนักพัฒนา Android Native แต่ฉันมีข้อผิดพลาดในการรวบรวม ข้อผิดพลาดนี้สามารถทำซ้ำผ่าน eclipse และผ่านคอนโซล Cygwin

ปัญหาเกิดจากการกำหนดค่า Android.mk ไม่ถูกต้อง: เพื่อรวม libgnustl_shared.so ฉันต้องเพิ่ม

  1. LOCAL_C_INCLUDES := sources/cxx-stl/gnu-libstdc++/include/ to Android.mk,

  2. APP_STL := gnustl_shared ไปยังไฟล์ Application.mk

แต่ในตอนแรกฉันมีเพียงตัวเลือกที่สองเท่านั้น

ขอขอบคุณ Alex Cohn สำหรับคำแนะนำที่เป็นประโยชน์ระหว่างการแก้ไขข้อบกพร่องนี้

person Anton Boritskiy    schedule 27.11.2012
comment
ขั้นสุดท้าย: ด้วย r8b คุณไม่จำเป็นต้องตั้งค่า LOCAL_C_INCLUDES ด้วยตนเองให้ชี้ไปยังไดเร็กทอรี libstd include ที่เหมาะสม คุณมีข้อผิดพลาดอีกครั้งในไฟล์ Android.mk ของคุณ ซึ่งหากคุณโชคร้ายก็อาจทำให้เกิดปัญหามากมายได้: คุณไม่จำเป็นต้องใช้ -L$(SYSROOT)/usr/lib ใน LOCAL_LDLIBS ของคุณ ndk-build จะเพิ่มเส้นทางไลบรารีที่จำเป็นทั้งหมดตามแพลตฟอร์ม APP_STL และพารามิเตอร์อื่นๆ - person Alex Cohn; 28.11.2012