نحوه حل مشکلات کتابخانه GitHub GOCV هنگام ساخت برنامه های Android

مقدمه
هنگام تهیه یک برنامه GO برای Android که از کتابخانه های Gioui.org و Gocv.io/x/gocv استفاده می کند ، ممکن است هنگام اجرای این خطای ناامید کننده با یک خطای ناامیدکننده روبرو شوید gogio
فرمان در این مقاله به دلایل احتمالی خطا ، راه حل های مشترک و بهترین روشها برای اطمینان از راه اندازی GOCV در پروژه شما می پردازیم.
درک خطای ساخت
پیام خطایی که دریافت کردید نشانگر درگیری های ناشی از کتابخانه GOCV و مشکلات مربوط به فرآیند پیوند در معماری هدف است. خطای خاص Relocations in generic ELF (EM: 183)
به این معنی است که هنگام تلاش برای ایجاد یک کتابخانه مشترک ، پیوند دهنده Go در حال اجرا است (libgio.so
). این اغلب به دلیل مشکلات سازگاری با کتابخانه های بومی مورد استفاده GOCV ، به ویژه هنگام هدف قرار دادن پلت فرم Android اتفاق می افتد.
دلایل ریشه خطا
چندین مسئله می تواند منجر به خطای پیوندی شود که با آن روبرو هستید:
- عدم تطابق معماری: اگر كتابخانه های بومی GOCV برای معماری متفاوت نسبت به هدف Android شما گردآوری شوند ، این منجر به خطاهای جابجایی خواهد شد.
- تعارض وابستگی: هرگونه وابستگی بومی که از بین می رود می تواند مشکلات ناسازگاری را در طی فرآیند ساخت ایجاد کند.
- کتابخانه های منسوخ: اگر GOCV یا سایر کتابخانه های مرتبط با آن منسوخ شوند ، ممکن است از معماری های خاصی به خوبی پشتیبانی نکنند.
راه حل های گام به گام
برای مقابله با این مسائل ، مراحل زیر را دنبال کنید:
مرحله 1: سازگاری معماری را تأیید کنید
اطمینان حاصل کنید که GOCV و هرگونه وابستگی بومی برای معماری Android Target که برای آن تهیه می کنید مناسب است (به عنوان مثال ، ARMV7 ، ARM64). می توانید معماری های پشتیبانی شده توسط GOCV را با جستجوی مستندات آنها بررسی کنید.
مرحله 2: GOCV را برای Android دوباره جبران کنید
ممکن است لازم باشد GOCV را برای معماری خاص اندرویدی خود بازسازی کنید. شما می توانید این کار را با تنظیم متغیرهای محیط قبل از ساخت انجام دهید:
GOOS=android GOARCH=arm64 go get -u gocv.io/x/gocv
اطمینان حاصل کنید که Android NDK را در محیط خود نصب و به درستی تنظیم کرده اید. معماری مناسب را انتخاب کنید که با هدف اندرویدی شما مطابقت داشته باشد (به عنوان مثال ، arm64
با amd64
).
مرحله 3: وابستگی های خود را به روز کنید
اطمینان حاصل کنید که از آخرین نسخه GOCV و وابستگی های آن استفاده می کنید. شما می توانید اجرا کنید:
go get -u gocv.io/x/gocv
این تضمین می کند که شما آخرین رفع اشکال و به روزرسانی های سازگاری را دریافت کنید.
مرحله 4: ساختار پروژه را تنظیم کنید
اطمینان حاصل کنید که ساختار پروژه شما به درستی برای یک پروژه GO و Android تنظیم شده است. به عنوان مثال:
QR_client/
├── app/
│ ├── android.go
├── pages/
│ ├── page.go
│ ├── read_qr/
├── conf_pack/
├── main.go
└── icon/
اطمینان حاصل کنید که gocv
کتابخانه به درستی در شما وارد می شود main.go
پرونده و سایر پرونده های مرتبط.
مرحله 5: اشکال زدایی خطاهای لینک
اگر مراحل فوق مسئله پیوند را برطرف نمی کند ، سعی کنید خروجی دستورات را به صورت دستی بررسی کنید یا حتی در تهیه یک تولید مثل حداقل مشکل برای شناسایی بهتر منبع خطا را کشف کنید. همچنین می توانید با تنظیم: خروجی Verbose را برای پیوند GO فعال کنید:
export CGO_LDFLAGS='-v'
این ممکن است نکات اضافی را در مورد اینکه در آن مسئله ایجاد می شود ، ارائه دهد.
سوالات متداول
اگر “گوگیو” ناکام باشد ، چه کاری باید انجام دهم؟
اطمینان حاصل کنید که وابستگی های شما برآورده شده و سازگاری معماری را بررسی کنید. دوباره کتابخانه ها را امتحان کنید و از وجود باینری قدیمی اطمینان حاصل کنید.
آیا می توانم از GOCV بدون وابستگی های بومی استفاده کنم؟
نه ، GOCV به کتابخانه های بومی OpenCV و سایر وابستگی ها متکی است. از این رو ، شما نمی توانید آنها را از بین ببرید.
چگونه می توانم تست کنم اگر ساخت من موفق شود؟
قبل از دویدن gogio
، می توانید یک برنامه کاربردی ساده را بدون وابستگی GOCV بسازید تا اطمینان حاصل شود که هیچ خطای پیکربندی در تنظیم پروژه شما وجود ندارد.
پایان
با پیروی از این راه حل ها و نکات عیب یابی ، می توانید به طور معمول موارد ناشی از کتابخانه GOCV را هنگام ساخت در Android حل کنید. علاوه بر این ، برای کمک و پشتیبانی به جامعه GOCV توجه کنید ، زیرا ممکن است بینش خاصی داشته باشند زیرا این مسائل می تواند بر اساس تنظیمات محیط و به روزرسانی های کتابخانه متفاوت باشد.