[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"page-ru-/guides/android/signing-apk":3,"mdc-i94h2v-key":560,"mdc-nwute6-key":570,"mdc--9qvuqv-key":586,"mdc-p68v08-key":611,"mdc--lshbdn-key":619,"mdc-f0v4nm-key":627,"related-/guides/android/create-apk,/guides/android/debug-key,/guides/android/upload-to-play-console":635,"mdc-nz81pd-key":636,"mdc--g98ux8-key":672},{"id":4,"title":5,"appliesTo":6,"author":10,"body":11,"canonical":501,"code":219,"createdAt":502,"description":503,"difficulty":504,"draft":505,"estimatedTime":506,"extension":507,"faq":508,"howToSteps":521,"howToTotalTime":534,"image":501,"keywords":535,"locale":541,"meta":542,"navigation":543,"path":544,"platform":545,"related":546,"section":550,"seo":551,"severity":219,"stem":552,"summary":553,"tags":554,"twitterCreator":501,"twitterSite":501,"type":558,"updatedAt":502,"__hash__":559},"content_ru/guides/android/signing-apk.md","Как подписать APK-файл вручную в Android Studio и с помощью jarsigner",[7,8,9],"Android Studio 2023.2+","JDK 11+","Android SDK Build-Tools 34.0+","FixPedia Team",{"type":12,"value":13,"toc":489},"minimark",[14,19,28,32,64,68,73,137,146,150,196,199,203,342,356,360,369,384,387,395,398,402,424,428,485],[15,16,18],"h2",{"id":17},"введение-зачем-это-нужно","Введение / Зачем это нужно",[20,21,22,23,27],"p",{},"Подпись APK — обязательный шаг перед установкой приложения на устройство или публикацией в Google Play. Подписанный APK подтверждает авторство разработчика и гарантирует целостность бинарного файла. В этой статье вы узнаете два способа подписания APK: встроенный в Android Studio и консольный с помощью ",[24,25,26],"code",{},"jarsigner",". После выполнения инструкции у вас будет подписанный APK, готовый к установке.",[15,29,31],{"id":30},"требования-подготовка","Требования / Подготовка",[33,34,35,43,52,58,61],"ul",{},[36,37,38,42],"li",{},[39,40,41],"strong",{},"Android Studio"," версии 2023.2 или выше.",[36,44,45,48,49,51],{},[39,46,47],{},"JDK"," 11 или более новая версия (для ",[24,50,26],{},").",[36,53,54,57],{},[39,55,56],{},"Android SDK Build‑Tools"," 34.0+.",[36,59,60],{},"Созданный keystore (сертификат). Если у вас его нет, сгенерируйте его в Android Studio (см. шаг 1).",[36,62,63],{},"Доступ к командной строке (Terminal на macOS/Linux, Command Prompt или PowerShell на Windows).",[15,65,67],{"id":66},"пошаговая-инструкция","Пошаговая инструкция",[69,70,72],"h3",{"id":71},"шаг-1-создать-подписной-сертификат-в-android-studio","Шаг 1: Создать подписной сертификат в Android Studio",[74,75,76,82,85,88,130],"ol",{},[36,77,78,79,51],{},"Запустите Android Studio и создайте новый проект (",[24,80,81],{},"File > New > New Project",[36,83,84],{},"На экране настройки проекта нажмите кнопку «Add a sign‑in certificate».",[36,86,87],{},"Выберите «Create a new keystore».",[36,89,90,91],{},"Укажите:\n",[33,92,93,103,109,118,124],{},[36,94,95,98,99,102],{},[39,96,97],{},"Keystore path"," – путь к файлу ",[24,100,101],{},".jks"," (рекомендуется хранить его вне репозитория).",[36,104,105,108],{},[39,106,107],{},"Keystore password"," – надёжный пароль.",[36,110,111,114,115,51],{},[39,112,113],{},"Alias"," – имя ключа (например, ",[24,116,117],{},"my-key-alias",[36,119,120,123],{},[39,121,122],{},"Key password"," – пароль для приватного ключа (может совпадать с keystore password).",[36,125,126,129],{},[39,127,128],{},"Valid for"," – срок действия (10 лет — стандартный вариант).",[36,131,132,133,136],{},"Нажмите ",[39,134,135],{},"OK",". Android Studio сгенерирует keystore и покажет путь к нему.",[138,139,140],"blockquote",{},[20,141,142,145],{},[39,143,144],{},"💡 Совет:"," Сохраните keystore в безопасном месте (например, в зашифрованном контейнере). Без него вы не сможете подписать будущие APK.",[69,147,149],{"id":148},"шаг-2-подписать-apk-через-android-studio","Шаг 2: Подписать APK через Android Studio",[74,151,152,158,165,175,184,190],{},[36,153,154,155,51],{},"В Android Studio перейдите к модулю проекта (",[24,156,157],{},"app",[36,159,160,161,164],{},"Выберите ",[39,162,163],{},"Build > Generate Signed Bundle / APK",".",[36,166,167,168,171,172,164],{},"В мастере выберите ",[39,169,170],{},"APK"," и нажмите ",[39,173,174],{},"Next",[36,176,160,177,180,181,183],{},[39,178,179],{},"Create new"," → укажите созданный keystore (",[24,182,101],{}," файл) и введите пароли.",[36,185,186,187,51],{},"Установите папку для сохранения подписанного APK (например, ",[24,188,189],{},"app/build/outputs/apk/debug",[36,191,132,192,195],{},[39,193,194],{},"Finish",". Android Studio соберёт и подпишет APK в указанной директории.",[197,198],"in-article-ad",{},[69,200,202],{"id":201},"шаг-3-подписать-apk-с-помощью-jarsigner-из-командной-строки","Шаг 3: Подписать APK с помощью jarsigner из командной строки",[74,204,205,208,235,336],{},[36,206,207],{},"Откройте терминал (или Command Prompt).",[36,209,210,211,51,213],{},"Перейдите к папке с исходным APK, который нужно подписать (обычно ",[24,212,189],{},[214,215,220],"pre",{"className":216,"code":217,"language":218,"meta":219,"style":219},"language-bash shiki shiki-themes github-light github-dark","cd /path/to/your/project/app/build/outputs/apk/debug\n","bash","",[24,221,222],{"__ignoreMap":219},[223,224,227,231],"span",{"class":225,"line":226},"line",1,[223,228,230],{"class":229},"sj4cs","cd",[223,232,234],{"class":233},"sZZnC"," /path/to/your/project/app/build/outputs/apk/debug\n",[36,236,237,238,240,241,297],{},"Выполните команду ",[24,239,26],{},". Замените пулевые значения на реальные:",[214,242,244],{"className":216,"code":243,"language":218,"meta":219,"style":219},"jarsigner -keystore /full/path/to/your/keystore.jks \\\n          -storepass YOUR_STORE_PASSWORD \\\n          -keypass YOUR_KEY_PASSWORD \\\n          -signedjar MySigned.apk app-debug.apk my-key-alias\n",[24,245,246,260,271,282],{"__ignoreMap":219},[223,247,248,251,254,257],{"class":225,"line":226},[223,249,26],{"class":250},"sScJk",[223,252,253],{"class":229}," -keystore",[223,255,256],{"class":233}," /full/path/to/your/keystore.jks",[223,258,259],{"class":229}," \\\n",[223,261,263,266,269],{"class":225,"line":262},2,[223,264,265],{"class":229},"          -storepass",[223,267,268],{"class":233}," YOUR_STORE_PASSWORD",[223,270,259],{"class":229},[223,272,274,277,280],{"class":225,"line":273},3,[223,275,276],{"class":229},"          -keypass",[223,278,279],{"class":233}," YOUR_KEY_PASSWORD",[223,281,259],{"class":229},[223,283,285,288,291,294],{"class":225,"line":284},4,[223,286,287],{"class":229},"          -signedjar",[223,289,290],{"class":233}," MySigned.apk",[223,292,293],{"class":233}," app-debug.apk",[223,295,296],{"class":233}," my-key-alias\n",[33,298,299,307,313,319,325,331],{},[36,300,301,304,305,164],{},[24,302,303],{},"-keystore"," — путь к файлу ",[24,306,101],{},[36,308,309,312],{},[24,310,311],{},"-storepass"," — пароль keystore.",[36,314,315,318],{},[24,316,317],{},"-keypass"," — пароль ключа.",[36,320,321,324],{},[24,322,323],{},"-signedjar"," — имя выходного подписанного APK.",[36,326,327,330],{},[24,328,329],{},"app-debug.apk"," — исходный файл.",[36,332,333,335],{},[24,334,117],{}," — псевдоним ключа, созданный ранее.",[36,337,338,339],{},"Если всё прошло успешно, вы увидите сообщение ",[24,340,341],{},"jar подписан.",[138,343,344],{},[20,345,346,349,350,352,353,355],{},[39,347,348],{},"⚠️ Важно:"," Не указывайте ",[24,351,311],{}," и ",[24,354,317],{}," в командной строке через переменные окружения, если только вы не уверены в безопасности среды.",[69,357,359],{"id":358},"шаг-4-проверить-подпись-apk","Шаг 4: Проверить подпись APK",[20,361,362,363,366,367,51],{},"Для подтверждения корректности подписи используйте ",[24,364,365],{},"apksigner"," (входит в состав ",[24,368,56],{},[214,370,372],{"className":216,"code":371,"language":218,"meta":219,"style":219},"apksigner verify MySigned.apk\n",[24,373,374],{"__ignoreMap":219},[223,375,376,378,381],{"class":225,"line":226},[223,377,365],{"class":250},[223,379,380],{"class":233}," verify",[223,382,383],{"class":233}," MySigned.apk\n",[20,385,386],{},"Вы должны увидеть что-то вроде:",[214,388,393],{"className":389,"code":391,"language":392},[390],"language-text","Verified using v1 scheme (SHA256 with RSA signature).\nVerified using v2 scheme (APK Signature Scheme v2).\nVerified using v3 scheme (APK Signature Scheme v3).\n","text",[24,394,391],{"__ignoreMap":219},[20,396,397],{},"Если какие-то схемы отсутствуют, это может означать, что APK подписан не полностью.",[15,399,401],{"id":400},"проверка-результата","Проверка результата",[74,403,404,411,418,421],{},[36,405,406,407,410],{},"Скопируйте подписанный APK (",[24,408,409],{},"MySigned.apk",") на устройство.",[36,412,413,414,417],{},"Установите его через ADB (",[24,415,416],{},"adb install MySigned.apk",") или перетащите в эмулятор.",[36,419,420],{},"Проверьте, что приложение запускается без предупреждений о «неустановленных источниках» (если вы разрешили установку из неизвестных источников).",[36,422,423],{},"Для публикации в Google Play убедитесь, что APK подписан тем же сертификатом, что и ранее опубликованные версии — Play Console автоматически проверит подпись при загрузке.",[15,425,427],{"id":426},"возможные-проблемы","Возможные проблемы",[33,429,430,443,456,472],{},[36,431,432,435],{},[39,433,434],{},"Ошибка «Keystore was tampered with, modified, or corrupted»",[33,436,437,440],{},[36,438,439],{},"Причина: файл keystore повреждён или изменён.",[36,441,442],{},"Решение: восстановите оригинальный keystore из резервной копии или сгенерируйте новый.",[36,444,445,448],{},[39,446,447],{},"«Не удалось проверить подпись» в apksigner",[33,449,450,453],{},[36,451,452],{},"Причина: использован неправильный keystore или пароль.",[36,454,455],{},"Решение: проверьте пароли, убедитесь, что псевдоним ключа совпадает, и переподпишите APK.",[36,457,458,461],{},[39,459,460],{},"APK всё равно отмечается как «неизвестный источник»",[33,462,463,466],{},[36,464,465],{},"Причина: на устройстве отключена установка из неизвестных источников.",[36,467,468,469,51],{},"Решение: разрешите установку в настройках безопасности (",[24,470,471],{},"Settings > Security > Install unknown apps",[36,473,474,477],{},[39,475,476],{},"Размер APK увеличился неожиданно",[33,478,479,482],{},[36,480,481],{},"Причина: подпись добавляет несколько килобайт.",[36,483,484],{},"Это нормально; размер не влияет на функциональность приложения.",[486,487,488],"style",{},"html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}",{"title":219,"searchDepth":262,"depth":262,"links":490},[491,492,493,499,500],{"id":17,"depth":262,"text":18},{"id":30,"depth":262,"text":31},{"id":66,"depth":262,"text":67,"children":494},[495,496,497,498],{"id":71,"depth":273,"text":72},{"id":148,"depth":273,"text":149},{"id":201,"depth":273,"text":202},{"id":358,"depth":273,"text":359},{"id":400,"depth":262,"text":401},{"id":426,"depth":262,"text":427},null,"2026-08-03 14:14:57","Пошаговая инструкция по подписыванию APK с помощью Android Studio и jarsigner. Узнайте, как быстро и безопасно подписать приложение для установки на устройство или публикацию в Google Play.","medium",false,"10-15 мин","md",[509,512,515,518],{"question":510,"answer":511},"Зачем вручную подписывать APK, если Android Studio делает это автоматически?","Ручная подпись позволяет контролировать используемый сертификат, обновлять его и создавать несколько подписей для разных версий приложения.",{"question":513,"answer":514},"Можно ли подписать APK без Android Studio?","Да, с помощью команды `jarsigner` из JDK, которая работает из командной строки.",{"question":516,"answer":517},"Что делать, если сертификат истёк или утерян?","Сгенерируйте новый сертификат с помощью `keytool` или `Android Studio > New > Sign in Module`, затем переподпишите APK.",{"question":519,"answer":520},"Влияет ли подписание на размер APK?","Подпись добавляет несколько килобайт данных, но не влияет на размер бинарного кода приложения.",[522,525,528,531],{"name":523,"text":524},"Создать подписной сертификат в Android Studio","Откройте Android Studio > File > New > New Project > «Add a sign-in certificate» и выберите «Create a new keystore». Укажите имя keystore, пароль, срок действия (рекомендуется 10 лет). Сохраните сертификат в безопасном месте.",{"name":526,"text":527},"Подписать APK через Android Studio","В Android Studio перейдите к модулю проекта > Build > Generate Signed Bundle / APK > «APK» > «Next». Выберите созданный keystore, введите пароль, укажите директорию для сохранения APK. Нажмите «Finish» — APK будет подписан.",{"name":529,"text":530},"Подписать APK с помощью jarsigner из командной строки","Откройте терминал, перейдите к папке с APK (`cd path/to/your/project/app/build/outputs/apk/debug`). Выполните команду:\n```bash\njarsigner -keystore /path/to/keystore.jks -storepass YOUR_STORE_PASS -keypass YOUR_KEY_PASS -signedjar MySigned.apk app-debug.apk alias_name\n```\nЗамените пулевые значения на реальные. Подпись добавляется без изменений исходного файла.",{"name":532,"text":533},"Проверить подпись APK","Используйте `apksigner` для проверки подписи:\n```bash\napksigner verify /path/to/MySigned.apk\n```\nПроверьте, что запись «Verified using v1 scheme», «Verified using v2 scheme» присутствует.","PT15M",[536,537,538,539,540],"подписать APK","подписать APK вручную","Android Studio подписать APK","jarsigner подписать APK","как подписать APK без ошибок","ru_RU",{},true,"/guides/android/signing-apk","android",[547,548,549],"/guides/android/create-apk","/guides/android/debug-key","/guides/android/upload-to-play-console","Гайды Android",{"title":5,"description":503},"guides/android/signing-apk","В этой статье объясняется, как вручную подписать APK-файл Android с помощью Android Studio и командной строки с помощью jarsigner. После выполнения инструкции у вас будет подписанный APK, готовый к установке на устройство или загрузке из Play Store.",[555,170,556,41,26,557],"Android","Signing","Developer","guide","sDRrJ5bpsCHSTlca1uVT1LIZMjS_zmHG94txAK9WK5M",{"data":561,"body":562},{},{"type":563,"children":564},"root",[565],{"type":566,"tag":20,"props":567,"children":568},"element",{},[569],{"type":392,"value":511},{"data":571,"body":572},{},{"type":563,"children":573},[574],{"type":566,"tag":20,"props":575,"children":576},{},[577,579,584],{"type":392,"value":578},"Да, с помощью команды ",{"type":566,"tag":24,"props":580,"children":582},{"className":581},[],[583],{"type":392,"value":26},{"type":392,"value":585}," из JDK, которая работает из командной строки.",{"data":587,"body":588},{},{"type":563,"children":589},[590],{"type":566,"tag":20,"props":591,"children":592},{},[593,595,601,603,609],{"type":392,"value":594},"Сгенерируйте новый сертификат с помощью ",{"type":566,"tag":24,"props":596,"children":598},{"className":597},[],[599],{"type":392,"value":600},"keytool",{"type":392,"value":602}," или ",{"type":566,"tag":24,"props":604,"children":606},{"className":605},[],[607],{"type":392,"value":608},"Android Studio > New > Sign in Module",{"type":392,"value":610},", затем переподпишите APK.",{"data":612,"body":613},{},{"type":563,"children":614},[615],{"type":566,"tag":20,"props":616,"children":617},{},[618],{"type":392,"value":520},{"data":620,"body":621},{},{"type":563,"children":622},[623],{"type":566,"tag":20,"props":624,"children":625},{},[626],{"type":392,"value":524},{"data":628,"body":629},{},{"type":563,"children":630},[631],{"type":566,"tag":20,"props":632,"children":633},{},[634],{"type":392,"value":527},[],{"data":637,"body":638},{},{"type":563,"children":639},[640,653,663,668],{"type":566,"tag":20,"props":641,"children":642},{},[643,645,651],{"type":392,"value":644},"Откройте терминал, перейдите к папке с APK (",{"type":566,"tag":24,"props":646,"children":648},{"className":647},[],[649],{"type":392,"value":650},"cd path/to/your/project/app/build/outputs/apk/debug",{"type":392,"value":652},"). Выполните команду:",{"type":566,"tag":214,"props":654,"children":658},{"className":655,"code":656,"language":218,"meta":219,"style":657},"language-bash","jarsigner -keystore /path/to/keystore.jks -storepass YOUR_STORE_PASS -keypass YOUR_KEY_PASS -signedjar MySigned.apk app-debug.apk alias_name\n","undefined",[659],{"type":566,"tag":24,"props":660,"children":661},{"__ignoreMap":219},[662],{"type":392,"value":656},{"type":566,"tag":20,"props":664,"children":665},{},[666],{"type":392,"value":667},"Замените пулевые значения на реальные. Подпись добавляется без изменений исходного файла.",{"type":566,"tag":486,"props":669,"children":670},{},[671],{"type":392,"value":219},{"data":673,"body":674},{},{"type":563,"children":675},[676,688,696,701],{"type":566,"tag":20,"props":677,"children":678},{},[679,681,686],{"type":392,"value":680},"Используйте ",{"type":566,"tag":24,"props":682,"children":684},{"className":683},[],[685],{"type":392,"value":365},{"type":392,"value":687}," для проверки подписи:",{"type":566,"tag":214,"props":689,"children":691},{"className":655,"code":690,"language":218,"meta":219,"style":657},"apksigner verify /path/to/MySigned.apk\n",[692],{"type":566,"tag":24,"props":693,"children":694},{"__ignoreMap":219},[695],{"type":392,"value":690},{"type":566,"tag":20,"props":697,"children":698},{},[699],{"type":392,"value":700},"Проверьте, что запись «Verified using v1 scheme», «Verified using v2 scheme» присутствует.",{"type":566,"tag":486,"props":702,"children":703},{},[704],{"type":392,"value":219}]