मुख्य सामग्री पर जाएं
होम
Docs/Build Android apps

Build Android apps

PocketCode आपके फ़ोन पर Kotlin में लिखे Android project को APK या AAB में compile करता है। न Gradle चाहिए, न server। यह बटन मुफ़्त है और इसके लिए ऐप का version 1.1.0 या नया, Android 9 या उससे ऊपर और 64-बिट processor चाहिए।

यह क्या करता है

कोई Android project खोलें और editor toolbar में Android आइकन Build APK पर टैप करें। यह बटन सिर्फ़ Android projects में दिखता है: जिनमें app/build.gradle.kts और com.android.application plugin हो। पैलेट में इसका विवरण है: इस Android project को अपने फ़ोन पर APK में compile करें।

आप कर सकते हैं

  • फ़ोन पर आज़माने के लिए Debug APK बनाएँ, जो debug key से signed होता है।
  • Release APK बनाएँ, जो optimized होता है और आपकी अपनी key से signed होता है, Google Play के बाहर बाँटने के लिए।
  • Release bundle (AAB) बनाएँ, यानी वह format जो Google Play माँगता है।
  • Google Maven और Maven Central की Maven libraries इस्तेमाल करें, libs.versions.toml catalogs के साथ। वे पहले build में डाउनलोड होती हैं और फ़ोन पर रहती हैं।
  • Compile होते समय ऐप से बाहर जा सकते हैं। एक notification दिखाता है कि build चल रहा है।
  • वही project Android Studio में खोलें: templates standard Gradle projects हैं।

आप नहीं कर सकते, और क्यों

  • .java फ़ाइलें compile करना। वे Not supported on the phone yet के रूप में दिखती हैं।अभी नहीं
  • Groovy का build.gradle पढ़ना। सिर्फ़ Kotlin DSL, यानी build.gradle.kts, काम करता है।अभी नहीं
  • PocketCode के अंदर से APK इंस्टॉल करना। इंस्टॉल Android करता है, Files ऐप से।जानबूझकर
  • AAB को फ़ोन पर इंस्टॉल करना। वह सिर्फ़ Google Play Console के लिए है।जानबूझकर

Android project बनाएँ

Projects खोलें और New दबाकर New project पर जाएँ। वहाँ दो Android templates हैं। दोनों standard Gradle projects हैं, इसलिए Android Studio में भी खुलते हैं।

Templateआपको क्या मिलता है
Android App (Activity)Kotlin में एक Android ऐप जो आपके फ़ोन पर APK बनाता है।
Android App (Compose)वही, Jetpack Compose के साथ।
हर template में एक release block आता है जिसमें isMinifyEnabled = false है और proguard-rules.pro फ़ाइल पहले से जुड़ी है। Shrinking चालू करने के लिए R8 सेक्शन देखें।

Debug APK बनाएँ

Debug APK फ़ोन पर अपना ऐप आज़माने का तेज़ तरीक़ा है। Build APK पर टैप करें, Build the app sheet में Debug APK चुनें और Build पर टैप करें।

  1. 1Check the project — Gradle फ़ाइलें और project की संरचना पढ़ता है।
  2. 2Download libraries — सिर्फ़ पहली बार, फिर वे फ़ोन पर रहती हैं।
  3. 3Resources — ऐप के resources तैयार करता है।
  4. 4Compile Kotlin — आपका code compile करता है।
  5. 5Prepare libraries for Android — सिर्फ़ पहली बार, फिर वे सेव रहती हैं।
  6. 6Package — APK तैयार करता है।
  7. 7Sign — उसे debug key से sign करता है।

Sheet ये steps चलते समय दिखाती है, साथ में View log और Cancel। पहला build ज़्यादा समय लेता है, और sheet यह बताती है। रद्द करने पर कुछ अधूरा नहीं रहता: cache और APK सिर्फ़ पूरे लिखे जाते हैं।

पहला build

  • Kotlin tools (kotlinc और d8) ऐप के अंदर नहीं हैं। Google Play उन्हें एक बार डाउनलोड करता है, लगभग 119 MB, जब आप पहली बार APK बनाते हैं या .kt फ़ाइल चलाते हैं। आपको Getting the build tools और Downloading from Google Play: X of Y. Only the first time. दिखेगा।
  • Mobile data पर Google Play पहले पूछ सकता है: Google Play needs your OK to download them. Continue download पर टैप करें।
  • इन tools के लिए ऐप Google Play से इंस्टॉल होना चाहिए।
  • अगर tools तैयार होने से पहले आप .kt फ़ाइल चलाते हैं, तो Kotlin runner Kotlin build tools कार्ड दिखाता है: Google Play से एक बार डाउनलोड, लगभग 119 MB। Download (~119 MB) पर टैप करें। पूरा होने पर आपकी फ़ाइल अपने-आप फिर चलती है।

