R java android studio где найти
Кажется, что он не всегда создается в исходной форме. Я не знаю правил, для которых модули создаются, а какие нет R.java (кроме того, что это не связано с тем, участвует ли Котлин). Я предполагаю, что это связано с некоторыми конкретными настройками Gradle. Если это будет генерироваться, я вижу его в module's` build/generated/not_namespaced_r_class_sources/debug/processDebugResources/r/your/application/id/R.java , где your/application/id/ будут каталоги на основе идентификатора приложения.
Согласно документам ; для повышения эффективности и производительности сборки gradle; плагин теперь генерирует JAR напрямую вместо создания промежуточных R.java файлов. В предыдущих плагинах Gradle; R.java будет сгенерирован для всех зависимостей, которые вы включаете в свой app.gradle файл или внешних зависимостей. Затем эти классы R были скомпилированы вместе с другими java-классами приложения; что приведет к накладным расходам и ненужным или избыточным компиляциям, замедляя тем самым производительность сборки приложения.
The Android Gradle plugin simplifies the compile classpath by generating only one R class for each library module in your project and sharing those R classes with other module dependencies.
Новая проведенная оптимизация может значительно улучшить производительность сборки для проектов со многими зависимостями, а также улучшить скорость индексации, что также потребует более быстрых и эффективных сборок в студии Android.
Когда я пытался декомпилировать R jar файл, который находится по адресу your_project_directory\app\build\intermediates\compile_and_runtime_not_namespaced_r_class_jar\debug using jd-gui ; Мне удалось получить R.class реализацию, содержащую идентификаторы, Views которые я использовал для своего приложения, точно так же, как мы получили бы в более ранних версиях gradle. (Что подтвердило связывание.)
ЗАМЕТКА:
Если ваше приложение использует AAPT2 ; затем вы можете сгенерировать R.java промежуточные файлы правил и Proguard. Чтобы получить синтаксис команды; вы можете использовать параметры из aapt2 link команды.
Where is the R.java file in Android Studio? Can someone please help with this? I already tried google for the answer but can't find any solution.
5 Answers 5
According to the docs; for improving the efficiency and build performance of gradle; the plugin now generates the JAR directly instead of generating intermediate R.java files. In previous gradle plugins; R.java would be generated for all the dependencies which you include in your app.gradle file or external dependencies. These R classes were then compiled alongside the app's other java classes; which would create overheads and unnecessary or redundant compilations thereby slowing down the build performances of the application.
The Android Gradle plugin simplifies the compile classpath by generating only one R class for each library module in your project and sharing those R classes with other module dependencies.
The new optimization that is done may improve build performance for projects with many dependencies significantly, and improve the indexing speed also thus requiring faster and efficient builds in android studio.
When I tried to decompile the R jar file which is located at your_project_directory\app\build\intermediates\compile_and_runtime_not_namespaced_r_class_jar\debug using jd-gui; I was able to get the R.class implementation containing id's of the Views which I used for my application just like we would get in earlier versions of gradle.(which confirmed the linking.)
NOTE:
If your application is using AAPT2; then you can generate the R.java and Proguard rules intermediate files. To get the command syntax; you can use options from aapt2 link command.
Ларс Вогель — евангелист Eclipse.
Под катом Вы обнаружите перевод его статьи, которая описывает процесс создания Android-приложений с помощью Eclipse. Используется Eclipse 3.6, Java 1.6 и Android 2.3 (Gingerbread).
Часть 2
1. Разработка под Android
1.1. Операционная система Android
Android — операционная система, основанная на Linux с интерфейсом программирования Java. Это предоставляет нам такие инструменты, как компилятор, дебаггер и эмулятор устройства, а также его (Андроида) собственную виртуальную машину Java (Dalvik Virtual Machine — DVM). Android создан альянсом Open Handset Alliance, возглавляемым компанией Google.
Android использует специальную виртуальную машину, так званую Dalvik Virtual Machine. Dalvik использует свой, особенный байткод. Следовательно, Вы не можете запускать стандартный байткод Java на Android. Android предоставляет инструмент «dx», который позволяет конвертировать файлы Java Class в файлы «dex» (Dalvik Executable). Android-приложения пакуются в файлы .apk (Android Package) программой «aapt» (Android Asset Packaging Tool) Для упрощения разработки Google предоставляет Android Development Tools (ADT) для Eclipse. ADT выполняет автоматическое преобразование из файлов Java Class в файлы dex, и создает apk во время развертывания.
Android поддерживает 2D и 3D графику, используя библиотеки OpenGL, а также хранение данных в базе данных SQLite.
Каждое Android-приложение запускается в своем собственном процессе и под своим собственным userid, который автоматически генерируется Android-ом во время развертывания. Поэтому приложение изолировано от других запущенных приложений, и неправильно работающее приложение не может беспрепятственно навредить другим Android-приложениям.
1.2. Основные компоненты Android
1.3. Безопасность и разрешения
Android определяет конкретные разрешения для определенных задач. К примеру, если приложение хочет получить доступ в Интернет, оно должно определить в своем файле конфигурации, что оно хотело бы получить соответствующие разрешения. Во время установки Android-приложения пользователю показывается экран, на котором ему нужно дать приложению требуемые разрешения.
1.4. AndroidManifest.xml
Android-приложения описываются файлом «AndroidManifest.xml». В этих файлах должны быть объявлены все активити, службы, приемники и контент-провайдеры приложения. Также он должен содержать требуемые приложением разрешения. Например, если приложению требуется доступ к сети, то это должно быть определено здесь. «AndroidManifest.xml» можно рассматривать, как описание для развертывания Android-приложения.
Атрибут «package» — базовый пакет для следующих элементов Java. Он также обязан быть уникальным, т.к. Android Marketplace только единожды принимает заявку на каждый «package». Следовательно, хорошей привычкой будет использование Вашего обратного доменного имени как «package», для избежания конфликтов с другими разработчиками.
«android:versionName» и «android:versionCode» определяют версию Вашего приложения. «versionName» — то, что видит пользователь и может быть любой строкой. «versionCode» должен быть целым, и Android Market использует это для определения, предоставили ли Вы новую версию, чтобы запустить обновления на устройствах, на которых установлено Ваше приложение. Как правило. начинается с 1 и увеличивается на единицу, если Вы выпускаете новую версию приложения.
Часть «uses-sdk» из «AndroidManifest.xml» определяет минимальную версию SDK, на котором можно запускать Ваше приложение. Это предотвращает установку Вашего приложения на устройства с более старой версией SDK.
1.5. R.java, Resources и Assets
Каталог «gen» в Android-проекте содержит генерированные значения. «R.java» — генерированный класс, который содержит ссылки на ресурсы из папки «res» проекта. Эти ресурсы содержатся в директории «res» и могут быть значениями, меню, схемами, иконками или рисунками, или анимациями. Например, ресурсом могут быть рисунок или XML-файлы, содержащие определенные строки.
Если Вы создаете новые ресурсы, то соответствующие ссылки будут автоматически созданы в «R.java». Ссылки являются статическими значениями типа int (целочисленными константами), система Android предоставляет методы доступа к соответствующим ресурсам. Например, для доступа к строке с идентификатором ссылки «R.string.yourString» используйте метод getString(R.string.yourString)); Пожалуйста, не пробуйте изменять «R.java» в ручную.
Тогда как каталог „res“ хранит структурированные значения, известные платформе Android, каталог „assets“ может быть использован для хранения любых данных. В Java Вы можете получить доступ к этим данным через AssetsManager и метод getAssets().
1.6. Активити и Макеты (layout)
Пользовательский интерфейс для деятельности (Activity) определяется с помощью макетов. Во время исполнения макеты — экземпляры «android.view.ViewGroups». Макет определяет элементы пользовательского интерфейса, их свойства и расположение. Элементы UI основываются на классе «android.view.View». ViewGroup — подкласс View. Макеты может содержать компоненты UI (Views/Виды) или другие макеты (ViewGroups). Вам не следует делать большую вложенность дочерних элементов во ViewGroups, так как это влияет на производительность.
Макет может быть определен с помощью Java-кода или с помощью XML. Как правило, используйте Java-код для генерирования макета, если не знаете про содержимое заранее. Например, если Ваш макет зависит от содержимого, которое Вы читаете из интернета.
Макеты, основанные на XML определяются с помощью файла ресурсов в папке "/res/layout". Этот файл определяет группу видов (см. пункт 1.2), виды, их отношения и атрибуты для отдельных макетов. Если элемент UI требует доступа с помощью Java-кода, дайте элементу UI уникальный идентификатор (id) с помощью атрибута «android:id». Для того, чтобы назначить новый идентификатор элементу UI, используйте конструкцию "@+id/yourvalue". Условно это создаст и назначит новый id «yourvalue» соответствующему элементу UI. Позже, в Java-коде Вы можете получить доступ к этим элементам UI с помощью метода findViewById(R.id.yourvalue).
Определение макетов через XML обычно предпочтительней, поскольку отделяет программной логику от определения макетов и позволяет легче определять разные ресурсы макетов, для разных устройств. Можно также смешивать оба подхода.
Где находится файл R.java в Android Studio? Может кто-нибудь помочь с этим? Я уже пробовал найти ответ в Google, но не могу найти никакого решения.
На основе новой стабильной версии Android Studio (3.6) у нас есть:
Итак, теперь, чтобы найти ваши сгенерированные классы ресурсов, вам потребуются следующие шаги:
1) Откройте свой проект.
2) Перейдите по пути сборки вашего модуля.
3) Откройте файл output / apk / debug / app-name-debug.apk .
4) Выберите свой файл classes.dex.
5) Посмотрите на расположенную вниз область и перейдите к полному пути к вашему пакету.
6) Вы можете увидеть все классы ресурсов с байтовым кодом. Итак, прокрутите вниз до того, что вы ищете.
7) Разверните класс ресурса, который необходимо продолжить (например, пусть это будет R.id)
8) Перейдите к своим идентификаторам.
Вот и все.
ОБНОВИТЬ:
Если вы хотите увидеть фактическое целое число идентификатора, выполните следующие действия:
1) По (7) перейдите к классу ресурсов, который вам нужен, и щелкните правой кнопкой мыши, чтобы отобразить контекстное меню.
2) Выберите «Показать байт-код», чтобы увидеть гибкий диалог «Байт-код DEX для R $ id», например, для класса id.
3) Прокрутите вниз до фактического идентификатора, чтобы посмотреть его номер.
Это правильный ответ в 2020 году (Android Studio 3.6), но как я могу прочитать фактический идентификатор? как button17 = 52444873?
Я использую Android Studio 3.3.2
Хотя текущий плагин Android Gradle больше не генерирует R.java , вы все равно можете проверить соответствующий файл класса (см. Ответ Сергея В.).
Однако, если вы (как, вероятно, в большинстве случаев) просто хотите найти сгенерированные идентификаторы для своих ресурсов, есть более простой способ:
На панели проекта слева переключитесь с Android на представление проекта с помощью раскрывающегося списка вверху. Затем перейдите к app/build/intermediates/runtime_symbol_list//R.txt . В этом файле перечислены все идентификаторы, сгенерированные AGP в процессе сборки.
Я использую Android Studio 2.3.3. R.java Файл показано на рисунке выше.
В левом верхнем углу находится список выбора. Выберите [project] опцию, чтобы вы могли видеть все папки и файлы.
Мне жаль ОП. Я серьезно сомневаюсь, что он / она просили сделать снимок экрана с фактическим файлом R. Ответ также должен четко объяснять, как он генерируется.
Как отмечалось выше, «Новый плагин Android Gradle напрямую генерирует соответствующий байт-код и не создает промежуточный файл R.java».
Используя решение ubuntudroid, вы также можете найти id этот способ. Найдите R.txt и скопируйте абсолютный путь. Проект> приложение> сборка> промежуточные продукты> runtime_symbol_list> отладка> R.txt. Затем щелкните правой кнопкой мыши и выберите Copy Path. , 1. Absolute Path Ctrl+Shift+C .
Таким образом вы получите путь R.txt , например, к "C: \ Users \ user \ AndroidStudioProjects \ your_project \ app \ build \ intermediate \ runtime_symbol_list \ debug \ R.txt". Скопируйте путь без R.txt в текстовый файл для использования в будущем, например, с помощью Notepad ++.
Нажмите Ctrl + Shift +, F чтобы найти в каталоге. Вставьте id и путь.
Измените представление проекта с Android на Project или Project Files . Найдите один из этих двух файлов.
12 Answers 12
Based on the new stable release of Android Studio (3.6) we have:
So, now to find your generated resource classes you need the following steps:
1) Open your project.
2) Go to your module build path.
3) Open the outputs/apk/debug/app-name-debug.apk file.
4) Choose your classes.dex file.
5) Look at the down placed area and go to your full package path.
6) You can see all bytecoded resource classes. So, scroll down to what you are looking for.
7) Expand the resource class you need to proceed (for example, let it be R.id)
8) Go to you id's.
That's it.
UPDATE:
If you would like to see actual id integer number you should follows steps below:
1) By (7) Go to the resource class you need to proceed and right click to show the context menu
2) Choose "Show Bytecode" to see the flexible dialog "DEX Byte Code for R$id", for example, for id class
3) Scroll down to the actual id to look its number
That's the correct answear in 2020 (Android Studio 3.6), but how can I read actual id? like button17 = 52444873 ?
Although the current Android Gradle Plugin doesn't generate a R.java anymore you can still inspect the corresponding class file (see Sergey V.`s answer).
However, if you (like probably in most cases) just want to look up the generated IDs for your resources, there is an easier way:
In the project pane on the left hand side switch from Android to Project view using the drop-down at the top. Then navigate to app/build/intermediates/runtime_symbol_list//R.txt . This file lists all IDs generated by AGP during the build process.
I use Android Studio 3.3.2
As noted above, "The new Android Gradle Plugin generates the corresponding bytecode directly and does not make the intermediate R.java file".
Using the ubuntudroid solution you can find an id also this way. Find R.txt and copy absolute path. Project > app > build > intermediates > runtime_symbol_list > debug > R.txt. Then right click and select Copy Path. , 1. Absolute Path Ctrl+Shift+C .
This way you will obtain a path to R.txt , for instance, "C:\Users\user\AndroidStudioProjects\your_project\app\build\intermediates\runtime_symbol_list\debug\R.txt". Copy the path without R.txt to a text file for future references, for example, with Notepad++.
Press Ctrl + Shift + F to find in directory. Insert an id and the path.
Change a project view from Android to Project or Project Files . Find one of these two files.
Since there have been many Android Studio versions published so far in 2020. what version are you using?
It does not always seem to be generated in source form. I do not know the rules for which modules do and do not have R.java generated (other than it is not tied to whether Kotlin is involved). I assume it is related to some specific Gradle settings. If it is generated, I am seeing it in the module's` build/generated/not_namespaced_r_class_sources/debug/processDebugResources/r/your/application/id/R.java , where your/application/id/ would be directories based on your application ID.
Читайте также: