mirror of
https://github.com/Lorenzooone/cc3dsfs.git
synced 2025-06-18 16:45:39 -04:00
Get Android base USB connection working
This commit is contained in:
parent
5dbdc668a7
commit
2404287c7c
@ -1,5 +1,4 @@
|
||||
val NDK_VERSION by extra(project.properties["NDK_VERSION"] as? String ?: "26.1.10909125")
|
||||
val ARCH_ABI by extra(project.properties["ARCH_ABI"] as? String ?: "arm64-v8a")
|
||||
val MIN_SDK by extra((project.properties["MIN_SDK"] as? String ?: "21").toInt())
|
||||
val TARGET_SDK by extra((project.properties["TARGET_SDK"] as? String ?: "33").toInt())
|
||||
val STL_TYPE by extra(project.properties["STL_TYPE"] as? String ?: "c++_shared")
|
||||
@ -19,9 +18,7 @@ android {
|
||||
targetSdk = TARGET_SDK
|
||||
versionCode = 1
|
||||
versionName = "1.0"
|
||||
ndk {
|
||||
abiFilters.add(ARCH_ABI)
|
||||
}
|
||||
|
||||
externalNativeBuild {
|
||||
cmake {
|
||||
arguments.add("-DCMAKE_SYSTEM_NAME=Android")
|
||||
@ -36,6 +33,17 @@ android {
|
||||
proguardFiles(getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro")
|
||||
}
|
||||
}
|
||||
bundle {
|
||||
language {
|
||||
enableSplit = false
|
||||
}
|
||||
density {
|
||||
enableSplit = false
|
||||
}
|
||||
abi {
|
||||
enableSplit = true
|
||||
}
|
||||
}
|
||||
externalNativeBuild {
|
||||
cmake {
|
||||
path("../../CMakeLists.txt")
|
||||
|
@ -2,9 +2,12 @@
|
||||
|
||||
SFML_EXTRACTED_TO_FOLDER=~
|
||||
LIBUSB_EXTRACTED_TO_FOLDER=~
|
||||
SFML_EXTRACTED_FOLDER=${SFML_EXTRACTED_TO_FOLDER}/SFML-master
|
||||
LIBUSB_EXTRACTED_FOLDER=${LIBUSB_EXTRACTED_TO_FOLDER}/libusb-master
|
||||
BUILD_ARCH_COMMAND=docker-scripts/docker_build_android_single_arch
|
||||
SFML_BRANCH_NAME=master
|
||||
LIBUSB_BRANCH_NAME=android-rebase-2022-07
|
||||
SFML_EXTRACTED_FOLDER=${SFML_EXTRACTED_TO_FOLDER}/SFML-${SFML_BRANCH_NAME}
|
||||
LIBUSB_EXTRACTED_FOLDER=${LIBUSB_EXTRACTED_TO_FOLDER}/libusb-${LIBUSB_BRANCH_NAME}
|
||||
BUILD_APK_COMMAND=docker-scripts/docker_build_android_apk
|
||||
BUILD_LIBS_COMMAND=docker-scripts/docker_build_android_libraries
|
||||
|
||||
STL_CHOSEN=c++_static
|
||||
RELEASE_TYPE=Debug
|
||||
@ -13,8 +16,9 @@ ANDROID_FOLDER=android
|
||||
|
||||
export LANG=C.UTF-8
|
||||
|
||||
(cd ${SFML_EXTRACTED_TO_FOLDER} ; rm -f master.zip ; wget https://github.com/SFML/SFML/archive/refs/heads/master.zip ; unzip master.zip)
|
||||
(cd ${LIBUSB_EXTRACTED_TO_FOLDER} ; rm -f master.zip ; wget https://github.com/libusb/libusb/archive/refs/heads/master.zip ; unzip master.zip)
|
||||
(cd ${LIBUSB_EXTRACTED_FOLDER}/android/jni ; ndk-build ; mkdir -p ${ANDROID_NDK_HOME}/sources/third_party/libusb/include ; cp -r ../libs/ ${ANDROID_NDK_HOME}/sources/third_party/libusb ; cp -r ../../libusb ${ANDROID_NDK_HOME}/sources/third_party/libusb/include )
|
||||
#${BUILD_ARCH_COMMAND} ${SFML_EXTRACTED_FOLDER} armeabi-v7a ${STL_CHOSEN} ${RELEASE_TYPE} ${OUT_FOLDER} ${ANDROID_FOLDER}
|
||||
${BUILD_ARCH_COMMAND} ${SFML_EXTRACTED_FOLDER} arm64-v8a ${STL_CHOSEN} ${RELEASE_TYPE} ${OUT_FOLDER} ${ANDROID_FOLDER}
|
||||
(cd ${SFML_EXTRACTED_TO_FOLDER} ; rm -f ${SFML_BRANCH_NAME}.zip ; wget https://github.com/SFML/SFML/archive/refs/heads/${SFML_BRANCH_NAME}.zip ; unzip ${SFML_BRANCH_NAME}.zip)
|
||||
(cd ${LIBUSB_EXTRACTED_TO_FOLDER} ; rm -f ${LIBUSB_BRANCH_NAME}.zip ; wget https://github.com/jagheterfredrik/libusb/archive/refs/heads/${LIBUSB_BRANCH_NAME}.zip ; unzip ${LIBUSB_BRANCH_NAME}.zip)
|
||||
|
||||
${BUILD_LIBS_COMMAND} ${LIBUSB_EXTRACTED_FOLDER} ${SFML_EXTRACTED_FOLDER} ${STL_CHOSEN} ${RELEASE_TYPE}
|
||||
|
||||
${BUILD_APK_COMMAND} ${STL_CHOSEN} ${RELEASE_TYPE} ${OUT_FOLDER} ${ANDROID_FOLDER}
|
||||
|
@ -1,11 +1,9 @@
|
||||
#!/bin/sh
|
||||
|
||||
SFML_FOLDER=$1
|
||||
ARCH_CHOSEN=$2
|
||||
STL_CHOSEN=$3
|
||||
RELEASE_TYPE=$4
|
||||
OUT_FOLDER=$5
|
||||
ANDROID_FOLDER=$6
|
||||
STL_CHOSEN=$1
|
||||
RELEASE_TYPE=$2
|
||||
OUT_FOLDER=$3
|
||||
ANDROID_FOLDER=$4
|
||||
GRADLE_FLAGS=""
|
||||
|
||||
add_to_gradle_flags()
|
||||
@ -19,10 +17,7 @@ to_lower()
|
||||
echo "$1" | tr '[:upper:]' '[:lower:]'
|
||||
}
|
||||
|
||||
(cd ${SFML_FOLDER} ; mkdir -p build/${ARCH_CHOSEN})
|
||||
(cd ${SFML_FOLDER}/build/${ARCH_CHOSEN} ; cmake -DCMAKE_SYSTEM_NAME=Android -DCMAKE_ANDROID_NDK=${ANDROID_NDK_HOME} -DCMAKE_ANDROID_ARCH_ABI=${ARCH_CHOSEN} -DCMAKE_ANDROID_STL_TYPE=${STL_CHOSEN} -DCMAKE_BUILD_TYPE=${RELEASE_TYPE} ../.. ; make ; make install)
|
||||
add_to_gradle_flags NDK_VERSION=${ANDROID_NDK_VERSION}
|
||||
add_to_gradle_flags ARCH_ABI=${ARCH_CHOSEN}
|
||||
add_to_gradle_flags TARGET_SDK=${ANDROID_SDK_VERSION}
|
||||
add_to_gradle_flags STL_TYPE=${STL_CHOSEN}
|
||||
LOWER_RELEASE_TYPE=$(to_lower $RELEASE_TYPE)
|
15
docker-scripts/docker_build_android_libraries
Normal file
15
docker-scripts/docker_build_android_libraries
Normal file
@ -0,0 +1,15 @@
|
||||
#!/bin/sh
|
||||
|
||||
LIBUSB_FOLDER=$1
|
||||
SFML_FOLDER=$2
|
||||
STL_CHOSEN=$3
|
||||
RELEASE_TYPE=$4
|
||||
|
||||
BUILD_SINGLE_ARCH_SFML_COMMAND=docker-scripts/docker_build_android_sfml_single_arch
|
||||
|
||||
(cd ${LIBUSB_FOLDER}/android/jni ; ndk-build APP_PLATFORM=${ANDROID_SDK_VERSION} ; mkdir -p ${ANDROID_NDK_HOME}/sources/third_party/libusb/include ; cp -r ../libs/ ${ANDROID_NDK_HOME}/sources/third_party/libusb ; cp -r ../../libusb ${ANDROID_NDK_HOME}/sources/third_party/libusb/include)
|
||||
|
||||
${BUILD_SINGLE_ARCH_SFML_COMMAND} ${SFML_FOLDER} armeabi-v7a ${STL_CHOSEN} ${RELEASE_TYPE}
|
||||
${BUILD_SINGLE_ARCH_SFML_COMMAND} ${SFML_FOLDER} arm64-v8a ${STL_CHOSEN} ${RELEASE_TYPE}
|
||||
${BUILD_SINGLE_ARCH_SFML_COMMAND} ${SFML_FOLDER} x86 ${STL_CHOSEN} ${RELEASE_TYPE}
|
||||
${BUILD_SINGLE_ARCH_SFML_COMMAND} ${SFML_FOLDER} x86_64 ${STL_CHOSEN} ${RELEASE_TYPE}
|
9
docker-scripts/docker_build_android_sfml_single_arch
Normal file
9
docker-scripts/docker_build_android_sfml_single_arch
Normal file
@ -0,0 +1,9 @@
|
||||
#!/bin/sh
|
||||
|
||||
SFML_FOLDER=$1
|
||||
ARCH_CHOSEN=$2
|
||||
STL_CHOSEN=$3
|
||||
RELEASE_TYPE=$4
|
||||
|
||||
(cd ${SFML_FOLDER} ; mkdir -p build/${ARCH_CHOSEN})
|
||||
(cd ${SFML_FOLDER}/build/${ARCH_CHOSEN} ; cmake -DCMAKE_SYSTEM_NAME=Android -DCMAKE_ANDROID_NDK=${ANDROID_NDK_HOME} -DCMAKE_ANDROID_ARCH_ABI=${ARCH_CHOSEN} -DCMAKE_ANDROID_STL_TYPE=${STL_CHOSEN} -DCMAKE_BUILD_TYPE=${RELEASE_TYPE} ../.. ; make ; make install)
|
@ -2,6 +2,15 @@
|
||||
#include <thread>
|
||||
#include <mutex>
|
||||
|
||||
#ifdef SFML_SYSTEM_ANDROID
|
||||
// These headers are only needed for direct NDK/JDK interaction
|
||||
#include <android/native_activity.h>
|
||||
#include <jni.h>
|
||||
// Since we want to get the native activity from SFML, we'll have to use an
|
||||
// extra header here:
|
||||
#include <SFML/System/NativeActivity.hpp>
|
||||
#endif
|
||||
|
||||
static bool usb_initialized = false;
|
||||
static libusb_context* usb_ctx = NULL; // libusb session context
|
||||
static int usb_thread_registered = 0;
|
||||
@ -11,6 +20,14 @@ std::mutex usb_thread_mutex;
|
||||
void usb_init() {
|
||||
if(usb_initialized)
|
||||
return;
|
||||
#ifdef SFML_SYSTEM_ANDROID
|
||||
// First we'll need the native activity handle
|
||||
ANativeActivity& activity = *sf::getNativeActivity();
|
||||
// Retrieve the JVM and JNI environment
|
||||
JavaVM& vm = *activity.vm;
|
||||
JNIEnv& env = *activity.env;
|
||||
libusb_set_option(usb_ctx, LIBUSB_OPTION_ANDROID_JAVAVM, &vm);
|
||||
#endif
|
||||
int result = libusb_init(&usb_ctx); // open session
|
||||
if (result < 0) {
|
||||
usb_ctx = NULL;
|
||||
|
Loading…
Reference in New Issue
Block a user