רסיסים

Temple Ran?!

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

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

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

כמובן שהוא זכה לדירוג מאוד נמוך, אבל עדיין מדהים שאנשים מורידים את זה, וגוגל נותנת למשחק כזה
להגיע לראש הטבלה.

מה שמעלה את השאלה, האם גוגל צריכה להתערב ולהוריד אפליקציות כאלו?

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

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

Temple Ran – מעל 500 אלף הורדות, שבועיים במרקט, יום עבודה לפתח

Noogra Nuts – פחות מ 500 אלף הורדות, חצי שנה במרקט, חצי שנת פיתוח

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

אשמח לשמוע את דעתכם, האם גוגל צריכה להסיר אפליקציות כאלו מהמרקט?

אחד הדברים שאני עושה לפני שאני מוריד אפליקציה זה להתסכל בדירוג שלה ולקרוא את התגובות האחרונות.
אני אעדיף להוריד אפליקציה שמדורגת בין 3.5-5 כוכבים ומספר הורדות גדול מאשר אפליקציה עם כוכב או שניים ומספר הורדות נמוך.
אני חושב שלפעמים אני מסתכל על הדירוג והתגובות ואפילו לא טורח לקרוא את התיאור של האפליקציה, אני מאמין שאני לא היחידי :)

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

ישנן מספר נקודות מעניינות לגבי דירוגים ותגובות, שהייתי רוצה לשתף:

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

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

הייתי שמח לשמוע בתגובות, האם אתם מדרגים אפליקציות?
האם אתם נותנים פידבק משמעותי למפתח כאשר משהו לא עובד? האם אתם שולחים מייל למפתח כשיש בעיות?

גרסה חדשה ל Andengine!

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

נוגרה נאטס למי שלא יודע, פותח באמצעות AndEngine, והוא לא המשחק היחידי.

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

מסתבר שבכל הזמן הזה, הוא עבד על גירסת OpenGL ES2.0 של המנוע!
מזה זה אומר בעצם?
שמנוע יעבוד על מכשירים שתומכים ב OpenGL ES2, כלומר כ 90% מהמכשירים כיום,
אבל חוץ מזה, הוא יהיה יותר מהיר, יש תמיכה ב Shaders, כלומר יהיה ניתן ליצר אפקטים מגניבים, ועוד שלל שיפורים.
את הרשימה המלאה אפשר למצוא כאן:
Andengine

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

ניסיתי את כל הדברים שהציעו ברשת:   

  • WeakReference ל Activitiy
  • קריאות recycle לתמונות
  • NULL למשתנים שלא בשימוש
  • מחלקות פנימיות שיניתי ל Static

 

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

באמצעות פלאגין ל Eclipse בשם Memory Analyzer,
הצלחתי למצוא את האשם!  

הודעות TOAST!  

מסתבר ששורת הקוד התמימה הזאת:  

Toast.makeText(this, message, Toast.

   

  

LENGTH_LONG).show();   

שמרה Refrence ל Activity ולא שחררה.  

התיקון כמובן היה:  

Toast.makeText(getApplicationContext(), message, Toast.  

LENGTH_LONG 

).show(); 

  

  

כלומר להפנות ל Context של האפליקציה שתמיד קיים ככה שגם ככה אי אפשר לגרום לו לדלוף.  

מוזר,  אבל זה תיקן את הבעיה, השאלה היא האם זה באג אצל גוגל? או שאני לא פעלתי נכון?  

  

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

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

לפי אתר התמיכה אנשים מדווחים על הבעיה מה 1 באפריל, כלומר עברו 3 ימים ועדיין זה לא נפתר.

לכל המפתחים, האם גם אתם סובלים מזה? או שהכל עובד אצלכם כרגיל?

לכל מי שפספס את ההרצאה, וגם למי שהגיע, הנה הלינק למצגת שהעברתי על AndEngine:

http://www.multiupload.com/K5K7B78DU5

כמו כן תודה רבה לרונן הלוי על ההצראה שהוא העביר, הנה הלינק למצגת שלו:

http://ronenhalevy-android.blogspot.com/2011/03/c2dm-presentation.html

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

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

והרובוט הגדול והמרשים שהם הביאו :)

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

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

נתקלתי בפוסט מעניין תוך כדי שיטוט ב XDA,
מסתבר שיש "מפתחים" או יותר נכון גנבים שלוקחים APK של המפתחים המקוריים ומוכרים אותו במרקט.

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

לינק לפוסט ב XDA:

http://forum.xda-developers.com/showthread.php?t=900923

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

שם המפתח שעושה זאת הוא DavinciDevelopers ויתכן שישנם עוד כאלו.

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

נותר רק לנקוות שלנו זה לא יקרה…

Rag-doll Physics

הנה הצצה קטנה לפרויקט לדוגמה, שאני הולך להציג במפגש המפתחים ביום שלישי:
Box2D rag-doll example using AndEngine

למי שלא מכיר, זה מימוש של Rag-Doll ("בובת סחבה"), שמורכבת מגופים שונים ומפרקים ביניהם.
בהמשך יפורסם הקוד, וכמובן, מפתחים שמעוניינים לראות הסבר על הקוד, ושימוש במנוע AndEngine מוזמנים לבוא למפגש.

האירוע של המפגש בפייסבוק:

http://www.facebook.com/event.php?eid=206762096007617

LOG – החבר של כל מתכנת :)

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

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

אז ברגע שאני מקבל מייל ממשתמש שמתלונן על קריסות אני מבקש שישלח לי את הלוגים באמצעות התוכנה הזאת,
מבט קצר ב Stack trace וישר מגלים את הבעיה.

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

כמובן שלא כדאי לשים שורת לוג בלולאה שרצה אלף פעמים, משיקולי ביצועים, וגם משיקולי נוחות קריאת ה log,
אבל כן כדאי לשים אותם במקומות מפתח, כמו למשל להוציא החוצה גודל של תמונה שנקראה, או תוצאה של בדיקה האם הקובץ קיים, וכו'.

באנדרואיד הלוגים מתחלקים לארבעה סוגים: d, i, w, e

כלומר, Debug, Information, Warning, Error.

בדרך כלל אלו שמעניינים ביותר הם ה Error.

בשביל להוציא את לוגים, משתמשים במחלקה android.util.Log.

לכל פונקציה, נותנים גם Tag, זאת בעצם תוית שמאפשרת לזהות מה הוציא את הלוג.

כשמריצים את האפליקציה דרך האקליפס, אפשר לראות את הלוגים שלנו דרך ה DDMS, ב LogCat:

שימו לב שאפשר לפלטר בנוחות לפי Tag, ואז נראה רק את הלוגים שאנחנו מוציאים.

וגם אפשר לפלטר לפי סוג השגיאה, כאשר V = Verbose כלומר, מציג את כל הסוגים.

למפתחי רומים, אפשר גם להשתמש ב DDMS, בשביל לראות למשל, למה עלייה של ROM נכשלה.
לי זה עזר מאוד כשניסיתי לשנות את קובץ ה FrameWork.jar והמכשיר לא עלה.

Happy Debugging :)

רום מגויר למכשיר ZTE BLADE

 עזרתי לחבר מהעבודה לסדר עברית למכשיר שלו,

מסוג ZTE BLADE,

אז החלטתי לשתף ולהכין מזה רום, מבוסס על R11 של מודקו,

להורדה בלינק הבא: 

http://www.multiupload.com/CBERNINQ6W

פוסטים חדשים יותר »