@@ -66,6 +66,11 @@ The SDK uses CMake for C++ compilation and Gradle for Android-specific parts.
66
66
(replace ` firebase_analytics ` with the desired library).
67
67
Or omit the entire ` --target ` parameter to build all targets.
68
68
69
+ For development, building specific targets
70
+ (e.g., ` cmake --build . --target firebase_app ` ) is generally faster and
71
+ recommended once CMake configuration is complete. The full build
72
+ (` cmake --build . ` ) can be very time-consuming.
73
+
69
74
You can also use the ` scripts/gha/build_desktop.py ` script to build the full
70
75
desktop SDK.
71
76
@@ -88,17 +93,21 @@ generated in each library's build directory (e.g.,
88
93
You can build the entire SDK for Android by running ` ./gradlew build ` or
89
94
` build_scripts/android/build.sh ` .
90
95
91
- ### Desktop Platform Setup Details
96
+ #### Troubleshooting Desktop Builds
92
97
93
- When setting up for desktop, if you are using an iOS
94
- ` GoogleService-Info.plist ` file, convert it to the required
95
- ` google-services-desktop.json ` using the script:
96
- ` python generate_xml_from_google_services_json.py --plist -i GoogleService-Info.plist `
97
- (run this from the script's directory, ensuring the plist file is accessible) .
98
+ * Linux: ** Missing ` libsecret-1-dev ` ** :
99
+ CMake configuration may fail if ` libsecret-1-dev ` is not installed.
100
+ The ` scripts/gha/install_prereqs_desktop.py ` script should handle this.
101
+ If it doesn't, or if the package is removed, you might need to install it
102
+ manually: ` sudo apt-get update && sudo apt-get install -y libsecret-1-dev ` .
98
103
99
- The desktop SDK searches for configuration files in the current working
100
- directory, first for ` google-services-desktop.json ` , then for
101
- ` google-services.json ` .
104
+ * Linux: ** LevelDB Patch Failure when building Firestore** :
105
+ If you are building the SDK with Firestore enabled
106
+ (` -DFIREBASE_INCLUDE_FIRESTORE=ON ` , which is the default for desktop) and
107
+ encounter a patch error related to ` leveldb-1.23_windows_paths.patch ` (e.g.,
108
+ ` util/env_windows.cc: patch does not apply ` ), you can ignore this issue if
109
+ it does not prevent the rest of the build from running. The patch is only
110
+ important on Windows.
102
111
103
112
Common system library dependencies for desktop:
104
113
* ** Windows** : Common dependencies include ` advapi32.lib ` , ` ws2_32.lib ` ,
@@ -109,6 +118,9 @@ Common system library dependencies for desktop:
109
118
* ** Linux** : Common dependencies include ` pthread ` (system library). When
110
119
using GCC 5+, define ` -D_GLIBCXX_USE_CXX11_ABI=0 ` .
111
120
121
+ On all desktop platforms, building with -DFIREBASE_USE_BORINGSSL=YES can help
122
+ bypass any OpenSSL dependency issues.
123
+
112
124
## Including the SDK in Projects
113
125
114
126
### CMake Projects
@@ -151,18 +163,10 @@ coverage within the integration tests.
151
163
(e.g., Firestore, Auth) are typically located in the ` integration_test/ `
152
164
directory within that product's module (e.g.,
153
165
` firestore/integration_test/ ` ).
154
- * ** Test Scripts** : The root of the repository contains scripts for running
155
- tests on various platforms, such as:
156
- * ` test_windows_x32.bat `
157
- * ` test_windows_x64.bat `
158
- * ` test_linux.sh `
159
- * ` test_mac_x64.sh `
160
- * ` test_mac_ios.sh `
161
- * ` test_mac_ios_simulator.sh `
162
-
163
- These scripts typically build the SDKs and then execute the relevant tests
164
- (primarily integration tests) via CTest or other platform-specific test
165
- runners.
166
+
167
+ Because building integration tests requires internal google-services files,
168
+ Jules cannot do it in its environment; instead, we rely on GitHub Actions's
169
+ Integration Test workflow to build and run the integration tests.
166
170
167
171
## Writing Tests
168
172
0 commit comments