mirror of
https://github.com/OpenBluetoothToolbox/SimpleBLE
synced 2025-05-08 21:47:10 +08:00
Random attempt at cleaning things up
This commit is contained in:
parent
4c423a1e05
commit
23067a7f87
6
.github/workflows/ci_main.yml
vendored
6
.github/workflows/ci_main.yml
vendored
@ -259,7 +259,11 @@ jobs:
|
||||
merge-multiple: true
|
||||
|
||||
- name: List all artifacts
|
||||
run: find artifacts -type f -ls | sort
|
||||
run: find artifacts -type f -ls
|
||||
|
||||
- name: Remove unwanted artifacts
|
||||
run: |
|
||||
rm -rf artifacts/libsimplejavable*
|
||||
|
||||
- name: Upload artifacts to release
|
||||
uses: svenstaro/upload-release-action@v2
|
||||
|
@ -269,7 +269,35 @@ elseif(SIMPLEBLE_BACKEND_MACOS)
|
||||
elseif(SIMPLEBLE_BACKEND_ANDROID)
|
||||
message(STATUS "Configuring for Android")
|
||||
|
||||
include_directories(${ANDROID_NDK}/sysroot/usr/include)
|
||||
# NOTE, these are the options sent by gradle when calling externalNativeBuild, cmake
|
||||
# -DCMAKE_SYSTEM_NAME=Android \
|
||||
# -DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
|
||||
# -DCMAKE_SYSTEM_VERSION=31 \
|
||||
# -DANDROID_PLATFORM=android-31 \
|
||||
# -DANDROID_ABI=armeabi-v7a \
|
||||
# -DCMAKE_ANDROID_ARCH_ABI=armeabi-v7a \
|
||||
# -DANDROID_NDK=/Users/kdewald/Library/Android/sdk/ndk/27.0.12077973 \
|
||||
# -DCMAKE_ANDROID_NDK=/Users/kdewald/Library/Android/sdk/ndk/27.0.12077973 \
|
||||
# -DCMAKE_TOOLCHAIN_FILE=/Users/kdewald/Library/Android/sdk/ndk/27.0.12077973/build/cmake/android.toolchain.cmake \
|
||||
# -DCMAKE_MAKE_PROGRAM=/Users/kdewald/Library/Android/sdk/cmake/3.22.1/bin/ninja \
|
||||
# -DCMAKE_LIBRARY_OUTPUT_DIRECTORY=/Users/kdewald/Workspaces/Personal/SimpleBLE/simpledroidble/simpledroidble/build/intermediates/cxx/Debug/2m126g5n/obj/armeabi-v7a \
|
||||
# -DCMAKE_RUNTIME_OUTPUT_DIRECTORY=/Users/kdewald/Workspaces/Personal/SimpleBLE/simpledroidble/simpledroidble/build/intermediates/cxx/Debug/2m126g5n/obj/armeabi-v7a \
|
||||
# -DCMAKE_BUILD_TYPE=Debug \
|
||||
# -B/Users/kdewald/Workspaces/Personal/SimpleBLE/simpledroidble/simpledroidble/.cxx/Debug/2m126g5n/armeabi-v7a \
|
||||
# -GNinja
|
||||
|
||||
message(STATUS "ANDROID_NDK: ${ANDROID_NDK}")
|
||||
message(STATUS "ANDROID_NATIVE_API_LEVEL: ${ANDROID_NATIVE_API_LEVEL}")
|
||||
message(STATUS "ANDROID_ABI: ${ANDROID_ABI}")
|
||||
message(STATUS "ANDROID_PLATFORM: ${ANDROID_PLATFORM}")
|
||||
message(STATUS "CMAKE_ANDROID_NDK: ${CMAKE_ANDROID_NDK}")
|
||||
message(STATUS "ANDROID_SDK_ROOT: ${ANDROID_SDK_ROOT}")
|
||||
message(STATUS "CMAKE_ANDROID_API: ${CMAKE_ANDROID_API}")
|
||||
|
||||
# Throw an error to stop the build
|
||||
message(FATAL_ERROR "Build stopped intentionally. Please check your Android configuration.")
|
||||
|
||||
# include_directories(${ANDROID_NDK}/sysroot/usr/include)
|
||||
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/src/backends/android)
|
||||
|
||||
add_compile_options(-DANDROID -D__ANDROID_API__=${ANDROID_NATIVE_API_LEVEL})
|
||||
@ -298,6 +326,76 @@ elseif(SIMPLEBLE_BACKEND_ANDROID)
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/src/backends/android/jni/List.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/src/backends/android/jni/Set.cpp)
|
||||
target_link_libraries(simpleble PUBLIC android nativehelper log)
|
||||
|
||||
# Build the simpleble-bridge library
|
||||
|
||||
# include(UseJava)
|
||||
# find_package(Java COMPONENTS Development REQUIRED)
|
||||
|
||||
# set(ANDROID_SDK_ROOT ${CMAKE_ANDROID_NDK}/../../)
|
||||
# message(STATUS "ANDROID_SDK_ROOT: ${ANDROID_SDK_ROOT}")
|
||||
# set(ANDROID_JAR ${ANDROID_SDK_ROOT}/platforms/android-${CMAKE_ANDROID_API}/android.jar)
|
||||
# message(STATUS "ANDROID_JAR: ${ANDROID_JAR}")
|
||||
|
||||
# set(JAVA_SRC_DIR "${CMAKE_CURRENT_SOURCE_DIR}/src/backends/android/simpleble-bridge/src/main")
|
||||
# set(OUTPUT_DIR "${CMAKE_BINARY_DIR}/aar_output")
|
||||
# set(AAR_NAME "simpleble-bridge.aar")
|
||||
|
||||
# set(JAVA_FILES
|
||||
# "${JAVA_SRC_DIR}/java/org/simpleble/android/bridge/BluetoothGattCallback.java"
|
||||
# "${JAVA_SRC_DIR}/java/org/simpleble/android/bridge/ScanCallback.java"
|
||||
# )
|
||||
|
||||
# # Create classes.jar using add_jar
|
||||
# add_jar(
|
||||
# simpleble_classes
|
||||
# SOURCES ${JAVA_FILES}
|
||||
# OUTPUT_DIR ${OUTPUT_DIR}
|
||||
# INCLUDE_JARS ${ANDROID_JAR}
|
||||
# )
|
||||
|
||||
# # Copy AndroidManifest.xml
|
||||
# add_custom_command(
|
||||
# OUTPUT ${OUTPUT_DIR}/AndroidManifest.xml
|
||||
# COMMAND ${CMAKE_COMMAND} -E make_directory ${OUTPUT_DIR}
|
||||
# COMMAND ${CMAKE_COMMAND} -E copy
|
||||
# ${JAVA_SRC_DIR}/AndroidManifest.xml
|
||||
# ${OUTPUT_DIR}/AndroidManifest.xml
|
||||
# DEPENDS ${JAVA_SRC_DIR}/AndroidManifest.xml
|
||||
# COMMENT "Copying AndroidManifest.xml"
|
||||
# )
|
||||
|
||||
# # Create empty R.txt (no resources)
|
||||
# add_custom_command(
|
||||
# OUTPUT ${OUTPUT_DIR}/R.txt
|
||||
# COMMAND ${CMAKE_COMMAND} -E touch ${OUTPUT_DIR}/R.txt
|
||||
# COMMENT "Creating empty R.txt"
|
||||
# )
|
||||
|
||||
# # Package AAR
|
||||
# add_custom_command(
|
||||
# OUTPUT ${OUTPUT_DIR}/${AAR_NAME}
|
||||
# COMMAND ${CMAKE_COMMAND} -E remove -f ${OUTPUT_DIR}/${AAR_NAME}
|
||||
# COMMAND ${CMAKE_COMMAND} -E chdir ${OUTPUT_DIR}
|
||||
# zip -j ${AAR_NAME}
|
||||
# AndroidManifest.xml
|
||||
# simpleble_classes.jar
|
||||
# R.txt
|
||||
# DEPENDS
|
||||
# simpleble_classes
|
||||
# ${OUTPUT_DIR}/AndroidManifest.xml
|
||||
# ${OUTPUT_DIR}/R.txt
|
||||
# COMMENT "Packaging ${AAR_NAME}"
|
||||
# )
|
||||
|
||||
# # Define custom target
|
||||
# add_custom_target(
|
||||
# build_aar ALL
|
||||
# DEPENDS ${OUTPUT_DIR}/${AAR_NAME}
|
||||
# COMMENT "Building ${AAR_NAME}"
|
||||
# )
|
||||
|
||||
|
||||
endif()
|
||||
|
||||
apply_build_options(simpleble
|
||||
|
@ -4,8 +4,14 @@
|
||||
<component name="GradleSettings">
|
||||
<option name="linkedExternalProjectsSettings">
|
||||
<GradleProjectSettings>
|
||||
<option name="testRunner" value="CHOOSE_PER_TEST" />
|
||||
<option name="externalProjectPath" value="$PROJECT_DIR$" />
|
||||
<option name="gradleJvm" value="#GRADLE_LOCAL_JAVA_HOME" />
|
||||
<option name="modules">
|
||||
<set>
|
||||
<option value="$PROJECT_DIR$" />
|
||||
</set>
|
||||
</option>
|
||||
<option name="resolveExternalAnnotations" value="false" />
|
||||
</GradleProjectSettings>
|
||||
</option>
|
||||
|
@ -1,4 +1,3 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ExternalStorageConfigurationManager" enabled="true" />
|
||||
<component name="ProjectRootManager">
|
||||
|
17
simpleble/src/backends/android/simpleble-bridge/.idea/runConfigurations.xml
generated
Normal file
17
simpleble/src/backends/android/simpleble-bridge/.idea/runConfigurations.xml
generated
Normal file
@ -0,0 +1,17 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="RunConfigurationProducerService">
|
||||
<option name="ignoredProducers">
|
||||
<set>
|
||||
<option value="com.intellij.execution.junit.AbstractAllInDirectoryConfigurationProducer" />
|
||||
<option value="com.intellij.execution.junit.AllInPackageConfigurationProducer" />
|
||||
<option value="com.intellij.execution.junit.PatternConfigurationProducer" />
|
||||
<option value="com.intellij.execution.junit.TestInClassConfigurationProducer" />
|
||||
<option value="com.intellij.execution.junit.UniqueIdConfigurationProducer" />
|
||||
<option value="com.intellij.execution.junit.testDiscovery.JUnitTestDiscoveryConfigurationProducer" />
|
||||
<option value="org.jetbrains.kotlin.idea.junit.KotlinJUnitRunConfigurationProducer" />
|
||||
<option value="org.jetbrains.kotlin.idea.junit.KotlinPatternConfigurationProducer" />
|
||||
</set>
|
||||
</option>
|
||||
</component>
|
||||
</project>
|
@ -3,6 +3,65 @@ plugins {
|
||||
alias(libs.plugins.jetbrainsKotlinAndroid)
|
||||
}
|
||||
|
||||
val androidExtension = project.extensions.getByType<com.android.build.gradle.LibraryExtension>()
|
||||
val androidSdkDir = androidExtension.sdkDirectory.absolutePath
|
||||
val androidNdkDir = androidExtension.ndkDirectory.absolutePath
|
||||
val cmakePath = androidExtension.cmake.get().path
|
||||
val cmakeVersion = androidExtension.cmake.get().version
|
||||
|
||||
val simpleDroidBleCompileSdkVersion = 35
|
||||
val simpleDroidBleMinSdkVersion = 31
|
||||
|
||||
|
||||
// Define the path to the root simpleble CMake project
|
||||
val simplebleRootPath = rootProject.projectDir.resolve("../simpleble").canonicalPath
|
||||
// Define where the custom CMake task will build the AAR
|
||||
val simplebleBuildPath = layout.buildDirectory.dir("build_simpleble_root").get().asFile
|
||||
// Define the expected output path of the AAR from the custom build
|
||||
val simplebleAarPath = layout.buildDirectory.dir("build_simpleble_root/aar_output/simpleble-bridge.aar").get().asFile.absolutePath
|
||||
|
||||
|
||||
// Task to build the simpleble-bridge.aar using the root CMakeLists.txt
|
||||
tasks.register<Exec>("buildSimpleBleAar") {
|
||||
description = "Builds simpleble-bridge.aar from the root simpleble project"
|
||||
group = "build"
|
||||
|
||||
// // Define inputs and outputs for Gradle's up-to-date checking
|
||||
// inputs.dir(simplebleRootPath)
|
||||
// // Declare dependency on NDK and SDK directories for up-to-date checks
|
||||
// inputs.dir(sdkDir)
|
||||
// inputs.dir(ndkDir)
|
||||
outputs.file(simplebleAarPath)
|
||||
|
||||
// CMake Configuration Step
|
||||
commandLine(
|
||||
"cmake",
|
||||
"-S", simplebleRootPath, // Source directory
|
||||
"-B", simplebleBuildPath,
|
||||
"-DCMAKE_SYSTEM_NAME=Android",
|
||||
"-DCMAKE_ANDROID_NDK=$androidNdkDir",
|
||||
"-DCMAKE_SYSTEM_VERSION=$simpleDroidBleMinSdkVersion",
|
||||
)
|
||||
|
||||
// CMake Build Step (runs after configuration)
|
||||
doLast {
|
||||
exec {
|
||||
workingDir(simplebleRootPath)
|
||||
commandLine(
|
||||
"cmake",
|
||||
"--build", simplebleBuildPath.absolutePath,
|
||||
"--target", "build_aar", // Build the specific AAR target
|
||||
"--config", "Release" // Or Debug
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Make the standard build process depend on our custom AAR build task
|
||||
tasks.named("preBuild") {
|
||||
dependsOn("buildSimpleBleAar")
|
||||
}
|
||||
|
||||
android {
|
||||
namespace = "org.simpleble.android"
|
||||
compileSdk = 35
|
||||
@ -49,4 +108,10 @@ dependencies {
|
||||
|
||||
//noinspection UseTomlInstead
|
||||
implementation("org.simpleble.android.bridge:simpleble-bridge")
|
||||
|
||||
// // Depend on the AAR file produced by the custom buildSimpleBleAar task
|
||||
// implementation(files(simplebleAarPath)) {
|
||||
// // Ensure the dependency resolution waits for the task to complete
|
||||
// builtBy("buildSimpleBleAar")
|
||||
// }
|
||||
}
|
@ -31,6 +31,9 @@ add_library(
|
||||
android_utils.cpp
|
||||
)
|
||||
|
||||
# Explicitly state that the JNI library depends on the AAR being built
|
||||
# add_dependencies(${CMAKE_PROJECT_NAME} build_aar)
|
||||
|
||||
set_target_properties(
|
||||
${CMAKE_PROJECT_NAME} PROPERTIES
|
||||
CXX_STANDARD 17
|
||||
|
@ -60,7 +60,7 @@ eval set -- "$PARAMS"
|
||||
PROJECT_ROOT=$(realpath $(dirname `realpath $0`)/..)
|
||||
SOURCE_PATH=$PROJECT_ROOT/simpleble
|
||||
BUILD_PATH=$PROJECT_ROOT/build_simpleble_android
|
||||
INSTALL_PATH=$BUILD_PATH/install
|
||||
INSTALL_PATH=$PROJECT_ROOT/install_simpleble_android
|
||||
|
||||
EXAMPLE_BUILD_PATH=$PROJECT_ROOT/build_simpleble_android_examples
|
||||
EXAMPLE_SOURCE_PATH=$PROJECT_ROOT/examples/simpleble
|
||||
@ -68,6 +68,7 @@ EXAMPLE_SOURCE_PATH=$PROJECT_ROOT/examples/simpleble
|
||||
# If FLAG_CLEAN is set, clean the build directory
|
||||
if [[ ! -z "$FLAG_CLEAN" ]]; then
|
||||
rm -rf $BUILD_PATH
|
||||
rm -rf $INSTALL_PATH
|
||||
rm -rf $EXAMPLE_BUILD_PATH
|
||||
fi
|
||||
|
||||
@ -78,27 +79,28 @@ if [ -z "$ANDROID_NDK_HOME" ]; then
|
||||
fi
|
||||
|
||||
# These are some hardcoded variables used for my test process. You can change them to fit your needs.
|
||||
ANDROID_ARCH_ABI="armeabi-v7a"
|
||||
ANDROID_API=21
|
||||
ANDROID_ARCH_ABI="arm64-v8a"
|
||||
ANDROID_API=31
|
||||
# NOTE: Also look at ANDROID_STL_TYPE
|
||||
ANDROID_ARGS="-DCMAKE_SYSTEM_NAME=Android -DCMAKE_ANDROID_NDK=$ANDROID_NDK_HOME -DCMAKE_ANDROID_ARCH_ABI=$ANDROID_ARCH_ABI -DCMAKE_ANDROID_API=$ANDROID_API"
|
||||
# -DCMAKE_SYSTEM_VERSION=31
|
||||
ANDROID_ARGS="-DCMAKE_SYSTEM_NAME=Android -DCMAKE_ANDROID_NDK=$ANDROID_NDK_HOME -DCMAKE_ANDROID_ARCH_ABI=$ANDROID_ARCH_ABI -DCMAKE_ANDROID_API=$ANDROID_API -DSIMPLEBLE_EXCLUDE_C=ON"
|
||||
|
||||
cmake -H$SOURCE_PATH -B $BUILD_PATH $ANDROID_ARGS
|
||||
cmake --build $BUILD_PATH -j7
|
||||
cmake --install $BUILD_PATH --prefix "${INSTALL_PATH}"
|
||||
|
||||
if [[ ! -z "$FLAG_EXAMPLE" ]]; then
|
||||
cmake -H$EXAMPLE_SOURCE_PATH -B $EXAMPLE_BUILD_PATH $ANDROID_ARGS
|
||||
cmake --build $EXAMPLE_BUILD_PATH -j7
|
||||
# if [[ ! -z "$FLAG_EXAMPLE" ]]; then
|
||||
# cmake -H$EXAMPLE_SOURCE_PATH -B $EXAMPLE_BUILD_PATH $ANDROID_ARGS
|
||||
# cmake --build $EXAMPLE_BUILD_PATH -j7
|
||||
|
||||
if [[ ! -z "$FLAG_DEPLOY" ]]; then
|
||||
adb shell rm -rf /data/local/tmp/simpleble
|
||||
adb shell mkdir /data/local/tmp/simpleble
|
||||
adb push $EXAMPLE_BUILD_PATH/bin/* /data/local/tmp/simpleble
|
||||
adb shell chmod +x /data/local/tmp/simpleble/*
|
||||
fi
|
||||
# if [[ ! -z "$FLAG_DEPLOY" ]]; then
|
||||
# adb shell rm -rf /data/local/tmp/simpleble
|
||||
# adb shell mkdir /data/local/tmp/simpleble
|
||||
# adb push $EXAMPLE_BUILD_PATH/bin/* /data/local/tmp/simpleble
|
||||
# adb shell chmod +x /data/local/tmp/simpleble/*
|
||||
# fi
|
||||
|
||||
if [[ ! -z "$FLAG_RUN" ]]; then
|
||||
adb shell /data/local/tmp/simpleble/$FLAG_RUN
|
||||
fi
|
||||
fi
|
||||
# if [[ ! -z "$FLAG_RUN" ]]; then
|
||||
# adb shell /data/local/tmp/simpleble/$FLAG_RUN
|
||||
# fi
|
||||
# fi
|
Loading…
x
Reference in New Issue
Block a user