Перейти к содержимому

Как создать программу на компьютере самому в блокноте

  • автор:

Пошаговое руководство. Компиляция программы на языке C из командной строки

Средства сборки Visual Studio включают компилятор C, который можно использовать для создания всех базовых консольных программ до полных классических приложений Windows, мобильных приложений и т. д. Microsoft C/C++ (MSVC) — это компилятор C и C++, который в последних версиях соответствует некоторым из последних языковых стандартов C, включая C11 и C17.

В этом пошаговом руководстве показано, как создать простейшую программу на языке C в стиле «Hello, World» в текстовом редакторе с последующей компиляцией из командной строки. Если вы хотите работать в C++ в командной строке, см . пошаговое руководство. Компиляция собственной программы C++ в командной строке. Если вы хотите попробовать интегрированную среду разработки Visual Studio вместо использования командной строки, см . пошаговое руководство. Работа с проектами и решениями (C++) или использование интегрированной среды разработки Visual Studio для классических приложений C++.

Необходимые компоненты

Для выполнения этого пошагового руководства необходимо установить Visual Studio или средства сборки для Visual Studio и дополнительную разработку классических приложений с помощью рабочей нагрузки C++.

Visual Studio — это эффективная интегрированная среда разработки, которая поддерживает полнофункциональный редактор, диспетчеры ресурсов, отладчики и компиляторы для многих языков и платформ. Сведения об этих компонентах, а также о скачивании и установке Visual Studio, включая бесплатный выпуск Visual Studio Community, см. в этой статье.

При использовании версии Build Tools для Visual Studio устанавливаются только программы командной строки, библиотеки и компиляторы, необходимые для сборки программ на C и C++. Это идеальный вариант для создания заданий и упражнений, а установка выполняется относительно быстро. Чтобы установить только набор программ командной строки, скачайте Build Tools для Visual Studio на странице скачивания Visual Studio, а затем запустите установщик. В установщике Visual Studio выберите рабочую нагрузку C++ (в более ранних версиях Visual Studio выберите рабочую нагрузку средств сборки C++ и нажмите кнопку «Установить«.

При установке средств в командной строке используется другое средство, используемое для создания программы C или C++. MSVC имеет сложные требования к среде командной строки для поиска инструментов, заголовков и библиотек, которые он использует. Невозможно использовать MSVC в обычном окне командной строки без некоторой подготовки. Вам понадобится окно командной строки разработчика, являющееся обычным окном командной строки, в котором заданы все необходимые переменные среды. К счастью, Visual Studio устанавливает сочетания клавиш для запуска командных строк разработчика, имеющих среду, настроенную для сборок командной строки. К сожалению, имена сочетаний клавиш командной строки разработчика и их расположение отличаются практически в каждой версии Visual Studio и в разных версиях Windows. Первая задача пошагового руководства — найти нужный ярлык.

Ярлык командной строки разработчика автоматически задает правильные пути для компилятора и средств, а также для всех необходимых заголовков и библиотек. Некоторые из этих значений различаются для каждой конфигурации сборки. Если вы не используете ни один из ярлыков, эти значения среды необходимо задать самостоятельно. Дополнительные сведения см. в статье Использование набора инструментов MSVC из командной строки. Так как настраивать среду разработки сложно, настоятельно рекомендуется использовать ярлык командной строки разработчика вместо создания собственного.

Эти инструкции зависят от используемой версии Visual Studio. Чтобы ознакомиться с документацией по предпочтительной версии Visual Studio, используйте селектор Версия. Он находится в верхней части оглавления на этой странице.

Открытие командной строки разработчика в Visual Studio 2022

Если вы установили Visual Studio 2022 в Windows 10 или более поздней версии, откройте меню «Пуск» и выберите Все приложения. Прокрутите вниз и откройте папку Visual Studio 2022 (не приложение Visual Studio 2022). Выберите элемент Командная строка разработчика для VS 2022, чтобы открыть окно командной строки.

Открытие командной строки разработчика в Visual Studio 2019

Если вы установили Visual Studio 2019 в Windows 10 или более поздней версии, откройте меню «Пуск» и выберите Все приложения. Прокрутите вниз и откройте папку Visual Studio 2019 (не приложение Visual Studio 2019). Выберите элемент Командная строка разработчика для VS 2019, чтобы открыть окно командной строки.

Открытие командной строки разработчика в Visual Studio 2017

Если вы установили Visual Studio 2017 в Windows 10 или более поздней версии, откройте меню «Пуск» и выберите Все приложения. Прокрутите вниз и откройте папку Visual Studio 2017 (не приложение Visual Studio 2017). Выберите элемент Командная строка разработчика для VS 2017, чтобы открыть окно командной строки.

Открытие командной строки разработчика в Visual Studio 2015

Если вы установили Microsoft Visual C++ Build Tools 2015 в Windows 10 или более поздней версии, откройте меню «Пуск» и выберите Все приложения. Прокрутите вниз и откройте папку Microsoft Visual C++ Build Tools. Выберите элемент Командная строка Native Tools x86 Visual C++ 2015, чтобы открыть окно командной строки.

Если вы используете другую версию Windows, найдите в меню «Пуск» или на начальной странице папку средств Visual Studio, содержащую ярлык командной строки разработчика. Можно также ввести «командная строка разработчика» в строке поиска в Windows и выбрать командную строку, которая соответствует установленной версии Visual Studio. Откройте окно командной строки с помощью ярлыка.

Затем убедитесь, что командная строка разработчика настроена правильно. В окне командной строки введите cl (или CL , регистр не имеет значения для имени компилятора, но имеет значение для параметров компилятора). Результат должен выглядеть следующим образом.

C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise>cl Microsoft (R) C/C++ Optimizing Compiler Version 19.10.25017 for x86 Copyright (C) Microsoft Corporation. All rights reserved. usage: cl [ option. ] filename. [ /link linkoption. ] 

В зависимости от версии Visual Studio и установленных обновлений могут быть различия в текущем каталоге или номерах версий. Если приведенный выше результат похож на отображаемый, можно приступать к сборке программ C или C++ в командной строке.

Если вы получаете ошибку, например «cl», не распознается как внутренняя или внешняя команда, операблная программа или пакетный файл», ошибка C1034 или ошибка LNK1104 при выполнении команды cl, то при установке Visual Studio вы не используете командную строку разработчика или что-то не так. Для продолжения нужно будет исправить ошибку.

Если вы не можете найти ярлык командной строки разработчика или сообщение об ошибке при вводе cl , может возникнуть проблема с установкой Visual Studio. При использовании Visual Studio 2017 или более поздней версии попробуйте переустановить рабочую нагрузку Разработка классических приложений на C++ с помощью установщика Visual Studio. Подробные сведения см. в статье Справка по установке средства С++ в Visual Studio. Можно также переустановить Build Tools со страницы Загрузки Visual Studio. Не переходите к следующему разделу, пока команда cl не сработает. Дополнительные сведения об установке Visual Studio и устранении неполадок см. в статье Установка Visual Studio.

В зависимости от версии Windows, установленной на компьютере, и конфигурации системы безопасности может потребоваться правой кнопкой мыши открыть контекстное меню для ярлыка командной строки разработчика и выбрать пункт Запуск от имени администратора, чтобы успешно выполнить сборку и запуск программы, созданной в этом пошаговом руководстве.

Создание файла исходного кода на языке C и его компиляция из командной строки

  1. В окне командной строки разработчика введите команду cd c:\ , чтобы изменить текущий рабочий каталог на корень диска C:. Затем введите md c:\hello , чтобы создать каталог, и введите cd c:\hello , чтобы перейти к этому каталогу. В этом каталоге будут находиться исходный файл и скомпилированная программа.
  2. В командной строке разработчика введите команду notepad hello.c . В появившемся диалоговом окне блокнота с оповещением выберите Да, чтобы создать файл hello.c в рабочей папке.
  3. В окне блокнота введите следующие строки кода:
#include int main()
C:\hello>dir Volume in drive C has no label. Volume Serial Number is CC62-6545 Directory of C:\hello 10/02/2017 03:46 PM . 10/02/2017 03:46 PM .. 10/02/2017 03:36 PM 143 hello.c 1 File(s) 143 bytes 2 Dir(s) 514,900,566,016 bytes free 
c:\hello>cl hello.c Microsoft (R) C/C++ Optimizing Compiler Version 19.10.25017 for x86 Copyright (C) Microsoft Corporation. All rights reserved. hello.c Microsoft (R) Incremental Linker Version 14.10.25017.0 Copyright (C) Microsoft Corporation. All rights reserved. /out:hello.exe hello.obj 

Примечание. Если вы получаете сообщение об ошибке, например «cl не распознается как внутренняя или внешняя команда, исполняемая программа или пакетный файл», ошибке C1034 или LNK1104, командная строка разработчика настроена неправильно. Чтобы получить сведения о том, как устранить эту проблему, вернитесь к разделу Открыть командную строку разработчика. Если вы получаете другое сообщение об ошибке или предупреждение компилятора или компоновщика, проверьте исходный код, исправьте ошибки, сохраните его и снова запустите компилятор. Для получения сведений о конкретных ошибках введите номер ошибки в поле поиска вверху этой страницы.

Hello, World! This is a native C program compiled on the command line. 

Следующие шаги

Этот пример Hello, World является самой простой программой C. Реальные программы выполняют полезные действия и имеют файлы заголовков, дополнительные исходные файлы и ссылки на библиотеки.

Вы можете использовать шаги, описанные в этом пошаговом руководстве для C, для создания собственного кода, чтобы не вводить приведенный пример. Вы также можете выполнить сборку различных примеров кода на C, которые можно найти в других местах. Чтобы скомпилировать программу с большими файлами исходного кода, введите их все в командной строке:

cl file1.c file2.c file3.c

Компилятор выводит программу с именем file1.exe . Чтобы изменить имя program1.exe , добавьте параметр компоновщика /out :

cl file1.c file2.c file3.c /link /out:program1.exe

Чтобы автоматически перехватывать другие ошибки программирования, рекомендуется выполнить компиляцию с помощью порога предупреждений /W3 или /W4:

cl /W4 file1.c file2.c file3.c /link /out:program1.exe

Компилятор cl.exe имеет множество других параметров, которые можно применять для создания, оптимизации, отладки и анализа кода. Чтобы просмотреть краткий список, введите cl /? в командной строке разработчика. Можно также выполнять компиляцию и компоновку отдельно и применять параметры компоновщика в более сложных сценариях сборки. Дополнительные сведения о параметрах и использовании компилятора и компоновщика см. в справочнике по сборке для C/C++.

Для настройки и создания более сложных проектов в командной строке можно использовать NMAKE и файлы makefile либо MSBuild и файлы проекта. Дополнительные сведения об использовании этих средств см. в разделах Справочник по NMAKE и MSBuild.

Языки C и C++ похожи, но имеют различия. Компилятор Microsoft C/C++ (MSVC) использует простое правило для определения языка, используемого при компиляции кода. По умолчанию компилятор MSVC рассматривает все файлы с расширением .c как исходные коды на языке С, а файлы с расширением .cpp как исходные коды на языке С++. Если указан параметр компилятора /TC, компилятор будет рассматривать все файлы как исходные коды на языке С вне зависимости от расширения.

По умолчанию MSVC совместима со стандартами ANSI C89 и ISO C99, но не строго соответствует. В большинстве случаев переносимый код на языке C будет компилироваться и выполняться должным образом. Компилятор обеспечивает дополнительную поддержку изменений в ISO C11/C17. Чтобы выполнить компиляцию с поддержкой C11/C17, используйте флаг компилятора /std:c11 или /std:c17 . Для поддержки C11 и C17 требуется Windows SDK 10.0.20201.0 или более поздняя версия. Рекомендуется использовать Windows SDK 10.0.22000.0 или более позднюю версию. Последнюю версию пакета можно скачать на странице Windows SDK. Дополнительные сведения и инструкции по установке и использованию этого пакета SDK для разработки на языке C см. в статье Установка поддержки C11 и C17 в Visual Studio.

Некоторые функции библиотеки и имена функций POSIX являются нерекомендуемыми в компиляторе MSVC. Функции поддерживаются, но предпочтительные имена изменились. Дополнительные сведения см. в статьях Функции безопасности в CRT и Предупреждение компилятора (уровень 3) C4996.

Как создать сайт через блокнот

197110, Россия, Санкт-Петербург, а/я 144, ООО «Юми» +7 (812) 309-68-23

При взгляде на огромное разнообразие сайтов, представленных в сети, у людей непосвящённых зачастую создаётся впечатление, что создание сайтов бесплатно самостоятельно — дело избранных. Тем не менее, как и любая дальняя дорога начинается с первого шага, а шедевр с первого штриха в альбоме, так и создание нового сайта начинается с малого, можно даже сказать, подручными средствами. А для этого нам понадобится всем известный инструмент и простейший текстовый редактор — Блокнот.

Что такое HTML

Дело в том, что странички сайтов, которые мы видим на мониторах и экранах гаджетов, по сути, являются не чем иным, а текстовыми документами, правда, созданными с использованием языка гипертекстовой разметки или HTML, а делать это можно в обычном Блокноте. Следует отметить, что HTML не относится к языкам программирования — это способ предоставления информации в виде «доступном для понимания» браузерами. Браузеры, выступая в роли переводчиков со своего на человеческий язык, интерпретируют страницы в HTML, в результате чего вы видите на экране не набор символов, а форматированный текст.

Вот как выглядит на экране домашняя страница сайта umi.ru:

А вот как её «видит» браузер:

Существуют и непарные теги, когда действие разовое и не относится к определённому участку текста, например, перенос строк, обозначаемый в HTML комбинацией
.

Основные виды тегов и их роль в разметке веб-страницы

  • . С этого элемента начинается сайт. Он сообщает браузеру, что документ создан с помощью языка гипертекстовой разметки HTML. По большому счёту, этот элемент не обязателен, но его присутствие позволит избежать потенциальных проблем с отображением страницы;
  • парный тег и сообщает о начале и конце каждой страницы;
  • внутри между элементами парного тега и указывается всевозможная служебная информация о странице, в том числе, ее заголовок, указания на стили, использованные в ее оформлении, подключаемые скрипты, специальные метаданные;
  • ещё один парный тег содержит заголовок страницы и находится внутри тега . Благодаря этому тегу браузер и поисковые роботы определяют название каждой страницы;
  • область документа, отображаемая непосредственно на мониторе и видная пользователю, ограничивается парным тегом . На странице эта область следует за тегом .
  • для добавления в текст ссылок служит тег , однако он несколько отличается от предыдущих своим видом и выглядит текст ссылки.
  • абзацы в тексте обозначаются парным тегом

    .

  • для разделения текста при помощи подзаголовков различных уровней существуют парные теги , , , , , . Благодаря им можно выделять текст в зависимости от его важности.
  • для выделения текста полужирным шрифтом служит парный тег .

Это всего лишь небольшая часть из всего разнообразия тегов, которых насчитывается около ста. Тем не менее, с их помощью уже можно начинать cоздание сайта через блокнот. Есть также ряд правил, по которым теги располагаются в документе. Для основных тегов, включая , , , , существует строгий порядок распределения, тогда как в блоке, ограниченном тегами , остальные теги комбинируются в зависимости от общего замысла и в соответствии со стандартами языка HTML.

Создаём сайт своими руками в Блокноте

Давайте попробуем научиться cозданию сайта через блокнот, чтобы были понятны роль и функции тегов, а также структура создаваемого документа.

Для работы с текстом сайта лучше работать не с традиционной программой «Блокнот», а со специальной его версией Notepad++, созданной как раз для написания кода. Скачать её можно с сайта разработчика. Всё описанное можно сделать и в обычном «Блокноте», но в Notepad++ работать с кодом гораздо удобнее.

Как уже говорилось, документ начинается с тега , который сообщает браузеру, как его интерпретировать. Это и будет первая строчка в коде вашего сайта.

Следующий шаг. Обозначьте начало и конец страницы, добавив тег во вторую строку и через несколько строк ниже. Все остальное содержимое будет находиться в пределах, ограниченных этим парным тегом.

Затем выделим в документе участок страницы со служебной информацией, добавив парный тег между тегами , как показано ниже:

Чтобы указать заголовок страницы, в пространстве между тегами и в одну строку напишите парный тег и вставьте между них заголовок (название сайта), например, «Создание сайта через блокнот».

А вот как её «видит» браузер:

Это будет единственная служебная информация нашего сайта. Далее приступаем к оформлению той части, которая будет видна на экране дисплея, выделив её тегами . Открывающий тег ставим в строке после тега , а закрывающий — перед тегом , обозначающим, как мы помним, конец страницы.

Теперь, воспользовавшись парным тегом

и

, в строке, следующей после тега , укажем заголовок нашей страницы, который будет показан пользователю. Между этими тегами добавим название страницы, например то же, что и у сайта — «Создание сайта через блокнот».

Наполним сайт содержанием, создав один абзац текста, и ограничив его открывающим тегом

в строке после

и

в конце абзаца. Между ними добавим текст. Например: «Чтобы научиться cозданию сайта через блокнот, сначала необходимо получить представление об HTML».

Если вы хотите в тексте сделать выделение полужирным шрифтом, воспользуйтесь парным тегом . В нашем примере выделим слово «HTML» — HTML.

Создадим подзаголовок. Для этого в новой строке пропишем парный тег в который вставим подзаголовок следующего блока текста, например, «Что такое теги».

Далее создадим еще один абзац текста, использовав уже знакомые нам теги

и

, вставив между ними отрывок из нашей статьи.

Не переживайте, что текст вышел за пределы окна — на экране компьютера или смартфона он будет автоматически подстроен под ширину страницы. Впрочем, если вы хотите сделать перенос, вставьте тег
— теперь строка будет заканчиваться именно в этом месте, а дальнейший текст начинаться с новой строки (на экране, но не в Блокноте). Так и поступим — разделим наш абзац переносом.

Наш наипростейший сайт, созданный с помощью блокнота, почти готов. Осталось сохранить документ в формате *.html. Теперь его можно открывать в любом браузере. Заметьте, после сохранения с расширением HTML содержимое файла выглядит несколько по-другому — теперь в нём выделены все теги и ссылки, а при помощи расположенных слева плюсов и минусов можно скрывать и раскрывать содержимое отдельных блоков, находящихся между парными тегами, к примеру, скрыть участок, ограниченный тегом .

Если всё сделано как следует, то результатом вашей работы должна быть вот такая HTML-страница, готовая для публикации в интернете, в результате чего получится вот такой маленький одностраничный сайт:

Конечно, создавать современный сайт через блокнот будет сложно, да и, при существовании специальных конструкторов и сервисов готовых сайтов, которые значительно упрощают процесс создания сайтов и экономят время, это вряд ли оправданно. Тем не менее, иметь представление о том, из чего состоит веб-страница, как она выглядит «без оболочки» будет весьма полезно. Кроме того, теперь вам по силам cоздание сайта через блокнот и вы всегда сможете сделать это, не обращаясь к услугам программистов.

Как написать программу в блокноте

Блокнот — это простой текстовый редактор. С его помощью просматривают документы в формате .txt. Запустить Блокнот можно, нажав «Пуск». Выбрать «Программы» и «Стандартные». В нем можно печатать текст, создавать web-страницы и даже небольшие вирусы. А кто-нибудь задумывался о том, что в простом блокноте можно создать неплохую программку?

Как написать программу в блокноте

Статьи по теме:

  • Как написать программу в блокноте
  • Как создать файл блокнотом
  • Как написать программу exe

Вам понадобится

  • Персональный компьютер, установленный блокнот

Инструкция

Чтобы создать программу, надо запустить Блокнот. Далее вводите необходимые данные, пишите нужный текст. Он будет зависеть от того, что вы хотите создать. Если этот документ станет страничкой сайта, заполняете все в html-редакторе.

Введите, например, mspaint. Сохраните документ под любым именем. Нажимайте «Файл» и «Сохранить как…» Только надо выбрать правильно формат. В «Имя файла» пишите название, а вместо .txt вставляйте нужный вам формат (html, для нашего случая .bat.) Откройте созданный файл. В нем теперь может писать все, что угодно. Вместо «mspaint» Taskmgr-диспетчер задач и прочее, то есть, все зависит от того, какую программу хотите создать.

В Блокноте простой текст может стать программой, если правильно выбрать ему формат. Откройте блокнот и напишите следующий код программы:

a = inputbox (“Введите время для таймера”)

c=inputbox (“Введите сообщение для таймера”)

msgbox “Работает таймер”

Сохраните документ в формате .vbs. Все, можете запускать свою программку.

Написав текст для программы, самое главное сохранить в правильном формате, или расширении. Откройте Блокнот. Введите следующий текст программы:

set/p expr=»Enter expression:»

echo Answer: %answer%

Данный файл сохраните в расширении .bat или же .cmd. В командной строке можно ввести слово « help». Там вы увидите доступные команды. Чтобы узнать синтаксис, введите в строке “help/?”. Если недоступно какое-то расширение, откройте командную строку и применяйте такую команду, как [type con]. Для сохранения в консоли текста надо нажать такую комбинацию: “Enter и Ctr+Z”. Так что блокнот тоже может создавать программы, пусть не такие огромные и сложные. Обычно в Блокноте сохраняют программы, имеющие расширение *.bat * .cmd , * .vbs.

  • как работать в блокнот

Совет полезен?
Статьи по теме:

  • Как создать файл-приложение
  • Как создать java скрипт
  • Как создавать сайт в блокноте

Добавить комментарий к статье
Похожие советы

  • Как создавать страницу через блокнот
  • Как создать собственную программу
  • Как написать командный файл
  • Как запустить скрипт vbs
  • Как запустить bat файлом программу
  • Как создать программу на компьютер
  • Как написать код для сайта
  • Как создать сайт в блокноте
  • Как написать программу на паскале
  • Как научиться создавать программы
  • Как составить программу на компьютере
  • Как написать игру
  • Как открыть блокнот
  • Как сделать программу
  • Как составить компьютерную программу
  • Как заполнить блокнот
  • Как создать файл в паскале
  • Как создать программу exe
  • Как написать компьютерную программу
  • Как программировать на ассемблере
  • Как писать в консоли
  • Как научиться писать макросы

Новые советы от КакПросто
Рекомендованная статья
Как происходит заражение компьютера вирусом

Наиболее слабое звено в цепи компьютерной безопасности — это сам пользователь. Наличие установленного на компьютере.

Пишем, собираем и запускаем HelloWorld для Android в блокноте. Java 8 и Android N

Два с половиной года назад я опубликовал статью Пишем, собираем и запускаем HelloWorld для Android в блокноте. Она стала пользоваться огромной популярностью и набрала около 80 000 просмотров. С появлением новых инструментов, таких как Jack ToolChain, возникла необходимость переиздания и обновления статьи.

Когда я начал изучать Android, захотелось полностью написать и скомпилировать Android-приложение вручную — без использования IDE. Однако эта задача оказалась непростой и заняла у меня довольно много времени. Но как оказалось — такой подход принёс большую пользу и прояснил многие тонкости, которые скрывают IDE.

Используя только блокнот, мы напишем совсем маленькое учебное Android-приложение. А затем скомпилируем его, соберём и запустим на устройстве — и всё через командную строку. Заинтересовало? Тогда прошу.

Вступление

Я был поражён, насколько сложным и запутанным является шаблонное приложение в Android Studio. Оно просто нагромождено ресурсами. И в меньшей степени — кодом и скриптами. Хотя всё что оно должно делать — это выводить на экран HelloWorld! Кроме того, в книгах и руководствах, которые я просмотрел, объясняется, как с помощью диалоговых окон создать IDEA-шный или эклипсовый HelloWorld — и от него уже идёт дальнейшее повествование. А что происходит «под капотом» — остаётся только гадать.

Мы создадим свой шаблонный проект, который идеально использовать для учебных целей. Там не будет ничего лишнего, только всё самое необходимое. А потом детально разберём, как его собрать и запустить на вашем Android-устройстве. В конце статьи будет ссылка на скачивание архива с итоговым проектом — если возникнут какие-то вопросы — можете свериться с ним.

Таким образом, вы будете на 100% знать и понимать состав вашего проекта и процесс его сборки. Хотя этот тестовый проект предназначен для обучения, при небольшой доработке его можно будет использовать как прочный фундамент для ваших реальных проектов.

Подготовка

Для начала нам нужно скачать и установить инструменты командной строки (command line tools). Ссылка на их скачивание находится внизу страницы, посвящённой Android Studio (https://developer.android.com/studio/index.html).

Android SDK 24 это как раз Android N (Nougat / 7). Принимаем условия, скачиваем установщик, запускаем его. Оставим всё по умолчанию. Он установится в директорию вида C:\Users\kciray\AppData\Local\Android\android-sdk. Запомните этот путь, там будут находится наши основные инструменты.

Далее, запускаете SDK Manager (из папки android-sdk) и тоже устанавливаете набор по-умолчанию. Там есть всё необходимое, включая новый Jack-компилятор. Также вам понадобится JDK 8.

Главное требование перед прочтением этой статьи — кроме установленного софта вы должны уже уметь запускать на вашем девайсе тот Helloworld, который поставляется вместе с Eclipse или Android Studio. Т.е. у вас должен быть настроен драйвер usb, включена отладка по usb на вашем девайсе и т.д… Или же создан и настроен эмулятор. Это совсем элементарные вещи, и их рассмотрение выходит за рамки данной статьи — в сети достаточно информации. Кстати прочитать пару глав из книг тоже будет не лишним — хотя бы понимать, как устроен манифест, ресурсы, да и вообще основы языка Java. А в этой статье я опишу то, о чём книги молчат.

Написание проекта

Для начала, создайте некоторую папку, где будет ваш проект. Назовём её testapp. В ней создайте ещё 3 папки — bin, res и src.

Создайте в testapp пустой текстовый файл и измените его имя на AndroidManifest.xml.

Добавьте в него следующее:

Тут всё просто. Мы намерены сделать приложение с именем TestApp, которое при старте запускает класс MainActivity. Осталось только написать этот небольшой класс — и приложение готово. Если нужно — отредактируйте в теге uses-sdk свойство android:targetSdkVersion — поставьте ту версию, которая у вас.

Далее — создадим простейший ресурс — строку Hello test app. Вообще-то мы могли обойтись и без ресурса, вставив эту строку прямо в Java код. Но некоторые шаги сборки работают с ресурсами, и чтобы увидеть интересные моменты — мы всё-таки поработаем с ними.

Давайте создадим в папке res папку values. Все ресурсы следует разбивать по папкам. Далее — в ней создадим пустой файл strings.xml, а в нём напишем:

  Hello test app! 

Вот и все ресурсы, нам необходимые. Просто, не так ли? Далее создадим внутри src папку com, в ней папку example, потом ещё ниже по иерархии папку testapp — а там уже наш класс MainActivity.java. Добавим туда код:

package com.example.testapp; import android.app.Activity; import android.app.AlertDialog; import android.os.Bundle; import android.widget.Button; import android.widget.Toast; public class MainActivity extends Activity < @Override public void onCreate(Bundle savedInstanceState) < super.onCreate(savedInstanceState); Button button = new Button(this); button.setText("Big button"); button.setOnClickListener(v ->< new AlertDialog.Builder(MainActivity.this) .setTitle("From lambda") .setMessage(getString(R.string.hello)) .show(); >); setContentView(button); > >

Это простейшая Activity, которая содержит одну кнопку на весь экран. При нажатии на эту кнопку вызывается диалоговое окно, которое показывает строку из ресурсов. Обратите внимание на лямбду (конструкция v -> ). Jack ToolChain позволяет нам использовать многие возможности Java 8 под андроидом. Более подробно можете почитать на developer.android.com и source.android.com.

Структура каталогов должна получится такая

│ AndroidManifest.xml ├───bin ├───res │ └───values │ strings.xml │ └───src └───com └───example └───testapp MainActivity.java

И это собственно всё, что нам было нужно для простейшего проекта. Для сравнения —

HelloWorld от Android Studio (2.1.3)

│ .gitignore │ build.gradle │ gradle.properties │ gradlew │ gradlew.bat │ local.properties │ MyApplication2.iml │ settings.gradle │ ├───.gradle │ └───2.14.1 │ └───taskArtifacts │ cache.properties │ cache.properties.lock │ fileHashes.bin │ fileSnapshots.bin │ fileSnapshotsToTreeSnapshotsIndex.bin │ taskArtifacts.bin │ ├───.idea │ │ .name │ │ compiler.xml │ │ encodings.xml │ │ gradle.xml │ │ misc.xml │ │ modules.xml │ │ runConfigurations.xml │ │ workspace.xml │ │ │ ├───copyright │ │ profiles_settings.xml │ │ │ └───libraries │ animated_vector_drawable_24_2_0.xml │ appcompat_v7_24_2_0.xml │ hamcrest_core_1_3.xml │ junit_4_12.xml │ support_annotations_24_2_0.xml │ support_compat_24_2_0.xml │ support_core_ui_24_2_0.xml │ support_core_utils_24_2_0.xml │ support_fragment_24_2_0.xml │ support_media_compat_24_2_0.xml │ support_v4_24_2_0.xml │ support_vector_drawable_24_2_0.xml │ ├───app │ │ .gitignore │ │ app.iml │ │ build.gradle │ │ proguard-rules.pro │ │ │ ├───libs │ └───src │ ├───androidTest │ │ └───java │ │ └───com │ │ └───example │ │ └───kciray │ │ └───myapplication │ │ ApplicationTest.java │ │ │ ├───main │ │ │ AndroidManifest.xml │ │ │ │ │ ├───java │ │ │ └───com │ │ │ └───example │ │ │ └───kciray │ │ │ └───myapplication │ │ │ MainActivity.java │ │ │ │ │ └───res │ │ ├───drawable │ │ ├───layout │ │ │ activity_main.xml │ │ │ │ │ ├───mipmap-hdpi │ │ │ ic_launcher.png │ │ │ │ │ ├───mipmap-mdpi │ │ │ ic_launcher.png │ │ │ │ │ ├───mipmap-xhdpi │ │ │ ic_launcher.png │ │ │ │ │ ├───mipmap-xxhdpi │ │ │ ic_launcher.png │ │ │ │ │ ├───mipmap-xxxhdpi │ │ │ ic_launcher.png │ │ │ │ │ ├───values │ │ │ colors.xml │ │ │ dimens.xml │ │ │ strings.xml │ │ │ styles.xml │ │ │ │ │ └───values-w820dp │ │ dimens.xml │ │ │ └───test │ └───java │ └───com │ └───example │ └───kciray │ └───myapplication │ ExampleUnitTest.java │ ├───build │ └───generated │ mockable-android-24.jar │ └───gradle └───wrapper gradle-wrapper.jar gradle-wrapper.properties 

Выглядит страшнее, чем 2 года назад

Собственно, автоматизация через gradle, работа с git и IDE — вещи очень важные, однако на этапе изучения Android мне бы очень хотелось от них абстрагироваться.

Сборка

Теперь же подходим к самому важному и сложному этапу. Мы будем много работать с командной строкой, поэтому рекомендую вам все команды, данные здесь, записывать в один файл и назвать его Compile.bat. В конце файла после команд можете добавить pause, чтобы был виден результат и ошибки — если таковые возникнут.

Подготовка путей

Первое, что мы сделаем для удобства и краткости — создадим специальные переменные, в которых будем хранить пути. Для начала — определим наши основные директории. Вам нужно заменить пути к JDK и Android SDK на те, которые у вас.

set JAVA_HOME=C:\Program Files\Java\jdk1.8.0_73 set ANDROID_HOME=C:\Users\kciray\AppData\Local\Android\android-sdk set DEV_HOME=%CD%

Далее — пути непосредственно к программам. Я рекомендую вам просмотреть каталоги ваших SDK и убедится в том, что всё на месте. Также подкорректировать версии, которые присутствуют в путях.

set JACK_JAR="%ANDROID_HOME%\build-tools\24.0.2\jack.jar" set AAPT_PATH="%ANDROID_HOME%\build-tools\24.0.2\aapt.exe" set ANDROID_JAR="%ANDROID_HOME%\platforms\android-24\android.jar" set ADB="%ANDROID_HOME%\platform-tools\adb.exe" set JAVAVM="%JAVA_HOME%\bin\java.exe"

Между прочим, в более старых версиях утилита aapt находилась в platform-tools — и я не исключаю что она и\или другие могут слинять куда-нибудь ещё. Так что будьте внимательны. Если вы всё правильно сверите сейчас — то остальная часть статьи должна пройти гладко.

И ещё — в пару переменных забьём наши пакеты и классы. Если заходите их сменить — вам не придётся бегать по коду — все настройки вначале.

set PACKAGE_PATH=com/example/testapp set PACKAGE=com.example.testapp set MAIN_CLASS=MainActivity

Подготовка к компиляции

Для начала спрошу — а вы никогда не задумывались, как работает загадочный класс R? Собственно меня он сперва смутил из-за его сверхъестественных возможностей. Как на этапе компиляции можно через поля класса обращаться к XML-файлам в других каталогах? Я предположил, что тут орудует прекомпилятор — так оно и оказалось.

Собственно, есть специальная утилита AAPT — она проходится по каталогам ваших ресурсов и создаёт тот самый R.java. Оказывается, всё очень даже просто — это просто класс, в составе которого другие статические вложенные классы с целочисленными константами. И всё! Он выглядит примерно так:

/* AUTO-GENERATED FILE. DO NOT MODIFY. * * This class was automatically generated by the * aapt tool from the resource data it found. It * should not be modified by hand. */ package com.example.testapp; public final class R < public static final class attr < >public static final class string < public static final int hello=0x7f020000; >> 

Теперь давайте создадим его у вас. Для этого используем следующие команды:

call %AAPT_PATH% package -f -m -S %DEV_HOME%\res -J %DEV_HOME%\src -M %DEV_HOME%\AndroidManifest.xml -I %ANDROID_JAR%

Давайте разберёмся, что к чему. AAPT — Android Asset Packaging Tool — буквально «упаковщик андроид-имущества». Его опции:

  • package — говорит, что нам нужно именно упаковать ресурсы (а не добавить или удалить)
  • -f — перезапись существующего R.java, если таковой имеется
  • -m — разместить R.java в надлежащих пакетах, а не в корне указанного в -J пути
  • -S — после этой опции мы указываем каталог с ресурсами
  • -J — после этой опции мы указываем куда сохранить получившийся R.java
  • -I — после этой опции мы указываем путь к подключаемой библиотеке — включаем android.jar

Теперь в нашем проекте нет никакой магии и он полностью синтаксически корректен в рамках Java. А теперь самое интересное. Помните, как классические Java-программы компилируются через javac? Раньше он также входил в последовательность сборки Android-приложений. Мы брали наши исходники (*.java), получали из них байт-код JVM (*.class) и уже потом из него получали байт-код для Dalvic (*.dex). С появлением Jack ToolChain мы сократили нашу последовательность сборки на один шаг. Из исходников (*.java) мы сразу же получаем байт-код для Dalvic (*.dex).

Где же взять Джека? Он находится в папке build-tools в виде jack.jar и запускается как обычный Java-архив.

%JAVAVM% -jar %JACK_JAR% --output-dex "%DEV_HOME%\bin" -cp %ANDROID_JAR% -D jack.java.source.version=1.8 "%DEV_HOME%\src\com\example\testapp\R.java" "%DEV_HOME%\src\com\example\testapp\MainActivity.java" 
  • -jar — Стандартная опция для JVM, указывающая на то, что нужно запустить Java-архив. Не имеет никакого отношения к Джеку
  • —output-dex — Папка, в которую нужно поместить итоговый dex-файл. Пускай он будет в bin
  • -D jack.java.source.version=1.8 — «D» указывает на то, что мы задаём свойство. jack.java.source.version позволяет нам указать, что мы используем Java 8. Без неё лямбды не будут работать и будут ошибки. Полный список свойств можете посмотреть по команде %JAVAVM% -jar %JACK_JAR% —help-properties
  • [Список из *.java — файлов] — Ваши исходники. У нас всего 2 файла — R.java и MainActivity.java

Убедитесь в том, что в папке bin находится наш classes.dex. Теперь осталось только упаковать его вместе с ресурсами в APK-файл. Сделаем это:

call %AAPT_PATH% package -f -M %DEV_HOME%/AndroidManifest.xml -S %DEV_HOME%/res -I %ANDROID_JAR% -F %DEV_HOME%/bin/AndroidTest.unsigned.apk %DEV_HOME%/bin

Здесь опции аналогичны тем, которые мы использовали при создании R.java:

  • package — говорит, что нам нужно именно упаковать ресурсы (а не добавить или удалить)
  • -f — перезапись существующего AndroidTest.unsigned.apk, если таковой имеется
  • -M — после этой опции мы указываем путь к файлу манифеста
  • -S — после этой опции мы указываем каталог с ресурсами
  • -I — после этой опции мы указываем путь к подключаемой библиотеке — включаем android.jar
  • -F — после этой опции мы указываем куда сохранить получившийся AndroidTest.unsigned.apk
  • последний аргумент — путь к папке с dex — файлами
call %JAVA_HOME%/bin/keytool -genkey -validity 10000 -dname "CN=AndroidDebug, O=Android, C=US" -keystore %DEV_HOME%/AndroidTest.keystore -storepass android -keypass android -alias androiddebugkey -keyalg RSA -v -keysize 2048 call %JAVA_HOME%/bin/jarsigner -sigalg SHA1withRSA -digestalg SHA1 -keystore %DEV_HOME%/AndroidTest.keystore -storepass android -keypass android -signedjar %DEV_HOME%/bin/AndroidTest.signed.apk %DEV_HOME%/bin/AndroidTest.unsigned.apk androiddebugkey

Собственно, эти строчки запускают 2 Java-утилиты, которые не имеют никакого отношения к Android SDK — но они необходимы. Первая создаёт файл AndroidTest.keystore (проверьте его наличие), а вторая — этот файл соединяет с AndroidTest.unsigned.apk. Получается файл AndroidTest.signed.apk. Вот такой дикий крафт файлов. Но однажды создав bat-скрипт запускайте его — и он будет делать всё это в автоматическом режиме.

Я думаю, не стоит тратить время на детальный разбор опций этих утилит в пределах данной статьи. Просто нужно уловить суть — они берут AndroidTest.unsigned.apk, подписывают его файлом AndroidTest.keystore и сохраняют в AndroidTest.signed.apk. Если есть желание, можете почитать в документации.

У вас, скорее всего, будет предупреждение «Warning: No -tsa or -tsacert is provided and this jar. «, но не обращайте внимание.

Запуск

Теперь, когда мы наконец собрали наш apk-файл — можем его запустить. Подключите по usb ваше устройство, или же запустите эмулятор. А затем выполните

call %ADB% uninstall %PACKAGE% call %ADB% install %DEV_HOME%/bin/AndroidTest.signed.apk call %ADB% shell am start %PACKAGE%/%PACKAGE%.%MAIN_CLASS%
  • shell — мы хотим выполнить некоторые команды на нашем девайсе
  • am — используем для выполнения команд activity manager
  • start — мы хотим запустить некоторое Activity
  • имя пакета и полное имя класса (включая пакет), которые мы стартуем

Если всё прошло удачно, вы увидите что-то вроде этого:

Заключение

После сборки всех файлов дерево каталогов должно быть примерно таким.

│ AndroidManifest.xml │ AndroidTest.keystore │ Clear.bat │ Compile.bat │ ├───bin │ AndroidTest.signed.apk │ AndroidTest.unsigned.apk │ classes.dex │ ├───res │ └───values │ strings.xml │ └───src └───com └───example └───testapp MainActivity.java R.java

Теперь вы можете наглядно увидеть и понять, как происходит сборка андроид-приложения на более низком уровне. Когда будете использовать IDE — если сборка вдруг пойдёт не так (а такое часто бывает) — сможете вырулить ситуацию как надо. Также обратите внимание на то, что итоговый apk-файл занимает всего около 4 килобайт.

Выкладываю архив проекта. Обратите внимание, что я добавил туда ещё один маленький скрипт — Clear.bat. Он удаляет все созданные при сборке файлы. И поставил его запуск на начало Compile.bat. Также добавил комментарии с помощью Rem — по шагам.

Таким образом, скрипт производит полную очистку и пересборку проекта, включая подпись, а также удаление его на устройстве, установку и запуск.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Luxury Car Rental in Miami | Reserve a Premium Vehicle with RealCar