แอพ Android ที่สร้างบนไลบรารี geotools ไม่มี java libs ดั้งเดิม

ฉันต้องการใช้ไลบรารี geotools (ปัจจุบัน 8.0-M3 อาจเป็น 2.7.3) ในแอป Android โดยใช้ eclipse (win7 prof, ram 4gb) แต่กระบวนการบิลด์ล้มเหลว และฉันได้รับข้อผิดพลาดดังต่อไปนี้

ข้อยกเว้นลูปเหตุการณ์ที่ไม่สามารถจัดการได้ พื้นที่ฮีป Java

ปัญหาพื้นที่ฮีปของ Java ควรจะแก้ไขได้ แต่ดูเหมือนว่าจะมีมากกว่านั้น (3GB น่าจะพอใช่ไหม?)

เป้าหมายสุดท้ายของฉันคือการสามารถขอ postgres postgis db บน geoserver โดย OGC "บริการคุณสมบัติเว็บ" และ "บริการแผนที่เว็บ"

ฉันตั้งค่า eclipse ini เป็นแล้ว

--launcher.XXMaxPermSize 128m --launcher.defaultAction openFile -vmargs -Xms40m -Xmx3700m

Geotools ต้องการมากกว่า android libs (เมื่อเปรียบเทียบกับ jre6 (1.6.0_24))

-> ดังนั้นฉันจึงคัดลอกไหทั้งหมดจากโฟลเดอร์ jre6 บวก jts-1.8.jar บวกกับ geotools jars ลงในโฟลเดอร์แยก (win) (Maven (ไม่ได้ใช้ในกรณีนี้!) โดยตัวมันเองโหลด jts-1.1.3 lib มันสร้างความแตกต่างหรือไม่) โฟลเดอร์ jar ทั้งหมดมีขนาดเกือบ 80Mb

-> สร้างโฟลเดอร์ใหม่ในโครงสร้างโปรเจ็กต์ eclipse android

-> นำเข้าไฟล์ jar จากโฟลเดอร์ win ไปยัง eclipse

-> เพิ่ม jars ให้กับเส้นทางการสร้างโปรเจ็กต์ (ซึ่งควรพอร์ต java ไปยัง dx) (หลังจากการทดลองใช้เป็นเวลานาน (วัน) นั่นเป็นวิธีเดียวที่ฉันรู้ เพื่อจัดเตรียมคลาสที่จำเป็นทั้งหมดให้กับแอป อย่างน้อย eclipse ก็ไม่ได้ ทำเครื่องหมายว่าขาดหายไป)

หลังจากการคอมไพล์ทำให้เอาต์พุตคอนโซล eclipse เสียหาย:

คำเตือน Dx: การละเว้นแอตทริบิวต์ InnerClasses สำหรับคลาสภายในที่ไม่ระบุชื่อ .....

สำหรับหลายชั้นเรียน อาจเป็นเพราะ jre lib

ฉันมีตัวเลือกอื่นใดในการจัดหา java libs ที่จำเป็นให้กับ geotools ในโปรเจ็กต์ Android ของฉันบ้าง หรือคุณมีความคิดเกี่ยวกับการทดลองที่ฉันกล่าวถึงด้านล่างนี้หรือไม่?

PS: หนังสือ Android แนะนำให้คัดลอกเฉพาะคลาสที่ขาดหายไป (และการพึ่งพาของพวกเขา ฮ่าฮ่า) ออกจากไฟล์ jar ..... (ฉันอาจจะเขียนใหม่ดีกว่า)

ฉันลองใช้ปลั๊กอิน maven แล้ว ซึ่งทำงานได้ดีในโปรเจ็กต์ Java ล้วนๆ โดยใช้ geotools หรือในขณะที่ดูแลโปรเจ็กต์ Android ตราบใดที่ฉันไม่ได้ใช้ geotools หาก maven รวมโปรเจ็กต์ Android ที่ใช้ geotools libs จะถูกโหลดโดย maven แต่แล้ว android ก็พูดบางอย่างเช่น "คลาส R แก้ไขด้วยตนเอง" ... (สิ่งที่ฉันไม่สามารถเปลี่ยนกลับหรือสร้างใหม่ได้)

มีวิธีคัดลอกไลบรารีการพึ่งพา maven (ซึ่งควรประกอบด้วยสิ่งที่ฉันต้องการ) ออกจากโปรเจ็กต์ eclipse หรือไม่ (ฉันคิดว่าฉันสามารถคัดลอกขวดออกจากโฟลเดอร์ที่เก็บ win ได้ แต่นั่นก็รวมถึงขวดอื่น ๆ อีกมากมายด้วย)

Android มี "Java Native Interface" ซึ่งอนุญาตให้ใช้ C++ หรือ libs อื่น ๆ ได้ มันจะเป็นตัวเลือกหรือไม่ที่จะล้อมรอบปัญหาของ libs ที่หายไป/ข้าม (ฉันยังไม่มีประสบการณ์เกี่ยวกับ JNI)

โค้ดของแอปค่อนข้างสั้น หากช่วยคุณได้ ฉันสามารถวางโค้ดได้


person user972851    schedule 24.11.2011    source แหล่งที่มา


คำตอบ (1)


ฉันมีตัวเลือกอื่นใดในการจัดหา java libs ที่จำเป็นให้กับ geotools ในโปรเจ็กต์ Android ของฉันบ้าง

หากคุณต้องการคลาสที่เป็นส่วนหนึ่งของการแจกจ่าย Java มาตรฐาน แต่ไม่ได้อยู่ใน Android แสดงว่าคุณโชคไม่ดี นอกเหนือจากการเขียน geotools ใหม่เพื่อหลีกเลี่ยงความต้องการคลาสเหล่านั้น

หากคุณต้องการคลาสที่เป็นส่วนหนึ่งของไลบรารี Java ของบริษัทอื่น ให้เพิ่มไลบรารี Java ของบริษัทอื่นเหล่านั้นในโปรเจ็กต์ของคุณ

จากการตรวจสอบ geotools โดยย่อ ฉันสงสัยว่าจะต้องเขียนใหม่อย่างมีนัยสำคัญจึงจะสามารถทำงานบน Android ได้

PS: หนังสือ Android แนะนำให้คัดลอกเฉพาะคลาสที่ขาดหายไป (และการอ้างอิง ฮ่าฮ่า) ออกจากไฟล์ jar

หนังสือของฉันไม่ได้ ผู้เขียนคนใดที่ให้คำแนะนำเรื่องนี้จำเป็นต้องได้รับการตรวจศีรษะ

person CommonsWare    schedule 24.11.2011