2024-11-21 16:41:04 +08:00
|
|
|
|
# flutter plugin
|
|
|
|
|
|
|
|
|
|
创建插件命令
|
|
|
|
|
|
|
|
|
|
```shell
|
|
|
|
|
flutter create --template=plugin --platforms=windows,android yourname
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
--platforms 可以指定支持哪些平台,如 windows,macos,ios,android,linux
|
|
|
|
|
|
|
|
|
|
如果没有创建相应平台目录,可以使用下面的命令开启相应的平台
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
flutter config --enable-linux-desktop # 开启linux 桌面
|
|
|
|
|
flutter config --enable-macos-desktop # 开启macos 桌面
|
|
|
|
|
flutter config --enable-ios # 开启ios
|
|
|
|
|
# 更多的命令可以通过help查看
|
|
|
|
|
flutter config --help
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## Android安卓
|
|
|
|
|
|
|
|
|
|
1. gradle文件配置
|
|
|
|
|
|
|
|
|
|
```gradle
|
|
|
|
|
defaultConfig {
|
|
|
|
|
minSdkVersion 19
|
|
|
|
|
ndk {
|
|
|
|
|
// 只编译arm64
|
|
|
|
|
abiFilters "arm64-v8a"
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
externalNativeBuild {
|
|
|
|
|
cmake {
|
|
|
|
|
arguments "-DANDROID_ARM_NEON=TRUE", "-DANDROID_STL=c++_shared"
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
consumerProguardFiles "consumer-rules.pro"
|
|
|
|
|
}
|
|
|
|
|
// 一部分动态库需要安装时一并打包,避免出现找不到依赖的动态库
|
|
|
|
|
sourceSets {
|
|
|
|
|
main {
|
|
|
|
|
// 指定动态库路径 安卓的需要的动态库我放到了../src/bin/arm64-v8a, 在指定时只需要到bin即可,但是一定得放到arm64-v8a里面
|
|
|
|
|
jniLibs.srcDirs = ['../src/bin/']
|
|
|
|
|
}
|
|
|
|
|
}
|
2024-11-22 13:36:45 +08:00
|
|
|
|
// 想尝试过把这个和default中的进行合并,但是合并后,有问题,所以cmake路径写到外面
|
|
|
|
|
externalNativeBuild {
|
|
|
|
|
// 依赖的自定义cmake路径
|
|
|
|
|
cmake {
|
|
|
|
|
path "../src/CMakeLists.txt"
|
|
|
|
|
}
|
|
|
|
|
}
|
2024-11-21 16:41:04 +08:00
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
2. cmake 文件
|
|
|
|
|
|
|
|
|
|
```cmake
|
|
|
|
|
# 安卓使用
|
|
|
|
|
cmake_minimum_required(VERSION 3.18)
|
|
|
|
|
|
|
|
|
|
set(PROJECT_NAME "pass_track")
|
|
|
|
|
project(${PROJECT_NAME}) # CXX
|
|
|
|
|
# 包含头文件搜索目录和库的搜索目录
|
|
|
|
|
# 指定所有需要编译的头文件和源文件${all_sources} ${all_headers}
|
|
|
|
|
add_library(${PROJECT_NAME} SHARED
|
|
|
|
|
${all_sources}
|
|
|
|
|
${all_headers}
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
set_target_properties(${PROJECT_NAME} PROPERTIES
|
|
|
|
|
CXX_VISIBILITY_PRESET hidden)
|
|
|
|
|
|
|
|
|
|
target_compile_definitions(${PROJECT_NAME} PRIVATE FLUTTER_PLUGIN_IMPL)
|
|
|
|
|
target_link_libraries(${PROJECT_NAME} PRIVATE 。。。)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|