הפתרון שיהפוך את המק ומכשיר האנדרואיד שלכם לחברים הכי טובים

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

צילום מסך: אבישי בר, גיקטיים

צילום מסך: אבישי בר, גיקטיים

אחת הבעיות הגדולות ביותר בעבודה עם אנדרואיד ו-OSX, היא ההתממשקות בין השניים. בגירסאות האחרונות של אנדרואיד, נזנח הפתרון שמאפשר לנו לגשת לזיכרון הפנימי של המכשיר כ-USB Storage (כמו Disk On Key) והתגלתה לה שיטה חדשה – MTP – Media Transfer Protocol שנועדה בעיקרה להעברת מדיה. כולנו מכירים את אפליקציית Android File Transfer שהופכת את החיים למעט יותר קלים, אך לא ממש יציבה וחווה המון שגיאות בהעברת קבצים גדולים.

בנקודה הזו, יופיעו האייפוניסטים ויגידו: ״מה אתה מתלונן, לא טוב לך? תקנה אייפון״. האמת, שלא לגוגל ולא לאפל האינטרס לאפשר ממשק נוח בין הפלטפורמות. לכן, החלטנו לקחת את החוק לידיים ולהשתמש בפתרונות קוד פתוח שיאפשרו לנו לממשק את האנדרואיד שלנו ל-OSX ולסייע למערכת לזהות אותו כמערכת קבצים ״טבעית״ לכל דבר. ההתקנה אינה פעולה פשוטה, אך תוך מספר דקות ומעט פקודות ב-Terminal, תוכלו לעבוד ״כמו שצריך״ עם כל מכשירי האנדרואיד שלכם, להעתיק ולהדביק קבצים ולעשות פעולות נוספות בצורה טובה ונוחה.

דרישות מקדימות:

  • נכונות לעבודה עם Terminal
  • קצת ידע טכני
  • הכרת ה-Finder
  • 10 דקות פנויות

הגדרת המכשיר במצב USB Debugging

צילום מסך: אבישי בר, גיקטיים

צילום מסך: אבישי בר, גיקטיים

הצעד הראשון שצריך לעשות, קודם כל, הוא לקנפג את חיבור המכשיר למחשב בתצורה הנכונה. בכדי לעשות זאת, יש לנווט להגדרות המכשיר, אודות הטלפון, ללחוץ על Build Number מספר פעמים עד שתופיע ההודעה המשמחת: You are now a developer. תמיד רציתם להיות, לא?

כעת, ניגש ל-Developer Options ונפעיל את אופציית USB Debugging. בחיבור הראשון למחשב שלכם, יופיע דיאלוג בסמארטפון בו תרצו לסמן Yes על מנת לאשר למכשיר להתחבר למחשב באמצעות פרוטוקול ADB, עליו נרחיב בהמשך.

התקנת Homebrew

homebrew

למי שלא מכיר, Homebrew היא מנהלת חבילות ל-OSX (בדומה ל-apt-get של אובונטו). לאחר ההתקנה של האפליקציה, Homebrew תאפשר לכם להתקין חבילות שאין להן Installer מסודר ישירות לתיקיית /usr/local/Cellar ב-OSX. בכדי להתקין את Homebrew, עליכם להריץ את הפקודה הבאה ב-Terminal שלכם:

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

התקנת Android SDK

את ה-SDK של אנדרואיד נתקין על המק שלנו, בכדי שיהיו לנו את ה-Binaries העדכניים של ADB – קיצור של Android Debug Bridge – הדרך של המחשב שלנו לתקשר עם מכשיר האנדרואיד שברשותנו. מדובר על פרוטוקול העברת נתונים יציב יותר מ-MTP, שמהווה את הדרך הפופולארית לתקשר עם מכשירי האנדרואיד שלנו. עם זאת, ההבדל הוא שבמקרה של ADB, אנחנו צריכים לעשות פעולה אקטיבית על מנת שהמכשיר שלנו ידבר עם המחשב דרך הפרוטוקול.

ההתקנה של Android SDK מתבצעת על ידי הקלדת הפקודה הבאה ב-Terminal (לאחר שהתקנו את Homebrew, כמובן):

brew install android-sdk

לאחר ההתקנה חשוב מאוד לשמור את ה-path שבו הותקן ה-sdk ולהעתיק אותו למקום בטוח בצד. בדרך כלל, ה-path ייראה ככה:

/usr/local/Cellar/android-sdk/24.4.1_1

את ה-path נצטרך בהמשך.

התקנת Go

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

צילום מסך: האתר של Go

צילום מסך: האתר של Go

ההתקנה של Go מתבצעת על ידי הקלדת הפקודה הבאה ב-Terminal (לאחר שהתקנו את Homebrew, כמובן):

brew install go

לאחר שהתקנו את החבילה דרך Homebrew, נסדר את ה-PATH של Go על מנת שהפקודות להתקנת ADBFS יעבדו כמו שצריך. ההתקנה מתבצעת דרך הקלדת הפקודות הבאות ב-Terminal:

export GOPATH=$HOME/go
export PATH=$PATH:$GOPATH/bin

צילום מסך: אבישי בר, גיקטיים

צילום מסך: אבישי בר, גיקטיים

לאחר שהתקנו את Go, אפשר לעבור לשלב הבא.

התקנת OSXFuse

OSXFuse מאפשרת ל-OSX להרחיב את יכולות הטיפול שלה במערכות קבצים, מעבר ל-OSX Extended, FAT, exFAT ומערכות הקבצים שנתמכות בברירת מחדל על ידי המערכת, למערכות קבצים של תוכנות צד-שלישי, במקרה שלנו – ADB.

צילום מסך: האתר של OSXFuse

צילום מסך: האתר של OSXFuse

OSXFuse מותקנת דרך Homebrew. במהלך ההתקנה, תידרשו להקליד את סיסמאת מנהל המערכת שלכם, ובסופה תידרשו לבצע Restart למחשב. בבדיקה שלי לא הייתי צריך לעשות Restart למחשב, אך רצוי על מנת להימנע מבעיות.

ההתקנה של OSXFuse מתבצעת על ידי הקלדת הפקודה הבאה ב-Terminal (לאחר שהתקנו את Homebrew, כמובן):

brew install Caskroom/cask/osxfuse

התקנת ADBFS

ADBFS היא ספריית קוד פתוח ב-GitHub, אשר נשענת על FUSE וכל המטרה שלה הוא לחשוף את ADB כמערכת קבצים מובנת נייטיב בתוך מערכת ההפעלה שלנו, על מנת שנוכל לחבר את מכשיר האנדרואיד ולעיין בקבצים שבמכשיר מבלי שום אפליקציה חיצונית.

כדי להתקין את ADBFS, נקליד את הפקודות הבאות ב-Terminal:

export GO15VENDOREXPERIMENT=1

go get github.com/zach-klippenstein/adbfs

cd `go list -f '{{.Dir}}' github.com/zach-klippenstein/adbfs`

./install.sh

צילום מסך: אבישי בר, גיקטיים

צילום מסך: אבישי בר, גיקטיים

הגדרת ה-Mount Point במערכת ובדיקה ראשונית

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

cd `go list -f '{{.Dir}}' github.com/zach-klippenstein/adbfs`

mkdir ~/mnt
adbfs-automount

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

Screen Shot 2016-04-18 at 11.51.01 AM

צילום מסך: אבישי בר, גיקטיים

במידה וקיבלנו את החלון הזה, הצלחנו! כעת, כאשר ננווט לתיקיית הבית שלנו במערכת – /Users/me, נראה את מכשיר האנדרואיד שלנו בתור Volume בתוך תיקיית mnt, כמו בצילום המסך הבא:

צילום מסך: אבישי בר, גיקטיים

צילום מסך: אבישי בר, גיקטיים

כל הכבוד! כעת, במידה ותלחצו פעמיים על ה-Volume, תוכלו לראות את כל התיקיות במכשיר האנדרואיד שלכם. כעת, כל מה שנותר לעשות הוא להגדיר Service שימתין למכשירים ויעשה להם Mount למערכת באופן אוטומטי, כך שלא תצטרכו להריץ את הפקודה כל פעם בעצמכם.

הגדרת ה-Service שממתין אוטומטית למכשירים מחוברים

קודם כל, נעתיק את ה-Binary של adbfs מתיקיית המקור שלו לתיקיית bin אצלנו במערכת:

cd ~/go/bin

cp adbfs /usr/local/bin

  • ניגשים ל-Finder, בוחרים בתפריט Go ולאחר מכן Go to Folder, או cmd+Shift+G
  • בתיבת הטקסט כותבים ~/Library/LaunchAgents/
  • יוצרים קובץ חדש בשם com.adbfs-automount.plist, עורכים אותו ומדביקים את הטקסט הבא, כאשר את כל ההופעות של המילה me מחליפים בשם המשתמש שלכם במערכת:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.adbfs-automount</string>
<key>ProgramArguments</key>
<array>
<string>/Users/me/go/bin/adbfs-automount</string>
<string>--adb=/usr/local/Cellar/android-sdk/24.4.1_1/platform-tools/adb</string>
<string>--adbfs=/Users/me/go/bin/adbfs</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<true/>
<key>StandardOutPath</key>
<string>/Users/me/adbfs.log</string>
<key>StandardErrorPath</key>
<string>/Users/me/adbfs.log</string>
</dict>
</plist>

לאחר שביצענו את הפעולות הללו, נפעיל ונגדיר את ה-Service ב-OSX. נעשה זאת על ידי הקלדת הפקודות הבאות:

launchctl load ~/Library/LaunchAgents/com.adbfs-automount.plist

launchctl start com.adbfs-automounter

נפעיל את המחשב שלנו מחדש, נחבר את מכשיר האנדרואיד שלנו שוב למחשב ונבדוק בקובץ /Users/me/adbfs.log שהכל בסדר:

Screen Shot 2016-04-18 at 12.59.13 PM

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

הגדרת ה-Finder בצורה נוחה לגישה לקבצים

נלך אל Finder, ואז אל Preferences. במסך הראשי, נוודא ש-Connected Servers מסומן ב-V, על מנת להראות את המחיצה על גבי ה-Desktop:

צילום מסך: אבישי בר, גיקטיים

צילום מסך: אבישי בר, גיקטיים

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

צילום מסך: אבישי בר, גיקטיים

צילום מסך: אבישי בר, גיקטיים

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

קרדיטים:

אבישי בר

מנהל מוצר. מפתח Web ו-React Native, חולה גאדג'טים, הולך נגד הזרם ואוהב את כל מה שקשור לגוגל, לאנדרואיד ולקוד פתוח. עיסוקו העיקרי הוא לפרק לחלקים כל צעצוע חדש שמגיע למשרד ואז לכתוב עליו מדריך.

הגב

5 Comments on "הפתרון שיהפוך את המק ומכשיר האנדרואיד שלכם לחברים הכי טובים"

avatar
Photo and Image Files
 
 
 
Audio and Video Files
 
 
 
Other File Types
 
 
 
Sort by:   newest | oldest | most voted
אחד העם
Guest

אני נתקע בחלק של ADBFS גם הפקודה בתמונה והפקודה שאתם כתבתם שונות
יש פתרון (טעות שלי או שלכם?)
תודה מראש

Avishay Bassa
Guest

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

אחד העם
Guest

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

Gil
Guest

[14:27] ~/go/src/github.com/zach-klippenstein/adbfs [master=]> adbfs-automount

INFO[2016-04-20T14:28:37.020807913+10:00] adbfs-automount v1.0.0

INFO[2016-04-20T14:28:37.105710801+10:00] using mount root /Users/gillevy/mnt

INFO[2016-04-20T14:28:37.106117294+10:00] mounting as read-only filesystem

INFO[2016-04-20T14:28:37.106451450+10:00] automounter ready.

INFO[2016-04-20T14:28:37.111731954+10:00] mounting 5e3c4eb3 on /Users/gillevy/mnt/A0001-5e3c4eb3

INFO[2016-04-20T14:28:37.115070061+10:00] device 5e3c4eb3 mounted with PID 8940

INFO[2016-04-20T14:28:37.134240397+10:00] adbfs v1.0.0

INFO[2016-04-20T14:28:37.134866536+10:00] stat cache ttl: 300ms

INFO[2016-04-20T14:28:37.136552699+10:00] connection pool size: 2

INFO[2016-04-20T14:28:37.136592136+10:00] device root: /sdcard

INFO[2016-04-20T14:28:37.291237589+10:00] server ready.

INFO[2016-04-20T14:28:37.291278990+10:00] mounted 5e3c4eb3 on /Users/gillevy/mnt/A0001-5e3c4eb3

INFO[2016-04-20T14:28:37.451552271+10:00] Unimplemented opcode INTERRUPT

INFO[2016-04-20T14:28:37.451648917+10:00] Unimplemented opcode INTERRUPT

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

ben
Guest

הי אבישי,
אני נתקע בשלב ה-Mount Point
אני מקבל error:
ERRO[2016-04-29T10:08:07.169119577+03:00] device watcher quit unexpectedly: ServerNotAvailable: error dialing localhost:5037
מצרף כאן צילום מסך מה Terminal

wpDiscuz

תגיות לכתבה: