سؤال

أنا جديد جدًا على تطوير Android ، لكن لدي بعض الخبرة مع Java و Eclipse. أنا أبحث عن طرق لإنشاء مكتبات قابلة للاستخدام (عناصر التحكم ، المساعدين ، الأنشطة "القياسية" ، وما إلى ذلك) التي يمكنني استخدامها في مشاريعي الخاصة ، ولكن يمكن أيضًا توزيعها على مطورين آخرين دون الكشف عن رمز المصدر.

عادة ، سأقوم بتعبئة ملفات الفصل في ملف JAR ويمكن لأي مطور آخر إضافته إلى ClassPath واستخدام الفئات المعبأة.

كيف يمكنني فعل ذلك مع مشاريع Android؟ لقد قرأت عن مشاريع مكتبة Android ، ولكن كما تنص الوثائق على أنه لا يمكن تعبئتها في جرة ، ولكن سيتم تجميعها مع المشروع الذي يشير إلى مشروع المكتبة. هذا يعني أنه يتعين عليّ توزيع الكود المصدري.

لقد قرأت أيضا هذا المشنور, ، وهو ما يسأل عن نفس السؤال لكنه لم يقدم إجابة مرضية.

لذلك: هل هناك طريقة لتجميع وتعبئة مجموعة من الفئات والملفات الأخرى (بما في ذلك تخطيطات XML والموارد والأشياء) وتوزيع هذه الحزمة فقط دون أي رموز مصدر بحيث يمكن "الرجوع إليها" واستخدامها مثل ملف جرة بواسطة جرة أي مطور آخر؟

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

المحلول

لقد قرأت عن مشاريع مكتبة Android ، ولكن كما تنص الوثائق على أنه لا يمكن تعبئتها في جرة ، ولكن سيتم تجميعها مع المشروع الذي يشير إلى مشروع المكتبة. هذا يعني أنه يتعين عليّ توزيع الكود المصدري.

غير صحيح. يتطلب الأمر القليل من أعمال التغليف الإضافية ، ولكن يمكنك تجميع الكود الخاص بك إلى جرة وتوزيع الجرة في مشروع المكتبة libs/ الدليل.

لذلك: هل هناك طريقة لتجميع وتعبئة مجموعة من الفئات والملفات الأخرى (بما في ذلك تخطيطات XML والموارد والأشياء) وتوزيع هذه الحزمة فقط دون أي رموز مصدر بحيث يمكن "الرجوع إليها" واستخدامها مثل ملف جرة بواسطة جرة أي مطور آخر؟

استخدم مشروع مكتبة Android. أملك بعض الأشياء المكتوبة هنا هذا يصف المزيد من خيارات التغليف ، بالإضافة إلى مؤشرات لبعض "الطرود" التي تتبع الاتفاقيات الموصوفة فيها.

نصائح أخرى

شكرا على الحل الخاص بك. من ما أفهمه ، لا يزال بإمكانك الوصول إلى الموارد الخاصة إلى المكتبة من داخل رمز libary. لذا افترض أن مكتبتك لديها مورد سلسلة يسمى "my_lib_resource" تحت الدقة/القيم في المكتبة. يمكنك تجميع هذا في الجرة جنبا إلى جنب مع رمز المصدر. هل يمكنك الوصول إلى هذا المورد من رمز مصدر المكتبة باستخدام شيء مثل:

int id = res.getIdentifier("com.example.mylib:string/my_lib_resource",null,null) 

على افتراض اسم حزمة المكتبة الخاص بك هو com.example.mylib.

بالنسبة لي هذا لا يعمل.

شجاع عالم جديد لإدارة التبعية:

http://tools.android.com/recent/dealingWithDependenciesInandroidprojects

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