כמה דברים שכדאי לדעת כשמתחילים פרוייקט חדש בReact Native

וודאי שמעתם על הפרימוורק היחסית חדש של פייסבוק: ReactJS שיודע להתקמפל גם לאפלקיציות נייטיב באנדרואיד וiOS. כנהוג במוצרים חדשים, הם לא ממש עובדים Out of the box. הנה מה שהייתי צריך לעשות כדי שזה יעבוד בקונפיגורציה של: מכונת פיתוח לינוקס (אובונטו), מכשיר אנדרואיד מחובר, וכרום שמשמש כדיבאגר (זה הכלי בברירת המחדל).

לאחר שהרצת את ההתקנה כך:

https://facebook.github.io/react-native/docs/getting-started.html

תתקלו במספר שגיאות. הדבר הראשון שצריך לעשות הוא ליצור קובץ בשם local.properties במיקום של הפרוייקט בmy_project/android. לקובץ הזה צריך להוסיף את השורה: sdk.dir=/path_to/Android/Sdk

לאחר שהרצתם בהצלחה sudo react-native run-android האפליקציה תופיע במכשיר. ניעור של המכשיר יקפיץ לכם תפריט מפתחים על המכשיר אך הפעלה של start remote debugging תכשל.

על מכונת הפיתוח יש לפתוח console חדש ולהריץ: sudo react-native start

כמו כן, בחלון נוסף יש להפעיל reverse proxy של הADB על מנת שהבקשות ינותבו למחשב ולכרום דיבאגר: adb reverse tcp:8081 tcp:8081

כעת פותחים דפדפן כרום. יש להכנס לכתובת: http://localhost:8081/debugger-ui

ולהכנס לתפריט המפתחים ולסמן את pause on exceptions:

עכשיו אפשר להתחיל לדבאג ולעבוד.http://localhost:8081/debugger-u

בהצלחה!

הצלת Amazon Cloud AWS EC2 Instance אם במקרה דפקת את ההרשאות

אז אם עשיתם משהו טפשי כמו sudo chmod -R 777 על תיקיית הhome או chown למשתמש הלא נכון או משהו דומה, יש סיכוי טוב שלא תוכלו להתחבר למכונה בssh. אל תטרחו לפנות לתמיכה של אמזון, הם יטענו שמבחינתם כל עוד המכונה למעלה ומגיבה זה לא בעיה שלהם (ובצדק מסויים).

יש פתרון פשוט:

  1. עוצרים את המכונה ומנתקים את הVolume
  2. מקימים Instance חדש
  3. מחברים את הvolume של המכונה הבעייתית (שאותו ניתקנו) למכונה החדשה כvolume נוסף
  4. נכנסים בssh למכונה החדשה ועושים mount לvolume
  5. עכשיו אפשר להריץ עליו פקודות כמו למשל chmod ולהחזיר את המצב לקדמותו
  6. כשסיימתם, מנתקים את הvolume, מחברים אותו למכונה המקורית ואפשר למחוק את המוכנה החדשה ששימשה לתיקון

הוראות מדוייקות אפשר למצוא כאן:

http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/TroubleshootingInstancesConnecting.html#TroubleshootingInstancesConnectingMindTerm