कितना समय लगता है

  • Galaxy S24 पर, Compose template का पहला debug build, tools के डाउनलोड समेत, 1 मिनट 25 सेकंड में हुआ। APK 7.8 MB का था।
  • Galaxy S24 पर, tools पहले से इंस्टॉल होने पर Kotlin hello world 1 सेकंड से कम (266 ms) में चला।
  • दूसरे फ़ोन तेज़ या धीमे हो सकते हैं। ये माप हैं, वादा नहीं।

APK इंस्टॉल करें

Build पूरा होने पर sheet APK ready दिखाती है, साथ में समय, साइज़ और इस्तेमाल हुई key।

  1. 1Save to Downloads पर टैप करें। फ़ाइल Downloads/PocketCode/<Project>-debug.apk में जाती है। दूसरे builds में नाम -release.apk या -release.aab पर ख़त्म होता है।
  2. 2या Share… पर टैप करके उसे किसी दूसरे ऐप को भेजें। Android 9 पर इस स्क्रीन से Downloads में सेव नहीं हो सकता: Share… इस्तेमाल करें।
  3. 3फ़ाइल को Files ऐप से खोलें। पहली बार Android अनजान स्रोतों से ऐप इंस्टॉल करने की अनुमति माँगता है। अनुमति दें और इंस्टॉल करें।
PocketCode APK इंस्टॉल नहीं करता। इंस्टॉल Android करता है, Files ऐप से।

Release APK और AAB

Build the app sheet में प्रकार चुनें। Release builds को release key चाहिए। उसके बिना sheet कहती है: You do not have a release key yet. Create one, or import the one you already use. जब तक आप key नहीं जोड़ते, Build बंद रहता है।

विकल्पकिसलिए है
Debug APKफ़ोन पर आज़माने के लिए। Debug key से signed।
Release APKOptimized और आपकी अपनी key से signed, Google Play के बाहर बाँटने के लिए।
Release bundle (AAB)वह format जो Google Play माँगता है। फ़ोन पर इंस्टॉल नहीं हो सकता।

Build के बाद

  • Release APK <Project>-release.apk नाम से सेव होता है।
  • AAB के लिए sheet कहती है: Upload this file in Google Play Console. A bundle cannot be installed directly on a phone.
  • Galaxy S24 पर, Compose template का release build R8 के साथ 44 सेकंड में हुआ और APK 1.2 MB का था।

Release keys

Release key आपके ऐप को sign करती है। Keys संभालने के लिए Build APK दबाएँ, Release APK या Release bundle (AAB) चुनें और Signing key box में Manage keys दबाएँ। वहाँ keys बना, import, export या delete कर सकते हैं।

Key बनाएँ

  • Create a key चुनें। यह 2048-बिट की RSA key बनाता है, 30 साल के लिए valid, फ़ोन पर Android Keystore में encrypted रूप में सेव।
  • Default alias upload है। Password में 6 या उससे ज़्यादा अक्षर चाहिए।
  • नए ऐप के लिए Google Play ऐसी key स्वीकार नहीं करता जो 23 अक्टूबर 2033 से पहले expire हो जाए। आपकी key ऐसी हो तो ऐप आपको चेतावनी देता है।

Key import करें

  • Import a key चुनें और .p12 या .pfx फ़ाइल चुनें। सिर्फ़ PKCS12 चलता है, जो Android Studio और keytool का default format है।
  • पुरानी .jks फ़ाइल को पहले convert करना होगा: keytool -importkeystore।
  • Password ग़लत हो तो आपको Wrong password. दिखेगा।

Keys मैनेज करें

क्रियाक्या करती है
Export a copy…एक standard .p12 सेव करती है जो keytool या Android Studio से खुलती है। इसके लिए password चाहिए: Show password इस्तेमाल करें।
Show passwordKey का password दिखाती है।
Deleteपुष्टि के बाद key हटाती है: Delete this key?
Key और उसके password की एक कॉपी रखें। इन्हें खो दिया तो आप Google Play पर अपना ऐप कभी अपडेट नहीं कर पाएँगे। दूसरे फ़ोन पर, या restore के बाद, .p12 फिर से import करें।

R8 से code छोटा करें

R8 release build के code को छोटा और obfuscate करता है। यह तभी काम करता है जब app/build.gradle.kts के release block में isMinifyEnabled = true हो। Sheet आपको यह याद दिलाती है।

  1. 1app/build.gradle.kts खोलें और release block के अंदर isMinifyEnabled = true लिखें।
  2. 2Release APK या Release bundle (AAB) बनाएँ।
  3. 3R8 चलने पर नतीजा कहता है: R8 obfuscated the code. Keep app/build/outputs/mapping/release/mapping.txt।
  • mapping.txt सँभालकर रखें। Play Console इसे crash reports पढ़ने के लिए इस्तेमाल करता है।
  • फ़ाइलें पढ़ने या लिखने वाले R8 rules, जैसे -printmapping या -include, सुरक्षा के लिए अस्वीकार किए जाते हैं।
  • Compose के साथ R8 को memory चाहिए: Galaxy S24 पर लगभग 335 MB तक। कम memory वाले फ़ोन पर यह फ़ेल हो सकता है।

