ashampoosystems / boden Goto Github PK
View Code? Open in Web Editor NEWPurely native C++ cross-platform GUI framework for Android and iOS development. https://www.boden.io
License: Other
Purely native C++ cross-platform GUI framework for Android and iOS development. https://www.boden.io
License: Other
Try to run this command
python ./boden.py -d open -t bodendemo
got ...
[2020-04-23 14:18:47,043](bauerargparser): Bauer options: Namespace(accept_terms=False, arch=None, build_folder=None, build_system=None, cmake_option=None, command='open', config=None, debug=False, macos_min_version=None, macos_sdk_path=None, package_folder=None, package_generator=None, platform=None, target='bodendemo')
[2020-04-23 14:18:47,043](cmake): CMake found at: C:\Program Files\CMake\bin\cmake.exe
[2020-04-23 14:18:47,043](cmake): CMake found at: C:\Program Files\CMake\bin\cmake.exe
[2020-04-23 14:18:47,043](commandprocessor): Starting command: open
[2020-04-23 14:18:47,059](buildfolder): Existing configurations:
[2020-04-23 14:18:47,059](commandprocessor): Selected platform list:
[2020-04-23 14:18:47,059](commandprocessor): Defaulting to: android - AndroidStudio
[2020-04-23 14:18:47,059](commandprocessor): Build system does not match the one used when the projects for this platform were first prepared. Cleaning existing build files.
[2020-04-23 14:18:47,059](commandprocessor): (No previous state found)
[2020-04-23 14:18:47,059](commandprocessor): New config: BuildConfiguration(platform='android', arch='std', buildsystem='AndroidStudio', config=None)
[2020-04-23 14:18:47,293](commandprocessor): Preparing c:\code\projects\podlite\boden\build\android\std\AndroidStudio
[2020-04-23 14:18:47,293](androidexecutor): Preparing android environment...
[2020-04-23 14:18:47,293](androidexecutor): Ensuring that all necessary android packages are installed...
Warning: File C:\Users\André\.android\repositories.cfg could not be loaded.
Warning: File C:\Users\André\.android\repositories.cfg could not be loaded.
Warning: File C:\Users\André\.android\repositories.cfg could not be loaded.
[=======================================] 100% Computing updates...
[2020-04-23 14:18:53,927](androidexecutor): Done updating packages.
[2020-04-23 14:18:53,951](gradle): No system gradle found, using own...
[2020-04-23 14:18:53,953](gradle): Calling c:\code\projects\podlite\boden\3rdparty_build\gradle\gradle-5.3.1\bin\gradle.bat --stop
No Gradle daemons are running.
[2020-04-23 14:18:55,729](cmake): Server Protocol version: [1, 2]
[2020-04-23 14:18:55,744](cmake): VERSION: 3.17.1
[2020-04-23 14:18:55,744](androidexecutor): Starting configure ...
[2020-04-23 14:18:55,744](androidexecutor): Arguments: ['-DCMAKE_TOOLCHAIN_FILE=C:/AndroidSdk/ndk-bundle/build/cmake/android.toolchain.cmake', '-DCMAKE_SYSTEM_NAME=Android', '-DANDROID_ABI=x86', '-DANDROID_NATIVE_API_LEVEL=28', '-DBAUER_RUN=Yes', '-DCMAKE_MAKE_PROGRAM=C:/AndroidSdk/ndk-bundle/prebuilt/windows-x86_64/bin/make.exe']
[2020-04-23 14:18:55,744](androidexecutor): Generator: Unix Makefiles
[2020-04-23 14:18:55,744](cmake): Configuring ...
-- Check for working C compiler: C:/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/windows-x86_64/bin/clang.exe
-- Check for working C compiler: C:/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/windows-x86_64/bin/clang.exe - works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: C:/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/windows-x86_64/bin/clang++.exe
-- Check for working CXX compiler: C:/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/windows-x86_64/bin/clang++.exe - works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Boden platform:
-- Name: android
-- Family: posix
-- Boden configuration:
-- Uses foundation kit: No
-- Uses java: Yes
-- Force shared: Yes
-- Force static: No
-- Found PythonInterp: C:/Python27/python.exe (found version "2.7.14")
-- Using the single-header code from C:/code/projects/podlite/boden/3rdparty/json/single_include/
-- CMake Warning (dev) at 3rdparty/googletest/CMakeLists.txt:3 (project):
Policy CMP0048 is not set: project() command manages VERSION variables.
Run "cmake --help-policy CMP0048" for policy details. Use the cmake_policy
command to set the policy and suppress this warning.
The following variable(s) would be set to empty:
PROJECT_VERSION
PROJECT_VERSION_MAJOR
PROJECT_VERSION_MINOR
PROJECT_VERSION_PATCH
This warning is for project developers. Use -Wno-dev to suppress it.
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Failed
-- Looking for pthread_create in pthreads
-- Looking for pthread_create in pthreads - not found
-- Looking for pthread_create in pthread
-- Looking for pthread_create in pthread - not found
-- Check if compiler accepts -pthread
-- Check if compiler accepts -pthread - yes
-- Found Threads: TRUE
-- Boden library configuration:
-- Shared: Off
-- Architecture: 32 bit
-- Performing Test HAS_STD_FILESYSTEM
-- Performing Test HAS_STD_FILESYSTEM - Failed
-- Including custom std::filesystem implementation
-- Package name: boden-0.3.0-android-x86-28-%BUILD_TYPE%-Clang
-- Configuring done
-- CMake Deprecation Warning:
The 'cmake-server(7)' is deprecated. Please port clients to use the
'cmake-file-api(7)' instead.
[2020-04-23 14:19:08,026](cmake): Done.
[2020-04-23 14:19:08,028](cmake): Generating ...
-- Generating done
[2020-04-23 14:19:10,055](cmake): Comparing: c:\code\projects\podlite\boden
[2020-04-23 14:19:10,055](cmake): with: C:\code\projects\podlite\boden
[2020-04-23 14:19:10,055](cmake): with: C:\code\projects\podlite\boden\3rdparty\googletest\googlemock
[2020-04-23 14:19:10,055](cmake): with: C:\code\projects\podlite\boden\3rdparty\googletest
[2020-04-23 14:19:10,055](cmake): with: C:\code\projects\podlite\boden\3rdparty\googletest\googletest
[2020-04-23 14:19:10,055](cmake): with: C:\code\projects\podlite\boden\3rdparty\json
Traceback (most recent call last):
File "c:\code\projects\podlite\boden\./bauer\bauer.py", line 71, in main
return run(argv)
File "c:\code\projects\podlite\boden\./bauer\bauer.py", line 67, in run
commandProcessor.process()
File "c:\code\projects\podlite\boden\./bauer\commandprocessor.py", line 119, in process
self.prepare(configuration, platformState)
File "c:\code\projects\podlite\boden\./bauer\commandprocessor.py", line 133, in prepare
self.androidExecutor.prepare(platformState, configuration, self.args)
File "c:\code\projects\podlite\boden\./bauer\androidexecutor.py", line 113, in prepare
self.prepareAndroidStudio(platformState, configuration, androidAbi, androidHome, buildDir, args)
File "c:\code\projects\podlite\boden\./bauer\androidexecutor.py", line 207, in prepareAndroidStudio
project = config["main-project"]
KeyError: 'main-project'
I had also another problem the build was pointing to windows-x86_64
folder but on the new ndk it is just windows
I really like your approach to developing pure native C++ mobile applications. I searched a lot and finally found Boden.
I have a question, How to build a sample project using MSVC?
Hello dear boden team
I am very interested in boden framework but due to a lack of resources and statements from friends and relatives, I have become discouraged by boden framework .
My friends at the university and around me tell me that with boden framework you can not implement and develop advanced UIs for mobile devices and you should use flutter and react native for advanced UIs, for example, UIs such as the link below can not be used. Implemented in boden framework :
https://search.muz.li/YzA3M2MwZTAy
and
https://search.muz.li/ZjcyYjQ1Yzhl
so can i implement like this ui with boden framework ?and how?
and I have some question:
can I use other api with other language like python for backend?
Please answer all my questions and guide me
I think this would open up an even wider space as other non C++ languages can then bind to your library to write cross platform UIs.
Hello, can not start boden app on Windows machine
I want to access NativeInit::baseInit from outside package.
Would you like to add public
?
static void baseInit(String nativeLibName)
{
if(!mBaseInitialized)
{
System.loadLibrary(nativeLibName);
mBaseInitialized = true;
}
}
I followed the instructions to setup boden on Fedora.
I get an error when I try to open the demo project :
[2019-07-13 12:05:48,320] Defaulting to: android - AndroidStudio
[2019-07-13 12:05:48,320] Build system does not match the one used when the projects for this platform were first prepared. Cleaning existing build files.
[2019-07-13 12:05:48,335] Preparing /data/dimitri/gits/boden/build/android/std/AndroidStudio
[2019-07-13 12:05:48,335] Preparing android environment...
[2019-07-13 12:05:48,335] Ensuring that all necessary android packages are installed...
Warning: File /home/dimitri/.android/repositories.cfg could not be loaded.
Warning: File /home/dimitri/.android/repositories.cfg could not be loaded.
[=======================================] 100% Computing updates...
[2019-07-13 12:05:52,158] Done updating packages.
No Gradle daemons are running.
[2019-07-13 12:05:52,808] Configuring ...
-- Check for working C compiler: /home/dimitri/Android/Sdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang
-- Check for working C compiler: /home/dimitri/Android/Sdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /home/dimitri/Android/Sdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang++
-- Check for working CXX compiler: /home/dimitri/Android/Sdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Boden platform:
-- Name: android
-- Family: posix
-- Boden configuration:
-- Uses foundation kit: No
-- Uses java: Yes
-- Force shared: Yes
-- Force static: No
-- clang-format was not found!
-- Found PythonInterp: /usr/bin/python (found version "2.7.16")
-- Using the single-header code from /home/dimitri/gits/boden/3rdparty/json/single_include/
-- CMake Warning (dev) at 3rdparty/googletest/CMakeLists.txt:3 (project):
Policy CMP0048 is not set: project() command manages VERSION variables.
Run "cmake --help-policy CMP0048" for policy details. Use the cmake_policy
command to set the policy and suppress this warning.The following variable(s) would be set to empty:
PROJECT_VERSION PROJECT_VERSION_MAJOR PROJECT_VERSION_MINOR PROJECT_VERSION_PATCH
This warning is for project developers. Use -Wno-dev to suppress it.
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Looking for pthread_create
-- Looking for pthread_create - found
-- Found Threads: TRUE
-- Boden library configuration:
-- Shared: Off
-- Architecture: 32 bit
-- Package name: boden-0.2.0-android-x86-28-%BUILD_TYPE%-Clang
-- Configuring done
[2019-07-13 12:05:54,270] Done.
[2019-07-13 12:05:54,270] Generating ...
-- Generating done
Traceback (most recent call last):
File "/data/dimitri/gits/boden/./bauer/bauer.py", line 66, in main
return run(argv)
File "/data/dimitri/gits/boden/./bauer/bauer.py", line 62, in run
commandProcessor.process()
File "/data/dimitri/gits/boden/./bauer/commandprocessor.py", line 119, in process
self.prepare(configuration, platformState)
File "/data/dimitri/gits/boden/./bauer/commandprocessor.py", line 133, in prepare
self.androidExecutor.prepare(platformState, configuration, self.args)
File "/data/dimitri/gits/boden/./bauer/androidexecutor.py", line 84, in prepare
self.prepareAndroidStudio(platformState, configuration, androidAbi, androidHome, buildDir, args)
File "/data/dimitri/gits/boden/./bauer/androidexecutor.py", line 168, in prepareAndroidStudio
project = config["main-project"]
KeyError: 'main-project'
I tried both ./boden
and python boden
Do I have a dependency missing ?
I'm using Fedora 30.
Building the bodendemo with the latest version of Android Studio and the NDK (r20) results in the following error:
[50/129] Building CXX object framework/ui/CMakeFiles/ui.dir/src/Button.cpp.o
FAILED: framework/ui/CMakeFiles/ui.dir/src/Button.cpp.o
/home/hasse/Android/Sdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang++ --target=aarch64-none-linux-android23 --gcc-toolchain=/home/hasse/Android/Sdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64 --sysroot=/home/hasse/Android/Sdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -DBDN_HAS_NLOHMANN_JSON -DBDN_SHARED_LIB=1 -DUNICODE -D_UNICODE -Dui_EXPORTS -I../../../../../../../../../framework/ui/include -Iframework/ui/include -I../../../../../../../../../framework/foundation/include -Iframework/foundation/include -I../../../../../../../../../framework/foundation/platforms/android/include -I../../../../../../../../../3rdparty/json/single_include -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -fno-addrsig -Wa,--noexecstack -Wformat -Werror=format-security -frtti -fexceptions -std=c++17 -frtti -fexceptions -O0 -fno-limit-debug-info -fPIC -Werror -Wmost -std=gnu++17 -MD -MT framework/ui/CMakeFiles/ui.dir/src/Button.cpp.o -MF framework/ui/CMakeFiles/ui.dir/src/Button.cpp.o.d -o framework/ui/CMakeFiles/ui.dir/src/Button.cpp.o -c ../../../../../../../../../framework/ui/src/Button.cpp
In file included from ../../../../../../../../../framework/ui/src/Button.cpp:1:
In file included from ../../../../../../../../../framework/ui/include/bdn/ui/Button.h:4:
In file included from ../../../../../../../../../framework/ui/include/bdn/ui/ClickEvent.h:3:
In file included from ../../../../../../../../../framework/ui/include/bdn/ui/ViewEvent.h:3:
In file included from ../../../../../../../../../framework/ui/include/bdn/ui/View.h:3:
../../../../../../../../../3rdparty/json/single_include/nlohmann/json.hpp:1799:1: error: 'tuple_size' defined as a class template here but previously declared as a struct template [-Werror,-Wmismatched-tags]
class tuple_size<::nlohmann::detail::iteration_proxy_value<IteratorType>>
^
/home/hasse/Android/Sdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/c++/v1/__tuple:25:22: note: did you mean class here?
template <class _Tp> struct _LIBCPP_TEMPLATE_VIS tuple_size;
^
1 error generated.
It looks like something is broken with the --build-folder
option.
$ ./boden prepare --build-folder ./build2
[2019-08-19 21:24:57,146] Defaulting to: ios - Xcode
[2019-08-19 21:24:57,146] Build system does not match the one used when the projects for this platform were first prepared. Cleaning existing build files.
[2019-08-19 21:24:57,160] Preparing ./build2/ios/std/Xcode
[2019-08-19 21:24:57,189] Configuring ...
-- The C compiler identification is unknown
-- CMake Error: Could not find cmake module file: ./build2/ios/std/Xcode/CMakeFiles/3.12.3/CMakeCCompiler.cmake
-- The CXX compiler identification is unknown
-- CMake Error: Could not find cmake module file: ./build2/ios/std/Xcode/CMakeFiles/3.12.3/CMakeCXXCompiler.cmake
-- CMake Error at CMakeLists.txt:14 (project):
No CMAKE_C_COMPILER could be found.
-- CMake Error at CMakeLists.txt:14 (project):
No CMAKE_CXX_COMPILER could be found.
-- Configuring incomplete, errors occurred!
See also "./build2/ios/std/Xcode/CMakeFiles/CMakeOutput.log".
See also "./build2/ios/std/Xcode/CMakeFiles/CMakeError.log".
Traceback (most recent call last):
File "/Users/duncan/Projects/boden_build/./bauer/bauer.py", line 71, in main
return run(argv)
File "/Users/duncan/Projects/boden_build/./bauer/bauer.py", line 67, in run
commandProcessor.process()
File "/Users/duncan/Projects/boden_build/./bauer/commandprocessor.py", line 91, in process
self.prepare(configuration, platformState);
File "/Users/duncan/Projects/boden_build/./bauer/commandprocessor.py", line 135, in prepare
self.buildExecutor.prepare(platformState, configuration, self.args)
File "/Users/duncan/Projects/boden_build/./bauer/buildexecutor.py", line 155, in prepare
self.cmake.configure(cmakeArguments)
File "/Users/duncan/Projects/boden_build/./bauer/cmake.py", line 92, in configure
self.waitForResult("configure", "CONFIGURE")
File "/Users/duncan/Projects/boden_build/./bauer/cmake.py", line 83, in waitForResult
raise Exception("Error occured during configure:", payload["errorMessage"])
Exception: ('Error occured during configure:', 'Configuration failed.')
Any ideas?
Doing ./boden prepare --build-folder $(pwd)/build2
seems to work fine for some reason.
..../boden/framework/foundation/platforms/foundationkit/filesystem/include/filesystem:291:8: Redefinition of '_FilesystemClock'
Hello! I heard about Boden on Cppcast (https://cppcast.com/marcus-tobias/), and it sounds really cool! :)
I love the idea of a pure C++ library that embraces modern C++, and provides native UIs for the target environments. To me, this is the right solution for building UIs in C++, so all my best wishes and support! :)
This issue is a proposal to support a key feature of C++ that has, as far as I know, never been well supported in a widely used C++ GUI framework: native C++ exception handling.
TL;DR: My 2013 (😅) undergraduate honors thesis proposes a mechanism to properly support user code throwing arbitrary exceptions in a C++ application framework, and I believe this work could be easily added to Boden! The idea is essentially to have user code dynamically register exception handlers by exception type, and have the framework implement a central handler function that matches the caught exception to the correct handler. This solution places minimal burden on the app developer.
Boden is attempting to be a modern C++17 GUI framework, and good, modern C++ code often throws exceptions, so I think having a great story around exception handling would be really neat.
The paper can be found here:
"Dynamically Registering C++ Exception Handlers: Centralized Handling of C++ Exceptions in Application Framework Libraries"
https://deepblue.lib.umich.edu/handle/2027.42/102769
Unfortunately, this was my first academic paper, so it is quite rambly. Sorry about that! You might enjoy simply scanning the code in the Appendix, which contains a simple example implementation of this idea.
I wasn't able to find any information on exception handling in your documentation, so I might be mistaken, but glancing through the source code I think these ideas could be relevant. Boden is slightly less of an easy candidate for this than other C++ gui frameworks could be, because the main application run-loop (a convenient place to put the exception handling) isn't in your code; it's of course instead in either Apple's or Android's code. However, by placing try
/catch
wrappers around a few key callback points in the Boden code, I think this could still be valuable.
The goal of the work in the paper is to prevent users from having to repeat their exception-handling boiler-plate across every one of their callbacks. For example, a purely custom-written terminal UI application might have code that looks like this:
int main() {
while (true) { // loop forever until the program exits
try {
auto cmd = read_user_input_cmd();
if (cmd == ACTION__X) {
do_x_action(read_x_input());
} else if (/* ... */) { /* ... */ }
// ...
} catch (const BadInputException& e) {
cout << "Error: Got bad input `" << e.got << "`, expected `" << e.expected << "`." << endl;
} catch (/*...*/) { /*...*/ }
}
return 0;
}
But for a GUI program, where the developer is implementing callbacks to hook-up their functionality to GUI actions, there is no central place for the developer to put the exception handlers, so they may have to repeat that handling logic across many different callbacks, which is especially annoying if there are several different types that the developer wants to handle.
The paper essentially proposes having developers dynamically register exception handlers per-exception-type with the GUI framework, which the framework can then match exceptions against whenever an exception escapes user code. The crux of this approach relies on a somewhat weird trick where the GUI framework's handler repeatedly rethrow
s the exception in a new try
-block, where it can be caught by the user's registered dynamic handlers.
It's essentially taking advantage of this (somewhat surprising) behavior:
try {
throw /* ...Something... */; // 0. exception object is allocated here.
}
catch(...) {
// 1. From here, the exception type is unknown.
try { // 2. so we enter a new try-block to try again to find a good handler.
throw; // 3. rethrow the exception (the runtime still know's the exceptions type even though code in this `...` block doesn't have access to it.)
}
catch(A &e) {
// 4. the original exception was of type A.
}
catch(B &e) {
// 5. the original exception was of type B.
}
catch(...) {
// 6. we still do not know the type of the exception.
}
} // 7. the exception object is deallocated here.
The only addition is that you repeat this try
/re-throw
/catch
sequence in a loop, once for each dynamically registered handler, calling their try_handle_exception
function, which is templated for the correct exception type.
AAAAAANNNNNYYYYYYYWAY, sorry for the long post! I just got excited when hearing about Boden in the podcast, and wanted to share the ideas in that paper because it's rare to find a relevant audience! 😊
Unfortunately, I'm not working on C++ much anymore these days (instead I'm working almost exclusively in julia, and I love it!) but i'm happy to chat with you about these ideas and/or maybe help you implement them in my spare time if it's something you're interested in!
Cheers! All the best,
~Nathan Daly
Hi guys,
When I run:
$ python boden.py open
I get this error:
[2019-05-30 22:02:56,335] Defaulting to: ios - Xcode
[2019-05-30 22:02:56,335] Build system does not match the one used when the projects for this platform were first prepared. Cleaning existing build files.
[2019-05-30 22:02:56,336] Preparing /Users/myusername/projects/games/boden/build/ios/std/Xcode
2019-05-30 22:02:56,352] Configuring ...
-- CMake Error:
Xcode 1.5 not supported.
Traceback (most recent call last):
File "/Users/myusername/projects/games/boden/./bauer/bauer.py", line 66, in main
return run(argv)
File "/Users/myusername/projects/games/boden/./bauer/bauer.py", line 62, in run
commandProcessor.process()
File "/Users/myusername/projects/games/boden/./bauer/commandprocessor.py", line 119, in process
self.prepare(configuration, platformState)
File "/Users/myusername/projects/games/boden/./bauer/commandprocessor.py", line 135, in prepare
self.buildExecutor.prepare(platformState, configuration, self.args)
File "/Users/myusername/projects/games/boden/./bauer/buildexecutor.py", line 155, in prepare
self.cmake.configure(cmakeArguments)
File "/Users/myusername/projects/games/boden/./bauer/cmake.py", line 92, in configure
self.waitForResult("configure", "CONFIGURE")
File "/Users/myusername/projects/games/boden/./bauer/cmake.py", line 83, in waitForResult
raise Exception("Error occured during configure:", payload["errorMessage"])
Exception: ('Error occured during configure:', u'Could not set up the requested combination of "generator" and "extraGenerator"')
I am really looking forward to play on this.
Thanks,
Jongi
Just tried the build - it worked and I managed to run the app on my phone. But when I tried out some menu items in the list and clicked back button to go back to the menu page I got this:
It seems that each item is still clickable and functional in that sense; it's just that all the labels are gone.
This guy => https://github.com/cboden
Dear Boden Team,
I installed all dependencies and tryed running the demo via python boden.py open -p android -t bodendemo
.
I got the following response:
Traceback (most recent call last): File "C:\Users\DR\Documents\boden\./bauer\bauer.py", line 71, in main return run(argv) File "C:\Users\DR\Documents\boden\./bauer\bauer.py", line 37, in run generatorInfo = GeneratorInfo(); File "C:\Users\DR\Documents\boden\./bauer\generatorinfo.py", line 23, in __init__ cmakeHelp = subprocess.check_output("\"" + self.cmakeExecutable + "\" --help", shell=True, universal_newlines=True, stderr=errOutFile ); File "C:\Program Files\Python310\lib\subprocess.py", line 420, in check_output return run(*popenargs, stdout=PIPE, timeout=timeout, check=True, File "C:\Program Files\Python310\lib\subprocess.py", line 503, in run stdout, stderr = process.communicate(input, timeout=timeout) File "C:\Program Files\Python310\lib\subprocess.py", line 1136, in communicate stdout = self.stdout.read() File "C:\Program Files\Python310\lib\encodings\cp1252.py", line 23, in decode return codecs.charmap_decode(input,self.errors,decoding_table)[0] UnicodeDecodeError: 'charmap' codec can't decode byte 0x81 in position 3: character maps to <undefined>
Has anyone else run into this? Any possible solution??
Hi,
Why did you decide to use bdn::newObject instead of smart pointers?
Thanks
I have a Windows 11 desktop with Visual Studio 2022, Android studio giraffe, and Java 18 installed. Here is my install output and environment list:
C:>cd boden
C:\boden>dir
Volume in drive C is OS
Volume Serial Number is 44F2-8796
Directory of C:\boden
10/04/2023 07:53 AM
.C:\boden>python boden.py open -p android -t bodendemo
[2023-10-04 08:48:37,152] Defaulting to: android - AndroidStudio
[2023-10-04 08:48:37,153] Preparing C:\boden\build\android\std\AndroidStudio
[2023-10-04 08:48:37,153] Android home directory automatically detected as: C:\Users\alwil/AppData/Local/Android/SDK
[2023-10-04 08:48:37,154] Preparing android environment...
[2023-10-04 08:48:37,154] Android home directory automatically detected as: C:\Users\alwil/AppData/Local/Android/SDK
[2023-10-04 08:48:37,155] Ensuring that all necessary android packages are installed...
[2023-10-04 08:48:37,155] Android home directory automatically detected as: C:\Users\alwil/AppData/Local/Android/SDK
[2023-10-04 08:48:37,155] Android home directory automatically detected as: C:\Users\alwil/AppData/Local/Android/SDK
Exception in thread "main" java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema
at com.android.repository.api.SchemaModule$SchemaModuleVersion.(SchemaModule.java:156)
at com.android.repository.api.SchemaModule.(SchemaModule.java:75)
at com.android.sdklib.repository.AndroidSdkHandler.(AndroidSdkHandler.java:81)
at com.android.sdklib.tool.sdkmanager.SdkManagerCli.main(SdkManagerCli.java:73)
at com.android.sdklib.tool.sdkmanager.SdkManagerCli.main(SdkManagerCli.java:48)
Caused by: java.lang.ClassNotFoundException: javax.xml.bind.annotation.XmlSchema
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)
... 5 more
Exception in thread "main" java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema
at com.android.repository.api.SchemaModule$SchemaModuleVersion.(SchemaModule.java:156)
at com.android.repository.api.SchemaModule.(SchemaModule.java:75)
at com.android.sdklib.repository.AndroidSdkHandler.(AndroidSdkHandler.java:81)
at com.android.sdklib.tool.sdkmanager.SdkManagerCli.main(SdkManagerCli.java:73)
at com.android.sdklib.tool.sdkmanager.SdkManagerCli.main(SdkManagerCli.java:48)
Caused by: java.lang.ClassNotFoundException: javax.xml.bind.annotation.XmlSchema
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)
... 5 more
[2023-10-04 08:48:37,548] Failed to get Android SDK module list
Exception in thread "main" java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema
at com.android.repository.api.SchemaModule$SchemaModuleVersion.(SchemaModule.java:156)
at com.android.repository.api.SchemaModule.(SchemaModule.java:75)
at com.android.sdklib.repository.AndroidSdkHandler.(AndroidSdkHandler.java:81)
at com.android.sdklib.tool.sdkmanager.SdkManagerCli.main(SdkManagerCli.java:73)
at com.android.sdklib.tool.sdkmanager.SdkManagerCli.main(SdkManagerCli.java:48)
Caused by: java.lang.ClassNotFoundException: javax.xml.bind.annotation.XmlSchema
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)
... 5 more
[2023-10-04 08:48:37,674] Failed getting emulator, you will not be able to 'run' this configuration
[2023-10-04 08:48:37,674] Done updating packages.
[2023-10-04 08:48:37,687] Downloading gradle...
[2023-10-04 08:48:40,455] Extracting gradle...
Welcome to Gradle 5.3.1!
Here are the highlights of this release:
For more details see https://docs.gradle.org/5.3.1/release-notes.html
No Gradle daemons are running.
CMake Error: CMake server mode has been removed in favor of the file-api.
Traceback (most recent call last):
File "C:\boden./bauer\bauer.py", line 71, in main
return run(argv)
^^^^^^^^^
File "C:\boden./bauer\bauer.py", line 67, in run
commandProcessor.process()
File "C:\boden./bauer\commandprocessor.py", line 119, in process
self.prepare(configuration, platformState)
File "C:\boden./bauer\commandprocessor.py", line 133, in prepare
self.androidExecutor.prepare(platformState, configuration, self.args)
File "C:\boden./bauer\androidexecutor.py", line 113, in prepare
self.prepareAndroidStudio(platformState, configuration, androidAbi, androidHome, buildDir, args)
File "C:\boden./bauer\androidexecutor.py", line 177, in prepareAndroidStudio
self.cmake.open(self.sourceDirectory, tmpCMakeFolder, "Unix Makefiles")
File "C:\boden./bauer\cmake.py", line 43, in open
raise Exception("Unknown failure, maybe cmake does not support server mode")
Exception: Unknown failure, maybe cmake does not support server mode
C:\boden>
C:\boden>set
ALLUSERSPROFILE=C:\ProgramData
APPDATA=C:\Users\alwil\AppData\Roaming
ChocolateyInstall=C:\ProgramData\chocolatey
ChocolateyLastPathUpdate=133190393482342123
CommonProgramFiles=C:\Program Files\Common Files
CommonProgramFiles(x86)=C:\Program Files (x86)\Common Files
CommonProgramW6432=C:\Program Files\Common Files
COMPUTERNAME=DESKTOP-I5GCG1F
ComSpec=C:\WINDOWS\system32\cmd.exe
DriverData=C:\Windows\System32\Drivers\DriverData
GTK_BASEPATH=C:\Program Files (x86)\GtkSharp\2.12
HOMEDRIVE=C:
HOMEPATH=\Users\alwil
IGCCSVC_DB=AQAAANCMnd8BFdERjHoAwE/Cl+sBAAAALqOvTDlzDkWZAxZc2lNHwQQAAAACAAAAAAAQZgAAAAEAACAAAACGpbJq7GlJRcDchrpePN/7CW5r/fRBuNWo2PQFnz4yBQAAAAAOgAAAAAIAACAAAADWaYcMnZYc4G/XduGRXjeteWO68OV/I0OG1aR47M6T8mAAAAApRb7sGR60ORQl4B2BxckA3SRNWAj+jXepm+VpcccxSE7/V1UDD9gXCVYpK/YPqyEWBWzkN+CxEyPPYBlOoUiJMUnoq6Ob1Vl2BttQrQkCBzCY3/bAkFkP/VLoP6I3wvhAAAAAGn5obCknlYwC4eHOBEDCJK4FQ6nsIEffUZOxkishPPptPiROMsTD7ljCLDcudQsYccaWmhpzXdPMOMB7DmdWZA==
JAVA_HOME=C:\Program Files\Java\jdk-17
LOCALAPPDATA=C:\Users\alwil\AppData\Local
LOGONSERVER=\DESKTOP-I5GCG1F
NUMBER_OF_PROCESSORS=16
OneDrive=C:\Users\alwil\OneDrive
OS=Windows_NT
Path=C:\Program Files\Common Files\Oracle\Java\javapath;C:\Program Files\Java\jdk-20;C:\Program Files\Java\jdk-20\bin;C:\VulkanSDK\1.3.246.1\Bin;C:\Python311\Scripts;C:\Python311;C:\Program Files\Microsoft\jdk-11.0.12.7-hotspot\bin;C:\Program Files\Microsoft\jdk-11.0.16.101-hotspot\bin;C:\Program Files\Python37\Scripts;C:\Program Files\Python37;C:\Program Files\Eclipse Foundation\jdk-8.0.302.8-hotspot\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0;C:\Windows\System32\OpenSSH;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files\NVIDIA Corporation\NVIDIA NvDLISR;C:\Program Files\Microsoft SQL Server\130\Tools\Binn;C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\170\Tools\Binn;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0;C:\WINDOWS\System32\OpenSSH;C:\Program Files\dotnet;C:\Program Files\Microsoft SQL Server\150\Tools\Binn;C:\Program Files\PuTTY;C:\Program Files (x86)\Microsoft SQL Server\150\Tools\Binn;C:\Program Files\Microsoft SQL Server\150\DTS\Binn;C:\Program Files (x86)\Microsoft SQL Server\150\DTS\Binn;C:\Program Files\Azure Data Studio\bin;C:\Program Files\TortoiseSVN\bin;C:\Program Files (x86)\Windows Kits\10\Windows Performance Toolkit;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0;C:\WINDOWS\System32\OpenSSH;C:\Program Files (x86)\Muse;C:\Program Files\Python37\Scripts;C:\Program Files (x86)\GtkSharp\2.12\bin;c:\Program Files (x86)\Microsoft SQL Server\90\Tools\binn;c:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn;c:\Program Files\Microsoft SQL Server\100\Tools\Binn;c:\Program Files\Microsoft SQL Server\100\DTS\Binn;C:\Program Files\nodejs;C:\ProgramData\chocolatey\bin;C:\Program Files\swipl\bin;C:\Program Files\Git\cmd;C:\arity;C:\arwutil;C:\Program Files\CMake\bin;D:\CWork\SDL2\SDL_BINS_64;C:\Program Files (x86)\IncrediBuild;C:\Users\alwil\AppData\Local\Microsoft\WindowsApps;C:\Users\alwil.dotnet\tools;C:\Program Files\JetBrains\PyCharm Community Edition 2022.2.3\bin;C:\Users\alwil\AppData\Roaming\npm
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC;.PY;.PYW
PROCESSOR_ARCHITECTURE=AMD64
PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 167 Stepping 1, GenuineIntel
PROCESSOR_LEVEL=6
PROCESSOR_REVISION=a701
ProgramData=C:\ProgramData
ProgramFiles=C:\Program Files
ProgramFiles(x86)=C:\Program Files (x86)
ProgramW6432=C:\Program Files
PROMPT=$P$G
PSModulePath=C:\Program Files\WindowsPowerShell\Modules;C:\WINDOWS\system32\WindowsPowerShell\v1.0\Modules;C:\Program Files (x86)\Microsoft SQL Server\150\Tools\PowerShell\Modules
PUBLIC=C:\Users\Public
PyCharm Community Edition=C:\Program Files\JetBrains\PyCharm Community Edition 2022.2.3\bin;
SDL_INCLUDES=D:\CWork\SDL2\SDL_INCLUDES
SDL_LIBS_64=D:\CWork\SDL2\SDL_LIBS_64
SystemDrive=C:
SystemRoot=C:\WINDOWS
TEMP=C:\Users\alwil\AppData\Local\Temp
TMP=C:\Users\alwil\AppData\Local\Temp
USERDOMAIN=DESKTOP-I5GCG1F
USERDOMAIN_ROAMINGPROFILE=DESKTOP-I5GCG1F
USERNAME=alwil
USERPROFILE=C:\Users\alwil
VK_SDK_PATH=C:\VulkanSDK\1.3.246.1
VS100COMNTOOLS=C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\Tools
VS80COMNTOOLS=C:\Program Files (x86)\Microsoft Visual Studio 8\Common7\Tools
VULKAN_SDK=C:\VulkanSDK\1.3.246.1
windir=C:\WINDOWS
ZES_ENABLE_SYSMAN=1
C:\boden>
Has there been any decisions made internally about what to do with this project going forward? There was a mention of it being re-licensed under something a little more permissive.
Hi,
I just downloaded boden framework to play around with it. My question is, roughly, if I would like to integrate with a mapping library like tangram-es (https://github.com/tangrams/tangram-es) or mapbox, what is the best way to do it using boden?
TIA.
Wouldn't MIT lead to more adoption.
It's a great idea for cross-platform apps, good 'ol C++ !
I followed the instructions to get started on MacOS. When I reached the point where the instruction was :
"In Xcode select the bodendemo target and press Cmd+R to build and run the example application."
I dont see the bodendemo target within the Bodendemo folder which is under Examples folder.
What shall I do?
I am using the conan package manager in my project and looking at boden for the mobile UI. I am struggling to get the cmake-conan module to work with boden, but it seems to get confused by the multi-build. Is there a recommended way to integrate 3rd party libraries into the project? Conan is nice because it seems to have support for Andriod and IOS, and is based on cmake.
I hope to use Boden for my projects but when I searched about GPL, I saw I can't use for commercial purposes with no-sourcecode-puplishing. I don't want to publish my sourcecode when I sell my programs. Can Boden Framework change the license? I want to see Boden as industry standard for C++ world.
Hi, I'm gettin error exception while running
python boden.py open -t bodendemo
or
python boden.py open -p android -t bodendemo
Error
raise Exception("Unknown failure, maybe cmake does not support server mode")
Exception: Unknown failure, maybe cmake does not support server mode
I also tried to add boden to local environment. The result are same.
System info:
Is this project active? There is neither any updates nor any roadmap.
How to move page one to other like presentViewController on ios
This framework was exactly what I was looking for. Standard C++ types well used. Qt and others are just old and don't feel very modern. However, desktop support is very important even today. Mobile can only do some much, those are dumb down devices with not much productivity for actual work. Please add support for desktop platforms such as Windows (possibly WinUI 2 or 3), macOS and Linux (possibility GTK).
I followed the commands to build my app, but the terminal spits this out at me:
CMake Error: CMake server mode has been removed in favor of the file-api.
Traceback (most recent call last):
File "/Users/kdn_fgc/boden/./bauer/bauer.py", line 71, in main
return run(argv)
File "/Users/kdn_fgc/boden/./bauer/bauer.py", line 67, in run
commandProcessor.process()
File "/Users/kdn_fgc/boden/./bauer/commandprocessor.py", line 119, in process
self.prepare(configuration, platformState)
File "/Users/kdn_fgc/boden/./bauer/commandprocessor.py", line 135, in prepare
self.buildExecutor.prepare(platformState, configuration, self.args)
File "/Users/kdn_fgc/boden/./bauer/buildexecutor.py", line 158, in prepare
self.cmake.open(self.sourceDirectory, cmakeBuildDir, generatorName, extraGeneratorName = "", extraEnv=cmakeEnvironment)
File "/Users/kdn_fgc/boden/./bauer/cmake.py", line 43, in open
raise Exception("Unknown failure, maybe cmake does not support server mode")
Exception: Unknown failure, maybe cmake does not support server mode
Please fix this issue. I'd do it myself, but I'm only a beginner.
I just cant seem to get the build to work again.
Cmake's updates have destroyed compilation.
Has anyone had a work round?
Regards,
Phillip
When I am trying to execute the following command on Linux Mint:
sudo apt update && sudo apt install git cmake ninja-build python python3-distutils openjdk-8-jdk qemu-kvm
Then I am getting following error message:
===========================================
Hit:1 http://archive.ubuntu.com/ubuntu jammy InRelease
Hit:2 http://security.ubuntu.com/ubuntu jammy-security InRelease
Get:3 http://archive.ubuntu.com/ubuntu jammy-updates InRelease [119 kB]
Ign:4 http://packages.linuxmint.com/ virginia InRelease
Hit:5 http://packages.linuxmint.com/ virginia Release
Hit:7 http://archive.ubuntu.com/ubuntu jammy-backports InRelease
Fetched 119 kB in 3s (36.2 kB/s)
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
6 packages can be upgraded. Run 'apt list --upgradable' to see them.
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Note, selecting 'qemu-system-x86' instead of 'qemu-kvm'
Package python is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or is only available from another source
However the following packages replace it:
2to3 python2-minimal:i386 python2:i386 python2-minimal python2
dh-python python-is-python3
Please guide me how to fix this problem.
I'm just wondering to what's your plans about some features like UI and animations of itself. As Boden evolves, will you make improvements to the application look in the future using ui libraries such as Material design?
I've downloaded the Cmake but when I tried to run demo project of Boden Framework, it shows an error:
C:\Users\yakup.kayabas\boden>python boden.py open -p android -t bodendemo
Traceback (most recent call last):
File "C:\Users\yakup.kayabas\boden./bauer\bauer.py", line 71, in main
return run(argv)
^^^^^^^^^
File "C:\Users\yakup.kayabas\boden./bauer\bauer.py", line 37, in run
generatorInfo = GeneratorInfo();
^^^^^^^^^^^^^^^
File "C:\Users\yakup.kayabas\boden./bauer\generatorinfo.py", line 11, in init
raise Exception("Couldn't find cmake executable. Please download and install it from www.cmake.org/download")
Exception: Couldn't find cmake executable. Please download and install it from 'www.cmake.org/download'
but like I said, I've downloaded and double checked the Cmake and Cmake's version that I have.
When generating a new project with boden new
and then boden open
the generated Xcode has no Launch storyboard. So when running the app the [UIScreen mainScreen] bounds]
returns a screen size of 320 x 480
attempting to run the example using boden.py throws an error saying it is unable to find ANDROID_HOME variable; after hardcoding the absolute path the .bat file fails and is unable to correctly create an android studio project. Could you guys maybe just provide a template with starting files already configured, instead of running a python script to create everyhting, especially if it is going to fail
android studio is so heavy
Be nice if there are some document about command line.
Hi. Is this repo up to date?
See: https://polly.readthedocs.io/en/latest/toolchains/ios/errors/polly_ios_development_team.html
For now I added the following to my CMakeLists.txt as a workaround:
# Based on: https://github.com/ruslo/polly/blob/c7462593865acbc0557fae6d461607a274dc6e36/utilities/polly_ios_development_team.cmake
string(COMPARE EQUAL "$ENV{BODEN_IOS_DEVELOPMENT_TEAM}" "" _is_empty)
if(_is_empty)
polly_fatal_error(
"Environment variable BODEN_IOS_DEVELOPMENT_TEAM is empty"
" (see details: http://polly.readthedocs.io/en/latest/toolchains/ios/errors/polly_ios_development_team.html)"
)
endif()
set(
CMAKE_XCODE_ATTRIBUTE_DEVELOPMENT_TEAM
"$ENV{BODEN_IOS_DEVELOPMENT_TEAM}"
)
Hi,
Is there any publicly published roadmap for this framework anywhere that I can look? Also I tried to join Boden's Google group but I got a response that the group doesn't exist?
Thanks.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.