mirror of
https://github.com/Lorenzooone/cc3dsfs.git
synced 2025-06-19 00:55:38 -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 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 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 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")
|
val STL_TYPE by extra(project.properties["STL_TYPE"] as? String ?: "c++_shared")
|
||||||
@ -19,9 +18,7 @@ android {
|
|||||||
targetSdk = TARGET_SDK
|
targetSdk = TARGET_SDK
|
||||||
versionCode = 1
|
versionCode = 1
|
||||||
versionName = "1.0"
|
versionName = "1.0"
|
||||||
ndk {
|
|
||||||
abiFilters.add(ARCH_ABI)
|
|
||||||
}
|
|
||||||
externalNativeBuild {
|
externalNativeBuild {
|
||||||
cmake {
|
cmake {
|
||||||
arguments.add("-DCMAKE_SYSTEM_NAME=Android")
|
arguments.add("-DCMAKE_SYSTEM_NAME=Android")
|
||||||
@ -36,6 +33,17 @@ android {
|
|||||||
proguardFiles(getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro")
|
proguardFiles(getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
bundle {
|
||||||
|
language {
|
||||||
|
enableSplit = false
|
||||||
|
}
|
||||||
|
density {
|
||||||
|
enableSplit = false
|
||||||
|
}
|
||||||
|
abi {
|
||||||
|
enableSplit = true
|
||||||
|
}
|
||||||
|
}
|
||||||
externalNativeBuild {
|
externalNativeBuild {
|
||||||
cmake {
|
cmake {
|
||||||
path("../../CMakeLists.txt")
|
path("../../CMakeLists.txt")
|
||||||
|
@ -2,9 +2,12 @@
|
|||||||
|
|
||||||
SFML_EXTRACTED_TO_FOLDER=~
|
SFML_EXTRACTED_TO_FOLDER=~
|
||||||
LIBUSB_EXTRACTED_TO_FOLDER=~
|
LIBUSB_EXTRACTED_TO_FOLDER=~
|
||||||
SFML_EXTRACTED_FOLDER=${SFML_EXTRACTED_TO_FOLDER}/SFML-master
|
SFML_BRANCH_NAME=master
|
||||||
LIBUSB_EXTRACTED_FOLDER=${LIBUSB_EXTRACTED_TO_FOLDER}/libusb-master
|
LIBUSB_BRANCH_NAME=android-rebase-2022-07
|
||||||
BUILD_ARCH_COMMAND=docker-scripts/docker_build_android_single_arch
|
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
|
STL_CHOSEN=c++_static
|
||||||
RELEASE_TYPE=Debug
|
RELEASE_TYPE=Debug
|
||||||
@ -13,8 +16,9 @@ ANDROID_FOLDER=android
|
|||||||
|
|
||||||
export LANG=C.UTF-8
|
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 ${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 master.zip ; wget https://github.com/libusb/libusb/archive/refs/heads/master.zip ; unzip master.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)
|
||||||
(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_LIBS_COMMAND} ${LIBUSB_EXTRACTED_FOLDER} ${SFML_EXTRACTED_FOLDER} ${STL_CHOSEN} ${RELEASE_TYPE}
|
||||||
${BUILD_ARCH_COMMAND} ${SFML_EXTRACTED_FOLDER} arm64-v8a ${STL_CHOSEN} ${RELEASE_TYPE} ${OUT_FOLDER} ${ANDROID_FOLDER}
|
|
||||||
|
${BUILD_APK_COMMAND} ${STL_CHOSEN} ${RELEASE_TYPE} ${OUT_FOLDER} ${ANDROID_FOLDER}
|
||||||
|
@ -1,11 +1,9 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
SFML_FOLDER=$1
|
STL_CHOSEN=$1
|
||||||
ARCH_CHOSEN=$2
|
RELEASE_TYPE=$2
|
||||||
STL_CHOSEN=$3
|
OUT_FOLDER=$3
|
||||||
RELEASE_TYPE=$4
|
ANDROID_FOLDER=$4
|
||||||
OUT_FOLDER=$5
|
|
||||||
ANDROID_FOLDER=$6
|
|
||||||
GRADLE_FLAGS=""
|
GRADLE_FLAGS=""
|
||||||
|
|
||||||
add_to_gradle_flags()
|
add_to_gradle_flags()
|
||||||
@ -19,10 +17,7 @@ to_lower()
|
|||||||
echo "$1" | tr '[:upper:]' '[: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 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 TARGET_SDK=${ANDROID_SDK_VERSION}
|
||||||
add_to_gradle_flags STL_TYPE=${STL_CHOSEN}
|
add_to_gradle_flags STL_TYPE=${STL_CHOSEN}
|
||||||
LOWER_RELEASE_TYPE=$(to_lower $RELEASE_TYPE)
|
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 <thread>
|
||||||
#include <mutex>
|
#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 bool usb_initialized = false;
|
||||||
static libusb_context* usb_ctx = NULL; // libusb session context
|
static libusb_context* usb_ctx = NULL; // libusb session context
|
||||||
static int usb_thread_registered = 0;
|
static int usb_thread_registered = 0;
|
||||||
@ -11,6 +20,14 @@ std::mutex usb_thread_mutex;
|
|||||||
void usb_init() {
|
void usb_init() {
|
||||||
if(usb_initialized)
|
if(usb_initialized)
|
||||||
return;
|
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
|
int result = libusb_init(&usb_ctx); // open session
|
||||||
if (result < 0) {
|
if (result < 0) {
|
||||||
usb_ctx = NULL;
|
usb_ctx = NULL;
|
||||||
|
Loading…
Reference in New Issue
Block a user