السلام عليكم ورحمة الله،
يبدو أن تطوير تطبيقات Android باستخدام Lazarus ليس بالأمر السهل خاصة عند البداية، رغم أن FPC يدعم -من أيامه الأولى- الترجمة (Compile) على جميع المنصات بما فيها ARM بمختلف النكهات (ARMv6, ARMv7...) والتي يعتمد عليها Android.
الأمر يرجع إلى عدة أسباب، لعل أهمها التوثيق المشوش نوعا ما في مجتمع Lazarus وهذا بسبب سياسة جوجل في تغيير أدوات التطوير وسرعة التحديثات في كل مرة (من أداة البناء Ant إلى Gradle، ثم اشتراط نسخة Gradle أحدث في كل إصدار...)
كيف يدعم FPC تطوير تطبيقات Android ؟
في الواقع هناك عدة طرق لتطوير تطبيقات Android باستخدام Lazarus وFPC كما يمكن بناء تطبيقات Native أيضا، غير أن بعضها ليست فعليا عملية وتحتاج إلى خبرة كافية، لعل أول من شرح ذلك بالتفصيل مطور ألماني Michael Van Canneyt في مدونته:
ماهي أسهل طريقة لإنتاج تطبيق Android بملف APK؟
أسهل طريقة (إلى حد الساعة) وجدتها لبناء تطبيقات Android هي باستخدام الجسر نحو Android SDK مرورا على Android NDK مستخدما JNI
لماذا كل هذا؟ لأن هناك حزم جاهزة تقوم بكل ذلك عوضا عنك.
كيف يتم ذلك؟
أحدث شرح مفصّل وجدته هنا:
غير أنه لازال يستخدم Ant للبناء ومن المعلوم لدى مطوري Android أن جوجل غيرت أداة البناء للحزم الحديثة إلى Gradle منذ التخلي عن Eclipse/Ant واستبداله ببيئة Android Studio. كما أن هناك تحديثات منذ كتابة الشرح.
لذلك سنستخدم Gradle (جربت الإصدار v3.3 بنجاح ويمكن استخدام نسخة أحدث منه) عوضا عن Ant (إذا كنت لا تزال تستخدم (أو تحتفظ بـ) بنسخة Eclipse/Ant فيمكنك استخدامها)
سنحتاج لذلك إلى:
مع حزمة التطوير والمكونات "Lazarus Android Module Wizard" للمطور البرازيلي jmpessoa يمكن تحمليها منها (سبقت الإشارة إليها):
بعد تثبيت مكونات هذه الحزمة الثلاث بهذا الترتيب (وقم بإعادة (Rebuild) بناء Lazarus بعد تثبيت كل مكوّن):
وسيتم بذلك إضافة:
بعد تثبيت حزمة التطوير الآن نأتي إلى الإعدادات من القائمة الرئيسية Tools -> Android Module Wizard
![[صورة: attachment.php?aid=3669]](http://delphi4arab.net/forum/attachment.php?aid=3669)
اخترت نسخة أحدث لـ NDK Version (في المثال 11c)
لن نستخدم Ant للبناء في هذا المثال لذلك يمكنك تجاهل المسار.
كل هذه المسارات يمكنك إيجادها/تغييرها من الملف:
إذا لم تواجه أية رسالة خطأ فهنيئا لك الآن، لقد تحصلت على بيئة تطوير متكاملة (RAD) لتطوير تطبيقات Android باستخدام Lazarus-FPC مع إمكانية استخدام مجموعة لا بأس بها من المكونات من خلال السحب والإفلات!
خطوات إنشاء مشروع:
أنشئ مشروع جديد واختر Project -> New Project -> Android GUI JNI Module
![[صورة: lamw_create_new_project.png]](http://wiki.freepascal.org/images/1/1d/lamw_create_new_project.png)
ثم اختر الإعدادات بحسب نسخ Android SDK التي قمت بتثبيها (أو المتوفرة لديك)
أما بخصوص Architecture/Instructions فاختر ARMv7a + Soft (هذه هي التي اشتغت معي بنجاح)
![[صورة: attachment.php?aid=3670]](http://delphi4arab.net/forum/attachment.php?aid=3670)
لاحظ أني غيرت في "Build Automated System" إلى الأداة Gradle عوضا عن Ant كما ذكرت
ضع على النموذج AndroidModule1 مكون jDialogYN من القائمة Android Bridges Extra (اعطه اسم confirmDialog) ثم أضف زر jButton واكتب عند النقر عليه:
أضف الإجراء الآتي للحدث OnClickYN للمكون confirmDialog :
التشغيل:
الآن قم بتوصيل هاتف أندرويد في وضع التنقيح Debug Mode (كما يمكنك استخدام آلة افتراضية Android VM)
تأكد أن الجهاز موصل في وضع تنقيح باستخدام adb
من المفروض أن يتم الاتصال بشكل تلقائي، إلا إذا كنت تستخدم أدوات/حلول خاصة حينها يتوجب عليك استخدام التطبيق adb كالآتي:
للاتصال وقطع الاتصال بالجهاز:
استبدل IP_ADDRESS بما يناسب جهازك، وPORT بـ 5555 كرقم افتراضي إن لم تغيره.
لتشغيل وتعطل خدمة التنقيح:
سيتكفل Gradle ببناء وتشغيل المشروع، في جهازي قمت بتعطيل الإضافة google() واستخدمت الإصدار 2.3.3 عوضا عن 3.0.0، بالتعديل ملف البناء Build.gradle كالآتي:
إذا جربت تطوير تطبيقات Android دون استخدام Android Studio ستبدو لك الطريقة سهلة، فقط انظر إلى رسالة الخطأ ثم ابحث عن الملف/السطر المسؤول عنه.
![[صورة: attachment.php?aid=3671]](http://delphi4arab.net/forum/attachment.php?aid=3671)
الجميل أن حجم التطبيق APK الناتج فارغا لا يتعدى 300Kb دون تقليص ProGuard، الناتج تجده في المسار:
يبدو أن مكون قواعد البيانات SQLite جاهز للعمل فهناك مكونات جاهزة وأمثلة مرفقة في المسار:
ملاحظات:
يبدو أن تطوير تطبيقات Android باستخدام Lazarus ليس بالأمر السهل خاصة عند البداية، رغم أن FPC يدعم -من أيامه الأولى- الترجمة (Compile) على جميع المنصات بما فيها ARM بمختلف النكهات (ARMv6, ARMv7...) والتي يعتمد عليها Android.
الأمر يرجع إلى عدة أسباب، لعل أهمها التوثيق المشوش نوعا ما في مجتمع Lazarus وهذا بسبب سياسة جوجل في تغيير أدوات التطوير وسرعة التحديثات في كل مرة (من أداة البناء Ant إلى Gradle، ثم اشتراط نسخة Gradle أحدث في كل إصدار...)
كيف يدعم FPC تطوير تطبيقات Android ؟
في الواقع هناك عدة طرق لتطوير تطبيقات Android باستخدام Lazarus وFPC كما يمكن بناء تطبيقات Native أيضا، غير أن بعضها ليست فعليا عملية وتحتاج إلى خبرة كافية، لعل أول من شرح ذلك بالتفصيل مطور ألماني Michael Van Canneyt في مدونته:
كود :
https://www.freepascal.org/~michael/articles/ماهي أسهل طريقة لإنتاج تطبيق Android بملف APK؟
أسهل طريقة (إلى حد الساعة) وجدتها لبناء تطبيقات Android هي باستخدام الجسر نحو Android SDK مرورا على Android NDK مستخدما JNI
لماذا كل هذا؟ لأن هناك حزم جاهزة تقوم بكل ذلك عوضا عنك.
كيف يتم ذلك؟
أحدث شرح مفصّل وجدته هنا:
كود :
http://wiki.freepascal.org/LAMWغير أنه لازال يستخدم Ant للبناء ومن المعلوم لدى مطوري Android أن جوجل غيرت أداة البناء للحزم الحديثة إلى Gradle منذ التخلي عن Eclipse/Ant واستبداله ببيئة Android Studio. كما أن هناك تحديثات منذ كتابة الشرح.
لذلك سنستخدم Gradle (جربت الإصدار v3.3 بنجاح ويمكن استخدام نسخة أحدث منه) عوضا عن Ant (إذا كنت لا تزال تستخدم (أو تحتفظ بـ) بنسخة Eclipse/Ant فيمكنك استخدامها)
سنحتاج لذلك إلى:
- نسخة جافا للتطوير JDK (في هذا المثال v1.8) مثبتة ومعرفة على الـ PATH
- Android SDK مثبت ومعرف في الـ PATH
- أيضا سنحتاج إلى تثبيت حزم التطوير من خلال Android SDK Manager (اختر ما يناسبك بحسب المنصات التي تستدفها 15، 16، 17...26...)
- أيضا حزمة Android Native Development Kit المعروفة باسم Android NDK
كود :
https://sourceforge.net/projects/laz4android/كود :
https://github.com/jmpessoa/lazandroidmodulewizardPHP كود :
tfpandroidbridge_pack.lpk [..../android_bridges]
lazandroidwizardpack.lpk [..../android_wizard]
amw_ide_tools.lpk [..../ide_tools]
وسيتم بذلك إضافة:
- قائمة مكونات Android Bridges وAndroid Bridges Extra
- عناصر في القائمة Tools (تحت اسم LAMW Android Module Wizard) وأخرى لإنتاج وتشغيل ملف التطبيق APK تحت القائمة Run (باسم LAMW Build Android APK and Run)
- وعناصر أخرى في خيارات المشروع Project -> Project Options -> Android Project Options ومن هذه الأخيرة يمكن التحكم في خيارات التطبيق (العنوان، الأيقونة، الصلاحيات Permissions، وMin/Target SDK، Theme...)
بعد تثبيت حزمة التطوير الآن نأتي إلى الإعدادات من القائمة الرئيسية Tools -> Android Module Wizard
كود :
Path to Java JDK: c:\Program Files\Java\jdk1.8.0_101
Path to Ant bin: c:\laz4android\ant\bin
Path to Gradle: c:\gradle
Path to Android SDK: c:\android-sdk\sdk
Path to Android NDK: c:\android-sdk\sdk\ndk-bundle
Path to [LAMW] Java Templates: c:\laz4android\lazandroidmodulewizard\javaاخترت نسخة أحدث لـ NDK Version (في المثال 11c)
لن نستخدم Ant للبناء في هذا المثال لذلك يمكنك تجاهل المسار.
كل هذه المسارات يمكنك إيجادها/تغييرها من الملف:
كود :
(Laz4android)\JNIAndroidProject.iniإذا لم تواجه أية رسالة خطأ فهنيئا لك الآن، لقد تحصلت على بيئة تطوير متكاملة (RAD) لتطوير تطبيقات Android باستخدام Lazarus-FPC مع إمكانية استخدام مجموعة لا بأس بها من المكونات من خلال السحب والإفلات!
خطوات إنشاء مشروع:
أنشئ مشروع جديد واختر Project -> New Project -> Android GUI JNI Module
![[صورة: lamw_create_new_project.png]](http://wiki.freepascal.org/images/1/1d/lamw_create_new_project.png)
ثم اختر الإعدادات بحسب نسخ Android SDK التي قمت بتثبيها (أو المتوفرة لديك)
أما بخصوص Architecture/Instructions فاختر ARMv7a + Soft (هذه هي التي اشتغت معي بنجاح)
لاحظ أني غيرت في "Build Automated System" إلى الأداة Gradle عوضا عن Ant كما ذكرت
ضع على النموذج AndroidModule1 مكون jDialogYN من القائمة Android Bridges Extra (اعطه اسم confirmDialog) ثم أضف زر jButton واكتب عند النقر عليه:
PHP كود :
procedure TAndroidModule1.jButton1Click(Sender: TObject);
begin
confirmDialog.Show('Laz4Android', 'Do you really want to quit?', 'نعم', 'لا');
end;
PHP كود :
procedure TAndroidModule1.confirmDialogClickYN(Sender: TObject; YN: TClickYN);
begin
if YN = TClickYN.ClickYes then
Close;
end;
التشغيل:
الآن قم بتوصيل هاتف أندرويد في وضع التنقيح Debug Mode (كما يمكنك استخدام آلة افتراضية Android VM)
تأكد أن الجهاز موصل في وضع تنقيح باستخدام adb
كود :
adb devicesمن المفروض أن يتم الاتصال بشكل تلقائي، إلا إذا كنت تستخدم أدوات/حلول خاصة حينها يتوجب عليك استخدام التطبيق adb كالآتي:
للاتصال وقطع الاتصال بالجهاز:
كود :
adb connect IP_ADDRESS:PORT
adb disconnectلتشغيل وتعطل خدمة التنقيح:
كود :
adb start-server
adb kill-serverسيتكفل Gradle ببناء وتشغيل المشروع، في جهازي قمت بتعطيل الإضافة google() واستخدمت الإصدار 2.3.3 عوضا عن 3.0.0، بالتعديل ملف البناء Build.gradle كالآتي:
كود :
buildscript {
repositories {
jcenter()
//android plugin version >= 3.0.0 [in classpath] need gradle version >= 4.1 and google() method
//google()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.3.3'
}
}إذا جربت تطوير تطبيقات Android دون استخدام Android Studio ستبدو لك الطريقة سهلة، فقط انظر إلى رسالة الخطأ ثم ابحث عن الملف/السطر المسؤول عنه.
الجميل أن حجم التطبيق APK الناتج فارغا لا يتعدى 300Kb دون تقليص ProGuard، الناتج تجده في المسار:
كود :
(Project)\build\outputs\apkيبدو أن مكون قواعد البيانات SQLite جاهز للعمل فهناك مكونات جاهزة وأمثلة مرفقة في المسار:
كود :
C:\laz4android\examplesملاحظات:
- هذه المكونات والإضافات لاتزال قيد التطوير وقد يحدث لها تغيير في أي وقت.
- يمكن استخدام الإضافات أو إعادة بناءها لاستخدام أحدث إصدار
- التجربة على Windows (وهناك توثيق Linux من المصدر)
- كل شيء مجاني ومفتوح المصدر.
اللهم احقن دماء المسلمين، لا تنسوهم بالدعاء...


![[-]](https://delphi4arab.net/forum/D4A2020/collapse.png)