अभी क्या सपोर्ट नहीं है

फ़ोन पर build आज जो नहीं करता।

  • .java फ़ाइलें अभी compile नहीं होतीं। वे फ़ाइल और line के साथ Not supported on the phone yet के रूप में दिखती हैं।अभी नहीं
  • Groovy build.gradle सपोर्ट नहीं है। build.gradle.kts इस्तेमाल करें।अभी नहीं
  • Build जो समझ नहीं पाता वह Not supported on the phone yet के रूप में दिखता है। जो settings नतीजे को नहीं बदलतीं वे Setting ignored के रूप में दिखती हैं।अभी नहीं
  • कम RAM वाले फ़ोन पर R8 की memory ख़त्म हो सकती है, ख़ासकर Compose के साथ।डिवाइस
  • फ़ाइलें पढ़ने या लिखने वाले R8 rules अस्वीकार किए जाते हैं।जानबूझकर
  • PocketCode APK इंस्टॉल नहीं करता। आप उसे Files ऐप से खोलते हैं।जानबूझकर
  • Build tools Google Play से आते हैं, इसलिए ऐप Google Play से इंस्टॉल होना चाहिए।Google Play
  • पहले build में tools और libraries डाउनलोड करने के लिए कनेक्शन चाहिए।नेटवर्क ज़रूरी

Build cache साफ़ करें

Build libraries और compiled फ़ाइलें फ़ोन पर रखता है ताकि अगले builds तेज़ हों। यह जगह ख़ाली करने के लिए:

  1. 1Settings खोलें।
  2. 2Clear build cache पर टैप करें: Android ऐप बनाने के लिए सेव की गई libraries और compiled फ़ाइलें ख़ाली करता है।
  3. 3अगला build libraries फिर से डाउनलोड करता है।

समस्या निवारण

आम समस्याएँ और क्या करें।

Couldn't download the build tools from Google Play: there is no connection. Try again when you're online.

Tools लगभग 119 MB के हैं और पहली बार Google Play से आते हैं। इंटरनेट से जुड़ें और फिर से build करें। Mobile data पर अगर Google Play आपकी अनुमति माँगे तो Continue download पर टैप करें।

There isn't enough free space for the build tools.

फ़ोन पर थोड़ी जगह ख़ाली करें और फिर से build करें। अगर build cache बड़ा है तो Settings में Clear build cache उसे ख़ाली कर देता है।

Google Play can't deliver the build tools to this copy of PocketCode. They need the app installed from Google Play.

Tools सिर्फ़ Google Play के ज़रिए आते हैं। PocketCode को फ़ाइल से नहीं, Google Play से इंस्टॉल करें और फिर से build करें।

Google Play couldn't install the build tools.

थोड़ी देर बाद फिर कोशिश करें। अगर बार-बार फ़ेल हो तो देखें कि Google Play अपडेटेड है और इंस्टॉल के लिए जगह ख़ाली है।

Not supported on the phone yet

Build को कुछ ऐसा मिला जो वह अभी नहीं कर सकता, फ़ाइल और line के साथ। सबसे आम हैं .java फ़ाइलें और Groovy का build.gradle। Code को Kotlin में ले जाएँ और build.gradle.kts इस्तेमाल करें।

Wrong password.

जिस .p12 या .pfx फ़ाइल को आप import कर रहे हैं उसका password सही नहीं है। Key बनाते समय जो password रखा था, उससे फिर कोशिश करें।

मेरी .jks key import नहीं हो रही

सिर्फ़ PKCS12 (.p12 या .pfx) import हो सकता है। पुरानी फ़ाइल को कंप्यूटर पर keytool -importkeystore से convert करें और नतीजा import करें।

Build बटन बंद है

आपने release build चुना है और अभी कोई release key नहीं है। एक बनाएँ या जो आप पहले से इस्तेमाल करते हैं उसे import करें।

कम memory वाले फ़ोन पर R8 फ़ेल होता है

Compose के साथ R8 को memory चाहिए, Galaxy S24 पर लगभग 335 MB तक। दूसरे ऐप बंद करके फिर कोशिश करें। बहुत कम memory वाले फ़ोन पर यह फिर भी फ़ेल हो सकता है। Debug APK, या isMinifyEnabled = false वाला release build, R8 इस्तेमाल नहीं करता।

मैं Downloads में सेव नहीं कर पा रहा

Android 9 पर नतीजे वाली स्क्रीन से Downloads में सेव नहीं हो सकता। Share… इस्तेमाल करें।

APK इंस्टॉल नहीं होता

PocketCode उसे इंस्टॉल नहीं करता। फ़ाइल को Files ऐप से खोलें और Android पूछे तो अनजान स्रोतों से इंस्टॉल की अनुमति दें। AAB फ़ोन पर इंस्टॉल नहीं हो सकता।

फ़ोन की जगह कम पड़ रही है

Settings में Clear build cache इस्तेमाल करें। अगला build libraries फिर से डाउनलोड करता है।