Как добавить пакеты сторонних программ в исходный код системы Hongmeng

HarmonyOS

Откройте исходный код системы Hongmeng, там есть такая папка: Third_Party. Он содержит сторонний код.

image.png

Нажав на нее, мы можем увидеть, что сторонних кодов много:

image.png

Позже, если нам понадобится добавить или трансплантировать какой-либо открытый исходный код в систему, мы можем добавить его в эту папку. Затем научим вас, как добавить собственный пакет с именем a_myparty.

  1. Создайте новую папку a_myparty

  2. Поместите исходный код пакета в файл

Здесь я помещаю файл myparty.c

  1. Создайте новый файл BUILD.gn

Весь каталог кода выглядит следующим образом:

image.png

  1. Содержимое файла myparty.c следующее:

На самом деле это просто демонстрация, так что код внутри не действует.

#include <stdio.h>

void myparty_test(void)

{

printf("first myparty \r\n");

}

  1. Содержимое файла BUILD.gn следующее:

Файл BUILD.gn в основном описывает соответствующую информацию о пакете программного обеспечения, включая исходные файлы для компиляции, путь к заголовочному файлу и метод компиляции (в настоящее время Hi3861 поддерживает только статическую загрузку).

import("//build/lite/config/component/lite_component.gni")

import("//build/lite/ndk/ndk.gni")

#Вот путь к заголовочному файлу конфигурации

config("a_myparty_config") {

include_dirs = [

    ".",

]

}

#Вот конфигурация для компиляции исходного кода

a_myparty_sources = [

"myparty.c",

]

#Вот статическая ссылка, похожая на файл .a системы Linux

lite_library("a_myparty_static") {

target_type = "static_library"

sources = a_myparty_sources

public_configs = [ ":a_myparty_config" ]

}

#Это динамическая загрузка, аналогичная файлу .so в системе Linux.

lite_library("a_myparty_shared") {

target_type = "shared_library"

sources = a_myparty_sources

public_configs = [ ":a_myparty_config" ]

}

#Это вход, выберите статичный или динамический

ndk_lib("a_myparty_ndk") {

if (board_name != "hi3861v100") {

    lib_extension = ".so"

    deps = [

        ":a_myparty_shared"

    ]

} else {

    deps = [

        ":a_myparty_static"

    ]

}

head_files = [

    "//third_party/a_myparty"

]

}

На этом мы в основном закончили.

Наконец, мы хотим, чтобы этот пакет 3-го релиза был скомпилирован в нашу прошивку.

  1. Включите функцию стороннего пакета, чтобы он участвовал в компиляции:

Откройте файл vendor\hisi\hi3861\hi3861\BUILD.gn.

Добавьте «// Third_Party/a_myparty:a_myparty_static» в раздел изображения ниже

Не забудьте точку с запятой. . .

image.png

  1. использовать

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

Откройте файл apps\sample\wifi-iot\app\my_first_app\BUILD.gn. Если у вас его нет, сначала выполните вводную процедуру hello world.

image.png

Добавьте путь к файлу заголовка «// Third_Party/a_myparty», и содержимое файла BUILD.gn будет следующим:

static_library("my_first_app") { sources = [ "hello_world.c"

]
include_dirs = [
    "//utils/native/liteos/include",
    "//third_party/a_myparty"
]

}

Откройте файл hello_world.c, и его содержимое будет следующим:

#include "ohos_init.h"

#include "ohos_types.h"

#include "stdio.h"

// импортируем заголовочный файл

#include "myparty.h"

void HelloWorld(void)

{

printf("%s %d \r\n", __FILE__, __LINE__);

printf("[DEMO] Hello world.\n");

//调用第3方软件包 的函数 myparty_test()

myparty_test();

}

SYS_RUN(HelloWorld);

8. Наконец, скомпилируйте тест, чтобы увидеть информацию о печати:

[DEMO] Hello world.

first myparty

Описание успешно добавлено.