Хобрук: Ваш путь к мастерству в программировании

Как сделать модуль AOSP с указанной версией JDK?

Как и при полной компиляции, некоторые модули используют jdk1.9, некоторые используют jdk1.8 (из-за ошибки даты 0 он не может скомпилироваться с jdk1.9).

Итак, как я могу указать специальный JDK при полной компиляции для некоторых специальных модулей? как настроить специальную версию jdk в Android.mk?


Ответы:


1

Для AOSP 10: это LOCAL_JAVA_LANGUAGE_VERSION в Android.mk.

С:

сборка\скоро\androidmk\cmd\androidmk\android.go:

"LOCAL_JAVA_LANGUAGE_VERSION":   "java_version",

сборка\скоро\java\java.go:

func (j *Library) GenerateAndroidBuildActions(ctx android.ModuleContext)
calls
func (j *Module) compile(ctx android.ModuleContext, extraSrcJars ...android.Path)
calls
func (j *Module) collectBuilderFlags(ctx android.ModuleContext, deps deps) javaBuilderFlags
calls
func (j *Module) collectBuilderFlags(ctx android.ModuleContext, deps deps) javaBuilderFlags
calls
func getJavaVersion(ctx android.ModuleContext, javaVersion string, sdkContext sdkContext) string

Основываясь на исходном коде getJavaVersion, если параметр javaVersion пуст (угадайте, когда LOCAL_JAVA_LANGUAGE_VERSION не установлен), он вернет версию на основе версии Android и т. д., если javaVersion не пуст, то он будет возвращен и помещен в командную строку сборки java по его вызывающий объект collectBuilderFlags.

В collectBuilderFlags этот параметр исходит из j.properties.Java_version, который должен исходить из LOCAL_JAVA_LANGUAGE_VERSION из-за приведенной выше информации с android.go.

Также согласно исходному коду collectBuilderFlags вы можете использовать LOCAL_JAVA_LANGUAGE_VERSION только для установки параметров -source и -target javac. Каждый вызов команды javac в AOSP10 — это javac из JDK9, т. е. prebuilts/jdk/jdk9/linux-x86/bin/javac.

29.01.2021
Новые материалы

Создание кнопочного меню с использованием HTML, CSS и JavaScript
Вы будете создавать кнопочное меню, которое имеет состояние наведения, а также позволяет вам выбирать кнопку при нажатии на нее. Финальный проект можно увидеть в этом Codepen . Шаг 1..

Внедрите OAuth в свои веб-приложения для повышения безопасности
OAuth — это широко распространенный стандарт авторизации, который позволяет приложениям получать доступ к ресурсам от имени пользователя, не раскрывая его пароль. Это позволяет пользователям..

Классы в JavaScript
class является образцом java Script Object. Конструкция «class» позволяет определять классы на основе прототипов с чистым, красивым синтаксисом. // define class Human class Human {..

Как свинг-трейдеры могут использовать ИИ для больших выигрышей
По мере того как все больше и больше профессиональных трейдеров и активных розничных трейдеров узнают о возможностях, которые предоставляет искусственный интеллект и машинное обучение для улучшения..

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

Обзор: Машинное обучение: классификация
Только что закончил третий курс курса 4 часть специализации по машинному обучению . Как и второй курс, он был посвящен низкоуровневой работе алгоритмов машинного обучения. Что касается..

Разработка расширений Qlik Sense с qExt
Использование современных инструментов веб-разработки для разработки крутых расширений Вы когда-нибудь хотели кнопку для установки переменной в приложении Qlik Sense? Когда-нибудь просили..