המלצה | זית לאנדרואיד - יתכן!
-
@אריה-6
[מתורגם על ידי AI]
אוקיי, אני מתחיל מההתחלה. יש שני קשיים גדולים בהעברת זית לאנדרואיד. הראשון הוא מנוע החיפוש לוסין. לוסין הוא מנוע החיפוש הטוב בעולם שזמין לקהל הרחב. הבעיה היא שאף על פי שלוסין היא ספרייה של ג'אווה, זו לא ג'אווה שתואמת לאנדרואיד. כדי להבין את הבעיה: כשגוגל רצתה להציע למפתחים שפה לפיתוח אפליקציות אנדרואיד, היא רצתה שפה שכולם כבר מכירים, אבל לא רצתה לשלם רישיון. לכן היא מימשה מחדש לגמרי מכונה וירטואלית של ג'אווה, כלומר, בגדול, היא העתיקה רק את התחביר של השפה בלי להעתיק את המנוע שמריץ אותה (מה שעלה לה עשר שנים של משפטים מול אורקל). זה מה שנקרא ART. בקיצור, הם נעצרו בג'אווה 11, ולכן אנדרואיד מסוגל להריץ רק תחביר של ג'אווה 11. אחר כך הם פיתחו את ה"דה-שוגרינג" כדי להמיר ג'אווה 17 לג'אווה 11, כך ש-ART יוכל להריץ אותה. בינתיים הגיעה קוטלין, ובנוסף לכך שהיא מודרנית יותר, לא הייתה לה שום בעיית רישוי, ולכן הם החליטו להפסיק כמעט לגמרי את התמיכה בג'אווה באנדרואיד ולהפוך ל"קוטלין תחילה".אבל בינתיים, עולם ג'אווה שנמצא בשימוש בשרתים המשיך להתפתח, ולוסין כמובן מיועד לשרתים, ולוסין 10 (הגרסה הנוכחית) דורש ג'אווה 21. מה שהחבר שלנו עשה זה לכתוב מחדש חלקים מסוימים של לוסין ואז לקמפל אותם מחדש כדי שיעבדו באנדרואיד. גם אני העליתי את האפשרות הזאת בגיטהאב, אבל הבעיה בדרך הזאת היא שהיא תנעל אותנו לתמיד על לוסין 10, כי לוסין 11 ידרוש ג'אווה 25 ושם כבר יהיה בלתי אפשרי לתקן אותו כדי שיעבוד באנדרואיד. ג'אווה עוברת מהפכה בשפה: חוטים וירטואליים, וולהלה שמגיעה בג'אווה 29, ועוד ועוד. ספריות שידרשו גרסה עדכנית של ג'אווה יהיו בלתי אפשריות להרצה באנדרואיד. ומי שמכיר אותי יודע שאני שונא לעשות מחדש עבודה שמישהו כבר עשה (בגלל זה רציתי להשתמש בעולם ג'אווה בשביל זית, כי היו לי כל הספריות בהישג יד), ובעיקר אני שונא לעבוד לחינם. לעבוד כדי להתאים את לוסין 10 כשאני יודע שזה יישבר לי בלוסין 11, זה בלתי נתפס. דבר נוסף: לי ממש לא אכפת להעביר את זית לאנדרואיד. לדעתי טאבלטים של אנדרואיד הם סמארטפונים גדולים. מה שמעניין אותי זה להעביר אותו לאייפד, ולאייפד אין שום תמיכה בג'אווה, ולכן אין שום תיקון אפשרי, והיה צריך לכתוב מחדש את לוסין, וזה חסר כל היגיון. גם אם יש מי שיגידו שהבינה המלאכותית תעשה את זה, כולם יודעים מה דעתי על זה, אין צורך לחזור על זה.
בעקבות האפליקציה של החבר שלנו, שהתנהגה מצוין על טאבלט אנדרואיד, התחלתי לחפש פתרון לאייפד, ובאמת אחרי קצת חיפושים מצאתי במאגר הגיטהאב הרשמי של אורקל (החברה שמחזיקה היום בג'אווה) את אופן-ג'י-די-קיי מובייל. בקיצור, מדובר במכונה וירטואלית אמיתית של ג'אווה שמאפשרת להריץ קוד ג'אווה אמיתי באנדרואיד ובאייOS. זה פרויקט שאף אחד לא מכיר, אבל הוא מתוחזק. ה-JDK אפילו לא מקומפל מראש. עשיתי לו פורק רק כדי להגדיר מערכת אינטגרציה שמקמפלת אותו לאייOS ולאנדרואיד: https://github.com/NucleusFramework/openjdk-mobile. הבעיה היא שהמכונה הווירטואלית עובדת על ידי קומפילציה של הקוד תוך כדי ריצה, מה שנקרא JIT (וזה מה שהופך את ג'אווה ליעילה כל כך), אבל פרקטיקה זו נחשבת מסוכנת בעיני אפל ולכן אסורה. אבל אורקל הגדירה את המכונה הווירטואלית לאייOS כך שרק מפרשת את הקוד בלי לקמפל אותו. אז כן, מאבדים הרבה ביצועים, אבל ההימור שלי היה שבחיפוש פשוט, ועם מכשירים חזקים כמו של אפל, לא נרגיש בזה, ואכן מגיעים ל-1.5 שניות לחיפוש, וזה סביר אחרי אופטימיזציה. ואז החלטתי לבצע את המשימה באופן אוטומטי, ואם כבר עושים את זה באייOS, עשיתי את זה גם באנדרואיד במקביל, כי למה לא. וזה הפרויקט ששיתפתי: מודול שמאפשר לשלב מכונה וירטואלית אמיתית של ג'אווה באייOS ובאנדרואיד ולהריץ קוד ג'אווה באופן כמעט שקוף. ואחרי כמה מבחני ביצועים הבנתי שהביצועים של מכונה וירטואלית אמיתית באנדרואיד טובים עד פי 8 מהמכונה הווירטואלית של אנדרואיד (ART).
הקושי השני הוא ממשק המשתמש של זית, שנבנה עם המסגרת ג'ואל של ג'טברינס, שתוכננה ליישומי שולחן עבודה מורכבים, ואותה אין שום סיכוי להעביר לאנדרואיד. מה שהחבר שלנו עשה זה לכתוב מחדש לגמרי ממשק שדומה לזה של גוגל, בעזרת ממשק מטריאל של גוגל שגמיש מאוד, ולכן הוא הצליח להעביר בקלות רבה את הצבעים וכו'. גם כאן, זו לא בהכרח הגישה שהייתי בוחר, ולא הייתי משתמש במטריאל באייOS, כי כמו שאמרתי, זית תוכנן קודם כול למק ואחר כך לווינדוס, כי למה לא. ואם אוציא גרסת אייפד, היא תעבוד גם באנדרואיד, כי למה לא, אבל לא תתוכנן קודם כול לאנדרואיד. אחרי זה, אני חושב שאת חלק מהרכיבים באנדרואיד אעשה במטריאל, כי זה לא לוקח הרבה זמן. בקיצור, הכול יהיה תלוי מאוד בזמן שיהיה לי.
-
@פלמנמוני כדי לפשט קצת את העניין, גם זית אינה רצה על JVM מסורתית, אלא מהודרת לקוד מכונה באמצעות GraalVM. ההבדל הוא ש-GraalVM הוא פרויקט מקורי של אורקל, וכשעיינתי בקוד המקור שמתי לב שיש בו גם יעד ל-iOS ול-Android, אלא שמערך הבנייה האוטומטי פשוט לא כלל אותו. לכן עשיתי אותו דבר: יצרתי עותק נפרד של המאגר והתאמתי את מערך הבנייה האוטומטי כך שיפרסם את סביבת הריצה. כך הגעתי לביצועים מהירים פי 9 ב-iOS ולגודל חבילה קטן פי 2.5! בנוסף, זה צורך פחות זיכרון עבודה מ-JVM אמיתית. כל זה כדי לומר שבסופו של דבר, זית על iOS אפשרית לגמרי, עם פתרון יציב לטווח ארוך, ובנוסף מהיר מאוד.
Here are all the benchmarks I ran, with Zayit's real index (7M documents). App benchmarks are medians of 3 runs on Android and one run on iOS, with OS caches dropped before each run on Android.Android (arm64 emulator, Android 15)
Full app: hybrid search (lexical + semantic)
ART (patched Lucene) HotSpot (NJA) GraalVM (NJA) First search, cold (includes runtime start) 1.41 s 2.11 s 1.51 s First book lookup, cold 97 ms 108 ms – 5 warm rounds, total 5.82 s 5.27 s 6.01 s Search, first page 83 ms 75 ms 85 ms Search, next page 9.5 ms 9.6 ms 9.5 ms Facets 8.0 ms 8.1 ms 7.8 ms Highlights (by meaning) 20 ms 21 ms 23 ms Book suggestions 3.3 ms 4.5 ms 3.0 ms Peak memory (PSS) 426 MB 559 MB 481 MB Full app: lexical search
ART (patched Lucene) HotSpot (NJA) GraalVM (NJA) First search, cold 0.92 s 1.55 s 0.91 s First book lookup, cold 86 ms 104 ms – 5 warm rounds, total 7.29 s 5.75 s 7.78 s Search, first page 75 ms 59 ms 79 ms Search, next page 75 ms 58 ms 76 ms Facets 8.4 ms 7.9 ms 9.1 ms Highlights 0.4 ms 0.4 ms 0.4 ms Book suggestions 4.5 ms 3.6 ms 3.4 ms Peak memory (PSS) 337 MB 332 MB 329 MB I didn't extract the first-lookup time from the GraalVM runs.
App size (per arm64 device)
ART (patched Lucene) HotSpot (NJA) GraalVM (NJA) App installed 42.7 MB ~98 MB 58.1 MB Added by Lucene ~3 MB (dex) ~58 MB (JVM + Java runtime) ~19 MB ( libnja.so)Download (compressed, estimate) ~1–2 MB not measured ~7 MB Lucene alone (no app around it), GraalVM
GraalVM, warm Phrase search 1–3 ms Facets 1–4 ms Vector search (KNN), warm disk cache 3–10 ms Vector search (KNN), cold disk cache 130–500 ms Memory (RSS) 63 MB I only ran the Lucene-alone test with GraalVM on Android.
iOS (simulator)
HotSpot isn't possible on iOS (Apple forbids JIT compilers), so the JVM option is Zero, its interpreter. ART is Android-only.
Full app: hybrid search
Zero (NJA, JVM) GraalVM (NJA) First search, cold (includes runtime start) 4.63 s 0.82 s First book lookup, cold 240 ms 206 ms Search, first page 1.18 s 144 ms Search, next page 50 ms 41 ms Facets 148 ms 18 ms Highlights (by meaning) 15 ms 14 ms Book suggestions 67 ms 48 ms Memory after warm-up (peak) 386 MB (422) 390 MB (430) Full app: lexical search
Zero (NJA, JVM) GraalVM (NJA) First search, cold 4.15 s 0.52 s First book lookup, cold 243 ms 181 ms Search, first page 1.11 s 142 ms Search, next page 1.11 s 127 ms Facets 146 ms 18 ms Highlights 3.5 ms 3.5 ms Book suggestions 68 ms 48 ms Memory after warm-up (peak) 148 MB (163) 124 MB (155) App size
Zero (NJA, JVM) GraalVM (NJA) Added by Lucene ~50 MB (VM + Java runtime bundled) ~20 MB (one object linked into the app) Download (compressed, estimate) not measured ~7 MB Lucene alone (no app around it), warm
macOS HotSpot (reference) iOS GraalVM Phrase search 1–2 ms 1–2 ms Facets 1–3 ms 1–4 ms Vector search (KNN), warm disk cache ~2 ms ~1.5 ms Vector search (KNN), cold disk cache 130–250 ms 130–250 ms Memory – 61 MB Correctness
Check Result NJA test suite, iOS GraalVM 2008 / 2008 NJA test suite, Android GraalVM (x86_64 emulator, CI) passed NJA test suite, Android ART and Android HotSpot 2008 / 2008 each Same search results, iOS GraalVM vs desktop JVM byte-identical, hybrid search included Summary:
- On Android, GraalVM is as fast to start and nearly as light as ART, with the real Lucene. HotSpot is the fastest once warm, but heavier, bigger, and slower to start.
- On iOS, GraalVM is about 8× faster than Zero, starts about 5–8× faster, and adds less than half the size.
-
@פלמנמוני כדי לפשט קצת את העניין, גם זית אינה רצה על JVM מסורתית, אלא מהודרת לקוד מכונה באמצעות GraalVM. ההבדל הוא ש-GraalVM הוא פרויקט מקורי של אורקל, וכשעיינתי בקוד המקור שמתי לב שיש בו גם יעד ל-iOS ול-Android, אלא שמערך הבנייה האוטומטי פשוט לא כלל אותו. לכן עשיתי אותו דבר: יצרתי עותק נפרד של המאגר והתאמתי את מערך הבנייה האוטומטי כך שיפרסם את סביבת הריצה. כך הגעתי לביצועים מהירים פי 9 ב-iOS ולגודל חבילה קטן פי 2.5! בנוסף, זה צורך פחות זיכרון עבודה מ-JVM אמיתית. כל זה כדי לומר שבסופו של דבר, זית על iOS אפשרית לגמרי, עם פתרון יציב לטווח ארוך, ובנוסף מהיר מאוד.
Here are all the benchmarks I ran, with Zayit's real index (7M documents). App benchmarks are medians of 3 runs on Android and one run on iOS, with OS caches dropped before each run on Android.Android (arm64 emulator, Android 15)
Full app: hybrid search (lexical + semantic)
ART (patched Lucene) HotSpot (NJA) GraalVM (NJA) First search, cold (includes runtime start) 1.41 s 2.11 s 1.51 s First book lookup, cold 97 ms 108 ms – 5 warm rounds, total 5.82 s 5.27 s 6.01 s Search, first page 83 ms 75 ms 85 ms Search, next page 9.5 ms 9.6 ms 9.5 ms Facets 8.0 ms 8.1 ms 7.8 ms Highlights (by meaning) 20 ms 21 ms 23 ms Book suggestions 3.3 ms 4.5 ms 3.0 ms Peak memory (PSS) 426 MB 559 MB 481 MB Full app: lexical search
ART (patched Lucene) HotSpot (NJA) GraalVM (NJA) First search, cold 0.92 s 1.55 s 0.91 s First book lookup, cold 86 ms 104 ms – 5 warm rounds, total 7.29 s 5.75 s 7.78 s Search, first page 75 ms 59 ms 79 ms Search, next page 75 ms 58 ms 76 ms Facets 8.4 ms 7.9 ms 9.1 ms Highlights 0.4 ms 0.4 ms 0.4 ms Book suggestions 4.5 ms 3.6 ms 3.4 ms Peak memory (PSS) 337 MB 332 MB 329 MB I didn't extract the first-lookup time from the GraalVM runs.
App size (per arm64 device)
ART (patched Lucene) HotSpot (NJA) GraalVM (NJA) App installed 42.7 MB ~98 MB 58.1 MB Added by Lucene ~3 MB (dex) ~58 MB (JVM + Java runtime) ~19 MB ( libnja.so)Download (compressed, estimate) ~1–2 MB not measured ~7 MB Lucene alone (no app around it), GraalVM
GraalVM, warm Phrase search 1–3 ms Facets 1–4 ms Vector search (KNN), warm disk cache 3–10 ms Vector search (KNN), cold disk cache 130–500 ms Memory (RSS) 63 MB I only ran the Lucene-alone test with GraalVM on Android.
iOS (simulator)
HotSpot isn't possible on iOS (Apple forbids JIT compilers), so the JVM option is Zero, its interpreter. ART is Android-only.
Full app: hybrid search
Zero (NJA, JVM) GraalVM (NJA) First search, cold (includes runtime start) 4.63 s 0.82 s First book lookup, cold 240 ms 206 ms Search, first page 1.18 s 144 ms Search, next page 50 ms 41 ms Facets 148 ms 18 ms Highlights (by meaning) 15 ms 14 ms Book suggestions 67 ms 48 ms Memory after warm-up (peak) 386 MB (422) 390 MB (430) Full app: lexical search
Zero (NJA, JVM) GraalVM (NJA) First search, cold 4.15 s 0.52 s First book lookup, cold 243 ms 181 ms Search, first page 1.11 s 142 ms Search, next page 1.11 s 127 ms Facets 146 ms 18 ms Highlights 3.5 ms 3.5 ms Book suggestions 68 ms 48 ms Memory after warm-up (peak) 148 MB (163) 124 MB (155) App size
Zero (NJA, JVM) GraalVM (NJA) Added by Lucene ~50 MB (VM + Java runtime bundled) ~20 MB (one object linked into the app) Download (compressed, estimate) not measured ~7 MB Lucene alone (no app around it), warm
macOS HotSpot (reference) iOS GraalVM Phrase search 1–2 ms 1–2 ms Facets 1–3 ms 1–4 ms Vector search (KNN), warm disk cache ~2 ms ~1.5 ms Vector search (KNN), cold disk cache 130–250 ms 130–250 ms Memory – 61 MB Correctness
Check Result NJA test suite, iOS GraalVM 2008 / 2008 NJA test suite, Android GraalVM (x86_64 emulator, CI) passed NJA test suite, Android ART and Android HotSpot 2008 / 2008 each Same search results, iOS GraalVM vs desktop JVM byte-identical, hybrid search included Summary:
- On Android, GraalVM is as fast to start and nearly as light as ART, with the real Lucene. HotSpot is the fastest once warm, but heavier, bigger, and slower to start.
- On iOS, GraalVM is about 8× faster than Zero, starts about 5–8× faster, and adds less than half the size.
עכשיו הכל מובן
הדבר היחיד ש(נדמה לי ש)אני הצלחתי להבין זה שלא-מתייאש כמעט התייאש מזית לאנדרואיד/iOS ועכשיו הוא כבר לא-מתייאש
שאפו, באמת! -
עדכון 0.3.0
*הפירוט בספויילר - AI.עדכון פרדס מתוך האפליקציה.
מעכשיו פרדס מתעדכן מתוכו, כמו זית למחשב. בכל הפעלה הוא בודק אם יצאה גרסה חדשה (אפשר לכבות את זה בהגדרות › כללי). כשיש גרסה חדשה מופיעה הודעה, ובסרגל העליון מופיע עדכון זמין: בטלפון כנקודה על כפתור התפריט וכפריט ראשון בו, ובטאבלט ככפתור. הוא פותח חלון עם הגרסה, הגודל ומה חדש בה, ומשם הורד והתקן.
ההורדה ממשיכה ברקע, עם התראה ואפשרות ביטול. לפני ההתקנה פרדס בודק שהקובץ הגיע שלם, ושהוא באמת פרדס, בגרסה המוצעת, וחתום באותו מפתח כמו פרדס המותקן. קובץ שלא עבר את הבדיקה לא מותקן.
בפעם הראשונה צריך לאשר לפרדס להתקין אפליקציות: פתח הגדרות פותח את המסך של אנדרואיד, ושם מפעילים את לאפשר מהמקור הזה. אחר כך העדכון מותקן מעל הגרסה הקיימת, בדרך כלל בלי שאלות נוספות (כשאנדרואיד בכל זאת שואל, המשך בהתקנה פותח את האישור). הספרייה וההגדרות נשמרות. בסוף ההתקנה פרדס נסגר, וההתראה פרדס עודכן לגרסה … פותחת אותו מחדש.
כדי לקבל את העדכונים האלה צריך להתקין פעם אחת את 0.3.0.הספרייה בכרטיס זיכרון - כולל תמיכה בפיצול לחלקים קטנים יותר כאשר זה נדרש.
אפשר לשמור את הספרייה (כ־13 ג״ב) בכרטיס זיכרון (SD) במקום בזיכרון הטלפון. כשיש כרטיס במכשיר, מדריך ההגדרה מציג את הטלפון ואת הכרטיס עם המקום הפנוי בכל אחד מהם. לא צריך הרשאת אחסון: הספרייה נשמרת בתיקייה של פרדס בכרטיס.
הגדרות › ניהול נתונים › מיקום הספרייה מעביר ספרייה מותקנת בין הטלפון לכרטיס. ההעתקה רצה ברקע, עם התראה ואפשרות ביטול. כל קובץ נבדק אחרי ההעתקה, והעותק הישן נמחק רק אחרי שהחדש במקומו.
ספרייה שנמצאת במקום האחר, למשל כזו שהועתקה לכרטיס מהמחשב, מוצגת שם, ואפשר לעבור אליה או למחוק אותה.
כשמוציאים את הכרטיס, היישום סוגר את הספרייה ומבקש להחזיר אותו, ונפתח מעצמו כשהכרטיס חוזר. הוא אף פעם לא מוריד את הספרייה מחדש מעצמו. התקנה בטלפון מתקין עותק חדש בטלפון ומשאיר את זה שבכרטיס.
כרטיסים בפורמט FAT32 (כך אנדרואיד מפרמט כרטיסים של 32 ג״ב ומטה) אינם מקבלים קובץ של 4 ג״ב ומעלה, ומסד הנתונים גדול מזה. בכרטיס כזה הוא נשמר בכמה חלקים, והיישום קורא אותם כקובץ אחד. ספרייה בחלקים מתעדכנת בינתיים רק בעדכון מלא. כרטיס שפורמט ל־exFAT במחשב מקבל את מסד הנתונים כקובץ אחד, וגם עדכון מצטבר.עדכון הספרייה בלי אינטרנט.
הגדרות › ניהול נתונים › עדכון מקבצים או עדכון מתיקייה מעדכנים את הספרייה מקבצים שהועברו למכשיר. אפשר לבחור את שני הקבצים של עדכון מצטבר מעמוד ההפצה של SeforimLibrary, patch-v….db.zst וקובץ ה־.manifest.json שלו (כמה עדכונים ברצף מתחברים לפי הסדר), או את כל קובצי ה־.part של המאגר המלא.
שימוש בקבצים שנמצאו מופיע עכשיו גם בהגדרות, כשקובצי המאגר כבר נמצאים בתיקייה של היישום, למשל אחרי שהועתקו לכרטיס בקורא כרטיסים. בורר הקבצים של אנדרואיד לא מציג את התיקייה הזו.
עדכון מלא לא מוחק את הספרייה הקיימת עד שהחדשה נקראה עד הסוף ונבדקה, כשיש מקום לשתיהן, כך שעדכון שנכשל משאיר אותה במקומה (בזמן העדכון עצמו הספרייה סגורה). הוא מוחק את הישנה קודם רק כשרק כך יש מקום, ואחרת עוצר לפני שמחק משהו.תיקונים והתאמות מזית 0.6.5.
חיפוש בספרי מחבר: בוחרים מחבר בהצעות החיפוש (חיפוש בתוך בשורה שלו), והשורה חיפוש בספרי … מחפשת את הטקסט בכל ספריו. החיפוש נשאר בספריו גם בלשוניות הקטגוריות, בלשונית שנפתחת מחדש ובהיסטוריה.
קישורי המקורות בצבע ההדגשה, בלי הקו התחתון שחצה את הניקוד.
בתצוגה המקדימה של תוצאות החיפוש, שמוצגת ליד התוצאות במסך רחב (כמו טאבלט גדול לרוחב): הקישורים בצבע ההדגשה, ושתי אצבעות מגדילות ומקטינות את הטקסט, כמו בספרים.
בטאבלט, נעץ מסמן לשונית מוצמדת. -
בניתי בנוסף כלי עזר קטן (0.5 mb) -
הספרייה של זית למחשב שוקלת כ־13GB. הורדה שלה מחדש לטלפון לוקחת זמן. הכלי הקטן הזה אורז את הספרייה שכבר מותקנת במחשב לקובץ דחוס אחד, בערך 6.3GB. אפשר לשמור את הקובץ ישר בטלפון, בכרטיס זיכרון (יחולק לכמה חלקים) או בכל תיקייה. בטלפון - בוחרים בו מתוך פרדס, והספרייה מותקנת בלי רשת.
להורדה
https://github.com/efrul/zayit-export



מה הוא עושה
מראה איזו ספרייה תיארז: זו שזית פותחת, עם הגודל והמהדורה שלה.
שומר לכל מקום:
תיקייה בטלפון עצמו, כשהוא מחובר בכבל במצב העברת קבצים.
כרטיס זיכרון, דיסק־און־קי או תיקייה במחשב.
מפצל כשצריך:
כונן בפורמט FAT32 לא מקבל קבצים של 4GB ומעלה. לכן לכונן כזה, וגם לטלפון, הקובץ נשמר בחלקים של 1.9GB, עם קובץ manifest שמפרט את החלקים.
בכל מקום אחר הפיצול הוא אפשרות.
החלקים נשמרים בתיקייה משלהם, למשל zayit-library-2026-10-11, כך שבטלפון בוחרים את כל מה שבתיקייה ולא מתערבבים קבצים אחרים.
מכיר את התיקייה של פרדס: בכרטיס זיכרון שכבר היה בטלפון, הכלי מציע לשמור בתיקייה של פרדס בכרטיס. כשהכרטיס חוזר לטלפון, פרדס מוצא את הקובץ לבד.
בודק:
לפני ההתחלה: שזית סגורה ושנסגרה כראוי, שיש ביעד מספיק מקום, ושהמהדורה חדשה מספיק לפרדס (11/10/2026 ואילך).
אחרי הכתיבה: כל קובץ נקרא שוב מהכונן עצמו, לא מהזיכרון של Windows, ומושווה למה שנכתב. כך מתגלה כרטיס פגום או מזויף לפני שהוא מגיע לטלפון.
לא משאיר שאריות: אפשר לעצור בכל רגע. מה שנכתב עד אז נמחק, גם מהטלפון. הספרייה במחשב לא משתנה אף פעם.
העיצוב הוא של זית: הצבע, הגופן ומצב בהיר או כהה נלקחים מההגדרות של זית במחשב.ההתקנה בטלפון
מעבירים את הקובץ לטלפון. אם הוא מפוצל, מעבירים את התיקייה שלו עם כל מה שבה. אם הקובץ נשמר ישר לטלפון או לתיקייה של פרדס בכרטיס, אין מה להעביר.
בהתקנה הראשונה של פרדס: "התקנה לא-מקוונת" ← "התחלת התקנה לא-מקוונת" ← "בחירת קבצים". בוחרים את הקובץ, או את כל הקבצים בתיקייה של קובץ מפוצל (לחיצה ארוכה על הראשון ואחר כך על השאר). אם הקבצים בתיקייה של פרדס בכרטיס, לוחצים על "שימוש בקבצים שנמצאו".
אם כבר יש בפרדס ספרייה: הגדרות ← ניהול נתונים ← "עדכון מקבצים" (קובץ אחד), "עדכון מתיקייה" (קובץ מפוצל, בוחרים את התיקייה שלו) או "שימוש בקבצים שנמצאו" (בתיקייה של פרדס בכרטיס).
פרדס מבקש לפני ההתקנה מקום פנוי בגודל הספרייה ועוד 1GB, והכלי מציג את המספר הזה מראש. ספרייה קודמת נשארת עד שהחדשה נבדקת, באותו מקום רק אם יש מקום לשתיהן.התקנת הכלי
מורידים את ZayitExport.exe מעמוד ה־Releases.
מפעילים. אין התקנה, ואפשר להחזיק את הקובץ בכל תיקייה.
הקובץ אינו חתום דיגיטלית, ולכן Windows SmartScreen עלול להזהיר בפעם הראשונה. כדי להמשיך לוחצים על "מידע נוסף" ואז על "הפעל בכל זאת".דרישות:
Windows 10 או 11. ה־.NET Framework 4.8 שהכלי צריך כבר מובנה בהם.
זית למחשב מותקנת, עם הספרייה שלה.
הדחיסה משתמשת ב־zstd של Windows עצמה (archiveint.dll, הספרייה של tar.exe), שקיימת בגרסאות העדכניות של Windows 11. ב־Windows בלי zstd הקובץ נשמר בלי דחיסה, בגודל הספרייה, ופרדס מתקין גם אותו.
איך זה עובד
הקובץ הוא באותו פורמט שבו זית מפרסמת את הספרייה (seforim_bundle.tar.zst), ולכן פרדס קורא אותו בלי שום שינוי:tar:
בתוכו הקבצים שזית מתקינה: seforim.db, שני האינדקסים, lexical.db ו־catalog.pb.
release_info.txt ראשון, כדי שאפשר יהיה לבדוק את המהדורה לפני שמחלצים משהו.
אחריו library_size.txt (library=<bytes> ו־seforim.db=<bytes>), הגודל של הספרייה אחרי החילוץ. כך פרדס יודע כמה מקום לבקש. גרסה של פרדס שלא מכירה אותו מדלגת עליו.
שתי תיקיות האינדקס נמצאות תמיד, ריקות בספרייה מוקטנת שאין בה אינדקס. כך לא נשאר בטלפון אינדקס של ספרייה אחרת.
כותרות pax לשמות ארוכים ולקבצים של 8GB ומעלה.
zstd רמה 3:
הדחיסה רצה בכמה ליבות: כל 8MB נדחסים למסגרת zstd נפרדת, והמסגרות כתובות ברצף. רצף כזה הוא זרם zstd תקין אחד.
הדחיסה עצמה היא של libarchive שמגיעה עם Windows.
חלקים: בשמות <name>.tar.zst.part01, part02 וכן הלאה, כל חלק של 2,040,109,465 בתים, כמו בהפצה של זית. לצדם <name>.tar.zst.manifest.json (פורמט 1), עם הגודל וה־sha256 של כל חלק ושל הכול.
שם הקובץ לפי המהדורה, למשל zayit-library-2026-10-11.tar.zst.
כתיבה בטוחה: כל קובץ נכתב קודם בשם .partial, ומקבל את שמו רק אחרי שהכול נכתב ונבדק.
לטלפון (MTP): כל חלק נכתב קודם למחשב, נשלח במנוע ההעתקה של Windows (IFileOperation) ונמחק מהמחשב. לכן במחשב צריך מקום לשני חלקים בלבד, כ־4.3GB. -
בניתי בנוסף כלי עזר קטן (0.5 mb) -
הספרייה של זית למחשב שוקלת כ־13GB. הורדה שלה מחדש לטלפון לוקחת זמן. הכלי הקטן הזה אורז את הספרייה שכבר מותקנת במחשב לקובץ דחוס אחד, בערך 6.3GB. אפשר לשמור את הקובץ ישר בטלפון, בכרטיס זיכרון (יחולק לכמה חלקים) או בכל תיקייה. בטלפון - בוחרים בו מתוך פרדס, והספרייה מותקנת בלי רשת.
להורדה
https://github.com/efrul/zayit-export



מה הוא עושה
מראה איזו ספרייה תיארז: זו שזית פותחת, עם הגודל והמהדורה שלה.
שומר לכל מקום:
תיקייה בטלפון עצמו, כשהוא מחובר בכבל במצב העברת קבצים.
כרטיס זיכרון, דיסק־און־קי או תיקייה במחשב.
מפצל כשצריך:
כונן בפורמט FAT32 לא מקבל קבצים של 4GB ומעלה. לכן לכונן כזה, וגם לטלפון, הקובץ נשמר בחלקים של 1.9GB, עם קובץ manifest שמפרט את החלקים.
בכל מקום אחר הפיצול הוא אפשרות.
החלקים נשמרים בתיקייה משלהם, למשל zayit-library-2026-10-11, כך שבטלפון בוחרים את כל מה שבתיקייה ולא מתערבבים קבצים אחרים.
מכיר את התיקייה של פרדס: בכרטיס זיכרון שכבר היה בטלפון, הכלי מציע לשמור בתיקייה של פרדס בכרטיס. כשהכרטיס חוזר לטלפון, פרדס מוצא את הקובץ לבד.
בודק:
לפני ההתחלה: שזית סגורה ושנסגרה כראוי, שיש ביעד מספיק מקום, ושהמהדורה חדשה מספיק לפרדס (11/10/2026 ואילך).
אחרי הכתיבה: כל קובץ נקרא שוב מהכונן עצמו, לא מהזיכרון של Windows, ומושווה למה שנכתב. כך מתגלה כרטיס פגום או מזויף לפני שהוא מגיע לטלפון.
לא משאיר שאריות: אפשר לעצור בכל רגע. מה שנכתב עד אז נמחק, גם מהטלפון. הספרייה במחשב לא משתנה אף פעם.
העיצוב הוא של זית: הצבע, הגופן ומצב בהיר או כהה נלקחים מההגדרות של זית במחשב.ההתקנה בטלפון
מעבירים את הקובץ לטלפון. אם הוא מפוצל, מעבירים את התיקייה שלו עם כל מה שבה. אם הקובץ נשמר ישר לטלפון או לתיקייה של פרדס בכרטיס, אין מה להעביר.
בהתקנה הראשונה של פרדס: "התקנה לא-מקוונת" ← "התחלת התקנה לא-מקוונת" ← "בחירת קבצים". בוחרים את הקובץ, או את כל הקבצים בתיקייה של קובץ מפוצל (לחיצה ארוכה על הראשון ואחר כך על השאר). אם הקבצים בתיקייה של פרדס בכרטיס, לוחצים על "שימוש בקבצים שנמצאו".
אם כבר יש בפרדס ספרייה: הגדרות ← ניהול נתונים ← "עדכון מקבצים" (קובץ אחד), "עדכון מתיקייה" (קובץ מפוצל, בוחרים את התיקייה שלו) או "שימוש בקבצים שנמצאו" (בתיקייה של פרדס בכרטיס).
פרדס מבקש לפני ההתקנה מקום פנוי בגודל הספרייה ועוד 1GB, והכלי מציג את המספר הזה מראש. ספרייה קודמת נשארת עד שהחדשה נבדקת, באותו מקום רק אם יש מקום לשתיהן.התקנת הכלי
מורידים את ZayitExport.exe מעמוד ה־Releases.
מפעילים. אין התקנה, ואפשר להחזיק את הקובץ בכל תיקייה.
הקובץ אינו חתום דיגיטלית, ולכן Windows SmartScreen עלול להזהיר בפעם הראשונה. כדי להמשיך לוחצים על "מידע נוסף" ואז על "הפעל בכל זאת".דרישות:
Windows 10 או 11. ה־.NET Framework 4.8 שהכלי צריך כבר מובנה בהם.
זית למחשב מותקנת, עם הספרייה שלה.
הדחיסה משתמשת ב־zstd של Windows עצמה (archiveint.dll, הספרייה של tar.exe), שקיימת בגרסאות העדכניות של Windows 11. ב־Windows בלי zstd הקובץ נשמר בלי דחיסה, בגודל הספרייה, ופרדס מתקין גם אותו.
איך זה עובד
הקובץ הוא באותו פורמט שבו זית מפרסמת את הספרייה (seforim_bundle.tar.zst), ולכן פרדס קורא אותו בלי שום שינוי:tar:
בתוכו הקבצים שזית מתקינה: seforim.db, שני האינדקסים, lexical.db ו־catalog.pb.
release_info.txt ראשון, כדי שאפשר יהיה לבדוק את המהדורה לפני שמחלצים משהו.
אחריו library_size.txt (library=<bytes> ו־seforim.db=<bytes>), הגודל של הספרייה אחרי החילוץ. כך פרדס יודע כמה מקום לבקש. גרסה של פרדס שלא מכירה אותו מדלגת עליו.
שתי תיקיות האינדקס נמצאות תמיד, ריקות בספרייה מוקטנת שאין בה אינדקס. כך לא נשאר בטלפון אינדקס של ספרייה אחרת.
כותרות pax לשמות ארוכים ולקבצים של 8GB ומעלה.
zstd רמה 3:
הדחיסה רצה בכמה ליבות: כל 8MB נדחסים למסגרת zstd נפרדת, והמסגרות כתובות ברצף. רצף כזה הוא זרם zstd תקין אחד.
הדחיסה עצמה היא של libarchive שמגיעה עם Windows.
חלקים: בשמות <name>.tar.zst.part01, part02 וכן הלאה, כל חלק של 2,040,109,465 בתים, כמו בהפצה של זית. לצדם <name>.tar.zst.manifest.json (פורמט 1), עם הגודל וה־sha256 של כל חלק ושל הכול.
שם הקובץ לפי המהדורה, למשל zayit-library-2026-10-11.tar.zst.
כתיבה בטוחה: כל קובץ נכתב קודם בשם .partial, ומקבל את שמו רק אחרי שהכול נכתב ונבדק.
לטלפון (MTP): כל חלק נכתב קודם למחשב, נשלח במנוע ההעתקה של Windows (IFileOperation) ונמחק מהמחשב. לכן במחשב צריך מקום לשני חלקים בלבד, כ־4.3GB.@אפרול למעשה עכשיו זה מתאים לאנדרואיד 10?
-
עדכון 0.3.0
*הפירוט בספויילר - AI.עדכון פרדס מתוך האפליקציה.
מעכשיו פרדס מתעדכן מתוכו, כמו זית למחשב. בכל הפעלה הוא בודק אם יצאה גרסה חדשה (אפשר לכבות את זה בהגדרות › כללי). כשיש גרסה חדשה מופיעה הודעה, ובסרגל העליון מופיע עדכון זמין: בטלפון כנקודה על כפתור התפריט וכפריט ראשון בו, ובטאבלט ככפתור. הוא פותח חלון עם הגרסה, הגודל ומה חדש בה, ומשם הורד והתקן.
ההורדה ממשיכה ברקע, עם התראה ואפשרות ביטול. לפני ההתקנה פרדס בודק שהקובץ הגיע שלם, ושהוא באמת פרדס, בגרסה המוצעת, וחתום באותו מפתח כמו פרדס המותקן. קובץ שלא עבר את הבדיקה לא מותקן.
בפעם הראשונה צריך לאשר לפרדס להתקין אפליקציות: פתח הגדרות פותח את המסך של אנדרואיד, ושם מפעילים את לאפשר מהמקור הזה. אחר כך העדכון מותקן מעל הגרסה הקיימת, בדרך כלל בלי שאלות נוספות (כשאנדרואיד בכל זאת שואל, המשך בהתקנה פותח את האישור). הספרייה וההגדרות נשמרות. בסוף ההתקנה פרדס נסגר, וההתראה פרדס עודכן לגרסה … פותחת אותו מחדש.
כדי לקבל את העדכונים האלה צריך להתקין פעם אחת את 0.3.0.הספרייה בכרטיס זיכרון - כולל תמיכה בפיצול לחלקים קטנים יותר כאשר זה נדרש.
אפשר לשמור את הספרייה (כ־13 ג״ב) בכרטיס זיכרון (SD) במקום בזיכרון הטלפון. כשיש כרטיס במכשיר, מדריך ההגדרה מציג את הטלפון ואת הכרטיס עם המקום הפנוי בכל אחד מהם. לא צריך הרשאת אחסון: הספרייה נשמרת בתיקייה של פרדס בכרטיס.
הגדרות › ניהול נתונים › מיקום הספרייה מעביר ספרייה מותקנת בין הטלפון לכרטיס. ההעתקה רצה ברקע, עם התראה ואפשרות ביטול. כל קובץ נבדק אחרי ההעתקה, והעותק הישן נמחק רק אחרי שהחדש במקומו.
ספרייה שנמצאת במקום האחר, למשל כזו שהועתקה לכרטיס מהמחשב, מוצגת שם, ואפשר לעבור אליה או למחוק אותה.
כשמוציאים את הכרטיס, היישום סוגר את הספרייה ומבקש להחזיר אותו, ונפתח מעצמו כשהכרטיס חוזר. הוא אף פעם לא מוריד את הספרייה מחדש מעצמו. התקנה בטלפון מתקין עותק חדש בטלפון ומשאיר את זה שבכרטיס.
כרטיסים בפורמט FAT32 (כך אנדרואיד מפרמט כרטיסים של 32 ג״ב ומטה) אינם מקבלים קובץ של 4 ג״ב ומעלה, ומסד הנתונים גדול מזה. בכרטיס כזה הוא נשמר בכמה חלקים, והיישום קורא אותם כקובץ אחד. ספרייה בחלקים מתעדכנת בינתיים רק בעדכון מלא. כרטיס שפורמט ל־exFAT במחשב מקבל את מסד הנתונים כקובץ אחד, וגם עדכון מצטבר.עדכון הספרייה בלי אינטרנט.
הגדרות › ניהול נתונים › עדכון מקבצים או עדכון מתיקייה מעדכנים את הספרייה מקבצים שהועברו למכשיר. אפשר לבחור את שני הקבצים של עדכון מצטבר מעמוד ההפצה של SeforimLibrary, patch-v….db.zst וקובץ ה־.manifest.json שלו (כמה עדכונים ברצף מתחברים לפי הסדר), או את כל קובצי ה־.part של המאגר המלא.
שימוש בקבצים שנמצאו מופיע עכשיו גם בהגדרות, כשקובצי המאגר כבר נמצאים בתיקייה של היישום, למשל אחרי שהועתקו לכרטיס בקורא כרטיסים. בורר הקבצים של אנדרואיד לא מציג את התיקייה הזו.
עדכון מלא לא מוחק את הספרייה הקיימת עד שהחדשה נקראה עד הסוף ונבדקה, כשיש מקום לשתיהן, כך שעדכון שנכשל משאיר אותה במקומה (בזמן העדכון עצמו הספרייה סגורה). הוא מוחק את הישנה קודם רק כשרק כך יש מקום, ואחרת עוצר לפני שמחק משהו.תיקונים והתאמות מזית 0.6.5.
חיפוש בספרי מחבר: בוחרים מחבר בהצעות החיפוש (חיפוש בתוך בשורה שלו), והשורה חיפוש בספרי … מחפשת את הטקסט בכל ספריו. החיפוש נשאר בספריו גם בלשוניות הקטגוריות, בלשונית שנפתחת מחדש ובהיסטוריה.
קישורי המקורות בצבע ההדגשה, בלי הקו התחתון שחצה את הניקוד.
בתצוגה המקדימה של תוצאות החיפוש, שמוצגת ליד התוצאות במסך רחב (כמו טאבלט גדול לרוחב): הקישורים בצבע ההדגשה, ושתי אצבעות מגדילות ומקטינות את הטקסט, כמו בספרים.
בטאבלט, נעץ מסמן לשונית מוצמדת.מדהים!
השתמשתי היום וזה נהדר!
לא הספקתי עדיין לבדוק וליהנות מהכל
שכויח!!!!!הספרייה בכרטיס זיכרון - כולל תמיכה בפיצול לחלקים קטנים יותר כאשר זה נדרש.
תועלתי מאוד!
אגב,
בקשר להתקנה מקוונת. באתר כתוב שהורדה תמשיך דרך האפליקציה גם יתנתק החיבור - זה לא עבד לי, היה ניתוק, אחרי גיגה וחצי והתחיל הכל מההתחלה... -
זמין להורדה! הכול נבדק גם על מכשיר פיזי - ג'לי סטאר.
https://efrul.github.io/Pardes/יש רק כמות מועטת של תוצאות בחיפוש באימולטור בתמונה כי שמתי בו גרסה מוקטנת של הספריה





-
זמין להורדה! הכול נבדק גם על מכשיר פיזי - ג'לי סטאר.
https://efrul.github.io/Pardes/יש רק כמות מועטת של תוצאות בחיפוש באימולטור בתמונה כי שמתי בו גרסה מוקטנת של הספריה





-
@אפרול
חיילך לאורייתא.
ידוע למאן דהו
א. אם זה יותר קל מבחינת ג'יגה מאוצריא?
ב. אם אפשרי להתקין את הספרים בכרטיס זכרון?
יישר כח. -
שלום! נראה שהשיחה הזו מעניינת אותך, אבל עדיין אין לך חשבון.
נמאס לכם לגלול בין אותם הפוסטים בכל ביקור? כשנרשמים לחשבון, תמיד תחזרו בדיוק למקום שבו הייתם קודם, ותוכלו לבחור לקבל התראות על תגובות חדשות (בין אם במייל, ובין אם בהתראת פוש). תוכלו גם לשמור סימניות ולפרגן ב-upvote לפוסטים כדי להביע הערכה לחברי קהילה אחרים.
בעזרת התרומה שלך, הפוסט הזה יכול להיות אפילו טוב יותר 💗
הרשמה התחברות