Откройте исходный код системы Hongmeng, там есть такая папка: Third_Party. Он содержит сторонний код.
Нажав на нее, мы можем увидеть, что сторонних кодов много:
Позже, если нам понадобится добавить или трансплантировать какой-либо открытый исходный код в систему, мы можем добавить его в эту папку. Затем научим вас, как добавить собственный пакет с именем a_myparty.
-
Создайте новую папку a_myparty
-
Поместите исходный код пакета в файл
Здесь я помещаю файл myparty.c
- Создайте новый файл BUILD.gn
Весь каталог кода выглядит следующим образом:
- Содержимое файла myparty.c следующее:
На самом деле это просто демонстрация, так что код внутри не действует.
#include <stdio.h>
void myparty_test(void)
{
printf("first myparty \r\n");
}
- Содержимое файла 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-го релиза был скомпилирован в нашу прошивку.
- Включите функцию стороннего пакета, чтобы он участвовал в компиляции:
Откройте файл vendor\hisi\hi3861\hi3861\BUILD.gn.
Добавьте «// Third_Party/a_myparty:a_myparty_static» в раздел изображения ниже
Не забудьте точку с запятой. . .
- использовать
На этом этапе добавляется наш сторонний пакет, а затем нам нужно использовать его в коде приложения.
Откройте файл apps\sample\wifi-iot\app\my_first_app\BUILD.gn. Если у вас его нет, сначала выполните вводную процедуру hello world.
Добавьте путь к файлу заголовка «// 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
Описание успешно добавлено.