לכתוב תוכנית טבעית בAndroid ללא ג'אווה ולהישאר בחיים

הבהרה: אין לי ניסיון אישי עם פיתוח למערכות אנדרואיד נכון לכתיבת פוסט זה. גרסת האנדרואיד האחרונה שהשתמשתי בה היתה גרסה 1.x (אינני זוכר את תת הגרסה), ומאז הרבה FUD עבר בין חברות הסלולר השונות.

קראתי היום דיון שמתנהל כבר זמן מה לגבי פיתוח לסביבת אנדרואיד, וביקשו מאדם שיש לו ניסיון קצת בתחום להסביר במה מדובר, וההסבר שלו נמצא כאן.

זה ניסיון להציג סוג של תרגום של חלק ממה שהוא כתב וגם תוספות שלי לטקסט🙂

אז יש כיום (החל מ2.3 עד כמה שאני מבין) תמיכה באנדרואיד לפתח ב2 צורות כאשר מדובר בקוד חיצוני:

  1. שימוש ב JNI ולטעון ספריות משותפות (קבצי so).
  2. למממש את ה API של אנדרואיד בשפה שלכם, ולרוץ בצורה כמעט לגמרי נקייה מג'אווה.

היתרון של עבודה עם תוכנה עצמאית, היא שניתן לכתוב תוכנה אחת למספר רב של פלטפורמות ובעצם ליצור סוג של ספרייה גבוהה יותר, שעבור כל פלטפורמה היא ממומשת בצורה הטבעית שנדרשת מאיתנו, אבל התוכנה עצמה אינה צריכה להשתנות כמעט בכלל בגלל סוג הפלטפורמה (כמובן שזה תלוי במספר גורמים).

אז כיצד הפיתוח מתבצע ? ובכן נוריד קודם את הספריות הממשות את ה API של אנדרואיד אלינו:

לאחר מכן, נכתוב את התוכנה הגרפית שלנו:

program pascalnotes4android;

{$mode objfpc}{$H+}

uses
Classes, androidpipescomm, androidui, javalang;

{$R *.res}

var
  layout : TAbsoluteLayout;
  params : TAbsoluteLayout_LayoutParams;
  tv     : TTextView;
  et     : TTextView;
  btn    : TButton;
begin
  // Here add any initialization.
  // Any initialization code will be run inside Activity.onCreate,
  // so keep it as short as possible!
  // It should mostly contain GUI initialization
  // User interface

  // Prepares the UI of the program
  layout := TAbsoluteLayout.Create;

  tv := TTextView.Create;
  tv.setText('The first Pascal Android application =)');
  params := TAbsoluteLayout_LayoutParams.Create(320, 300, 0, 120);
  layout.addView(tv, params);
  params.Free;

  et := TEditText.Create;
  et.setText('edit me please');
  params := TAbsoluteLayout_LayoutParams.Create(320, 50, 0, 0);
  layout.addView(et, params);
  params.Free;

  btn := TButton.Create;
  btn.setText('Go!');
  {  btn.setOnClickListener(buttonClickCallback);}
  params := TAbsoluteLayout_LayoutParams.Create(320, 50, 0, 60);
  layout.addView(btn, params);
  params.Free;

  Activity.setContentView(layout);

  // Now tell Java that the initialization has finished
  myAndroidPipesComm := TAndroidPipesComm.Create;
  myAndroidPipesComm.InitializationFinished();
  // Here you can add any other initialization,
  // specially non-GUI code

  // Now we block our execution waiting for callbacks from Java
  myAndroidPipesComm.MessageLoop();
end.

ועכשיו כל מה שנשאר זה לבצע את הפעולות הבאות:

  1. לדאוג שיש לנו חבילה של arm-linux cross-compiler כאשר היא תומכת בARMv5 eabi עם softfloat (חלק מהטלפונים לא תומכים ב FPU).
  2. להתקין את ה SDK של אנדרואיד
  3. להתקין את Ant של ג'אווה.
  4. לפתוח את הפרוייקט PascalNotes4Android/pascalsrc/pascalnotes4android.lpi באמצעות לזרוס ולבדוק שמצב הבנייה של אנרואיד מתאים לנו ואז להדר את התוצר.
  5. להעתיק את pascalsrc/pascalnotes4android  ל libs/armeabi/libpascalnotes4android.so (אם הספרייה armebi לא קיימת יש ליצור אותה).
  6. ליצור את תוצר ה APK באמצעות ant במצב debug.
  7. לחבר את הטלפון שלך ולהבטיח כי הוא מחובר דרך ADB.
  8. להתקין את התוכנה בטלפון באמצעות כלי ההתקנה המועדף עלייך (כדוגמת ADB).

וזהו, תהנו מהתוצאה.

מחשבה אחת על “לכתוב תוכנית טבעית בAndroid ללא ג'אווה ולהישאר בחיים

  1. קובי

    בצורה דומה (ע"י תקשורת) הכינו אפשרות לכתוב לאנדרואיד בשפות תסריט
    http://code.google.com/p/android-scripting/
    אפשר לכתוב ברובי ופרל ולקרוא ל api של אנדרואיד כאילו זה ממומש בשפות עצמן.
    בפיתון הוספתי ספריות שכתובות בפיתון נקי למדריך ההתקנה והשתמשתי בהן בתסריטי פיתון ללא בעיה. הבעיה היחידה שלי היא שהסמליל של התסריט על מסך הטלפון הוא הנחשים של פיתון ולא תמונה שאני בחרתי.

כתיבת תגובה

הזינו את פרטיכם בטופס, או לחצו על אחד מהאייקונים כדי להשתמש בחשבון קיים:

הלוגו של WordPress.com

אתה מגיב באמצעות חשבון WordPress.com שלך. לצאת מהמערכת / לשנות )

תמונת Twitter

אתה מגיב באמצעות חשבון Twitter שלך. לצאת מהמערכת / לשנות )

תמונת Facebook

אתה מגיב באמצעות חשבון Facebook שלך. לצאת מהמערכת / לשנות )

תמונת גוגל פלוס

אתה מגיב באמצעות חשבון Google+ שלך. לצאת מהמערכת / לשנות )

מתחבר ל-%s