Skip to content

Commit 1c2017e

Browse files
committed
Merge remote-tracking branch 'origin/master' into ghm
2 parents c960e39 + c13e40e commit 1c2017e

39 files changed

+370
-512
lines changed

Android/firebase_dependencies.gradle

+7-7
Original file line numberDiff line numberDiff line change
@@ -16,20 +16,20 @@ import org.gradle.util.ConfigureUtil;
1616

1717
// A map of library to the dependencies that need to be added for it.
1818
def firebaseDependenciesMap = [
19-
'app' : ['com.google.firebase:firebase-analytics:17.2.0'],
20-
'admob' : ['com.google.firebase:firebase-ads:18.2.0',
21-
'com.google.android.gms:play-services-measurement-sdk-api:17.2.0'],
22-
'analytics' : ['com.google.firebase:firebase-analytics:17.2.0'],
19+
'app' : ['com.google.firebase:firebase-analytics:17.2.1'],
20+
'admob' : ['com.google.firebase:firebase-ads:18.3.0',
21+
'com.google.android.gms:play-services-measurement-sdk-api:17.2.1'],
22+
'analytics' : ['com.google.firebase:firebase-analytics:17.2.1'],
2323
'auth' : ['com.google.firebase:firebase-auth:19.1.0'],
2424
'database' : ['com.google.firebase:firebase-database:19.2.0'],
2525
'dynamic_links' : ['com.google.firebase:firebase-dynamic-links:19.0.0'],
2626
'functions' : ['com.google.firebase:firebase-functions:19.0.1'],
27-
'instance_id' : ['com.google.firebase:firebase-iid:20.0.0'],
27+
'instance_id' : ['com.google.firebase:firebase-iid:20.0.1'],
2828
'invites' : ['com.google.firebase:firebase-invites:17.0.0'],
2929
// Messaging has an additional local dependency to include.
30-
'messaging' : ['com.google.firebase:firebase-messaging:20.0.0',
30+
'messaging' : ['com.google.firebase:firebase-messaging:20.0.1',
3131
'firebase_cpp_sdk.messaging:messaging_java'],
32-
'performance' : ['com.google.firebase:firebase-perf:19.0.1'],
32+
'performance' : ['com.google.firebase:firebase-perf:19.0.2'],
3333
'remote_config' : ['com.google.firebase:firebase-config:19.0.3'],
3434
'storage' : ['com.google.firebase:firebase-storage:19.1.0']
3535
]

CMakeLists.txt

+13-19
Original file line numberDiff line numberDiff line change
@@ -68,23 +68,6 @@ if(DEFINED ANDROID_NDK)
6868
set(ANDROID 1)
6969
endif()
7070

71-
if(DEFINED CMAKE_TOOLCHAIN_FILE AND NOT ANDROID)
72-
# Force using the toolchain file, as otherwise it loads it later in the
73-
# process, after several of the checks against it have failed.
74-
if(IS_ABSOLUTE ${CMAKE_TOOLCHAIN_FILE})
75-
message("Using Toolchain File: ${CMAKE_TOOLCHAIN_FILE}")
76-
include("${CMAKE_TOOLCHAIN_FILE}")
77-
else()
78-
message("Using Toolchain File: ${CMAKE_BINARY_DIR}/${CMAKE_TOOLCHAIN_FILE}")
79-
include("${CMAKE_BINARY_DIR}/${CMAKE_TOOLCHAIN_FILE}")
80-
endif()
81-
endif()
82-
83-
# We're on iOS if the system root is set to "iphone" or some variant.
84-
if("${CMAKE_OSX_SYSROOT}" MATCHES "iphone")
85-
set(IOS TRUE CACHE BOOL "Target platform is iOS.")
86-
endif()
87-
8871
# Set directories needed by the Firebase subprojects
8972
# Directory to store generated files.
9073
set(FIREBASE_GEN_FILE_DIR ${CMAKE_BINARY_DIR}/generated)
@@ -113,8 +96,15 @@ set(FIREBASE_DOWNLOAD_DIR ${PROJECT_BINARY_DIR}/downloads)
11396
# Run the CMake build logic that will download all the external dependencies.
11497
download_external_sources()
11598

116-
# Disable the Flatbuffer build tests
99+
# Disable the Flatbuffer build tests, install and flathash
117100
set(FLATBUFFERS_BUILD_TESTS OFF CACHE BOOL "")
101+
set(FLATBUFFERS_INSTALL OFF CACHE BOOL "")
102+
set(FLATBUFFERS_FLATHASH OFF CACHE BOOL "")
103+
104+
# Disable buliding flatc if cross compiling
105+
if(IOS OR ANDROID)
106+
set(FLATBUFFERS_BUILD_FLATC OFF CACHE BOOL "")
107+
endif()
118108

119109
# Add flatbuffers as a subdirectory, and set the directory variables for it,
120110
# so that the sub Firebase projects can depend upon it if necessary.
@@ -230,7 +220,6 @@ if(ANDROID OR IOS)
230220
endif()
231221

232222
set(FLATBUFFERS_FLATC_EXECUTABLE ${firebase_external_flatc} CACHE STRING "")
233-
set(FLATBUFFERS_BUILD_FLATC OFF CACHE BOOL "")
234223

235224
# Setup the flatc custom build target.
236225
# These commands are executed from within the currect context, which has set
@@ -279,6 +268,11 @@ endif()
279268
# then refer to.
280269
set(FIREBASE_CPP_SDK_ROOT_DIR ${CMAKE_CURRENT_LIST_DIR})
281270

271+
include(binary_to_array)
272+
include(firebase_cpp_gradle)
273+
274+
add_subdirectory(ios_pod)
275+
282276
# If we're building tests, we need to include the 'testing' folder before any
283277
# of the tests actually get built.
284278
if(FIREBASE_CPP_BUILD_TESTS)

admob/CMakeLists.txt

+6-33
Original file line numberDiff line numberDiff line change
@@ -14,17 +14,6 @@
1414

1515
# CMake file for the firebase_admob library
1616

17-
cmake_minimum_required (VERSION 3.1)
18-
set (CMAKE_CXX_STANDARD 11)
19-
20-
include(binary_to_array)
21-
include(download_pod_headers)
22-
include(firebase_cpp_gradle)
23-
24-
project(firebase_admob NONE)
25-
enable_language(C)
26-
enable_language(CXX)
27-
2817
# Common source files used by all platforms
2918
set(common_SRCS
3019
src/common/admob_common.cc
@@ -121,29 +110,13 @@ elseif(IOS)
121110
APPEND_STRING PROPERTY
122111
COMPILE_FLAGS "-fobjc-arc")
123112

124-
# Setup the target for getting the Firebase iOS SDK headers through Cocoapods.
125-
set(pod_target_name "download_admob_pod_headers")
126-
set(pods_dir "${PROJECT_BINARY_DIR}/Pods")
127-
set(pod_list "")
128-
list(APPEND pod_list "'Firebase/AdMob', '6.10.0'")
129-
130-
setup_pod_headers_target("${pod_target_name}" "${pods_dir}" "${pod_list}")
131-
132-
# Add the Cocoapod headers to the include directories
133-
set(base_header_dir "${pods_dir}/Pods/Headers/Public")
134-
target_include_directories(firebase_admob
135-
PRIVATE
136-
${base_header_dir}/Google-Mobile-Ads-SDK
113+
setup_pod_headers(
114+
firebase_admob
115+
POD_NAMES
116+
Google-Mobile-Ads-SDK
137117
)
138-
string(CONCAT google_mobile_ads_framework_path
139-
"${pods_dir}/Pods/Google-Mobile-Ads-SDK/"
140-
"Frameworks/GoogleMobileAdsFramework-Current/GoogleMobileAds.framework")
118+
141119
# AdMob expects the header files to be in a subfolder, so set up a symlink to
142120
# accomplish that.
143-
symlink_framework_headers(firebase_admob ${pod_target_name}
144-
${google_mobile_ads_framework_path} GoogleMobileAds
145-
)
146-
147-
# Add a dependency to downloading the headers onto admob.
148-
add_dependencies(firebase_admob ${pod_target_name})
121+
symlink_pod_headers(firebase_admob Google-Mobile-Ads-SDK GoogleMobileAds)
149122
endif()

admob/admob_resources/build.gradle

+2-2
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,8 @@ android {
4545
}
4646

4747
dependencies {
48-
implementation 'com.google.firebase:firebase-analytics:17.2.0'
49-
implementation 'com.google.firebase:firebase-ads:18.2.0'
48+
implementation 'com.google.firebase:firebase-analytics:17.2.1'
49+
implementation 'com.google.firebase:firebase-ads:18.3.0'
5050
}
5151

5252
afterEvaluate {

admob/src/android/banner_view_internal_android.cc

+25-18
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414
* limitations under the License.
1515
*/
1616

17+
#include "admob/src/android/banner_view_internal_android.h"
18+
1719
#include <assert.h>
1820
#include <jni.h>
1921

@@ -23,13 +25,13 @@
2325
#include "admob/admob_resources.h"
2426
#include "admob/src/android/ad_request_converter.h"
2527
#include "admob/src/android/admob_android.h"
26-
#include "admob/src/android/banner_view_internal_android.h"
2728
#include "admob/src/common/admob_common.h"
2829
#include "admob/src/include/firebase/admob.h"
2930
#include "admob/src/include/firebase/admob/banner_view.h"
3031
#include "admob/src/include/firebase/admob/types.h"
3132
#include "app/src/assert.h"
3233
#include "app/src/mutex.h"
34+
#include "app/src/semaphore.h"
3335
#include "app/src/util_android.h"
3436

3537
namespace firebase {
@@ -56,24 +58,25 @@ BannerViewInternalAndroid::BannerViewInternalAndroid(BannerView* base)
5658
env->DeleteLocalRef(helper_ref);
5759
}
5860

61+
62+
void DestroyOnDeleteCallback(const Future<void>& result,
63+
void* sem_data) {
64+
if (sem_data != nullptr) {
65+
Semaphore* semaphore = static_cast<Semaphore*>(sem_data);
66+
semaphore->Post();
67+
}
68+
}
69+
5970
BannerViewInternalAndroid::~BannerViewInternalAndroid() {
6071
JNIEnv* env = ::firebase::admob::GetJNI();
6172

62-
// Destroy the banner view so all pending futures / callbacks complete.
63-
{
64-
Mutex mutex(Mutex::kModeNonRecursive);
65-
mutex.Acquire();
66-
Destroy().OnCompletion(
67-
[](const Future<void>&, void* mutex) {
68-
reinterpret_cast<Mutex*>(mutex)->Release();
69-
},
70-
&mutex);
71-
// Acquire a second Mutex lock to block until the Future for the last call
72-
// to Destroy() completes at which point the lambda function in OnCompletion
73-
// is called and the Mutex lock is released.
74-
mutex.Acquire();
75-
mutex.Release();
76-
}
73+
DestroyInternalData();
74+
75+
Semaphore semaphore(0);
76+
InvokeNullary(kBannerViewFnDestroyOnDelete, banner_view_helper::kDestroy)
77+
.OnCompletion(DestroyOnDeleteCallback, &semaphore);
78+
79+
semaphore.Wait();
7780
env->DeleteGlobalRef(helper_);
7881
helper_ = nullptr;
7982
}
@@ -131,8 +134,7 @@ Future<void> BannerViewInternalAndroid::Resume() {
131134
}
132135

133136
Future<void> BannerViewInternalAndroid::Destroy() {
134-
// The bounding box is zeroed on destroy.
135-
bounding_box_ = {};
137+
DestroyInternalData();
136138
return InvokeNullary(kBannerViewFnDestroy, banner_view_helper::kDestroy);
137139
}
138140

@@ -214,6 +216,11 @@ Future<void> BannerViewInternalAndroid::InvokeNullary(
214216
return GetLastResult(fn);
215217
}
216218

219+
void BannerViewInternalAndroid::DestroyInternalData() {
220+
// The bounding box is zeroed on destroy.
221+
bounding_box_ = {};
222+
}
223+
217224
} // namespace internal
218225
} // namespace admob
219226
} // namespace firebase

admob/src/android/banner_view_internal_android.h

+3
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,9 @@ class BannerViewInternalAndroid : public BannerViewInternal {
7878
// the future callback pointer.
7979
Future<void> InvokeNullary(BannerViewFn fn,
8080
banner_view_helper::Method method);
81+
82+
// Cleans up any C++ side data before invoking the Android SDK to do the same.
83+
void DestroyInternalData();
8184
};
8285

8386
} // namespace internal

admob/src/common/banner_view_internal.h

+1
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ enum BannerViewFn {
3535
kBannerViewFnPause,
3636
kBannerViewFnResume,
3737
kBannerViewFnDestroy,
38+
kBannerViewFnDestroyOnDelete,
3839
kBannerViewFnMoveTo,
3940
kBannerViewFnCount
4041
};

analytics/CMakeLists.txt

+5-30
Original file line numberDiff line numberDiff line change
@@ -14,16 +14,6 @@
1414

1515
# CMake file for the firebase_analytics library
1616

17-
cmake_minimum_required (VERSION 3.1)
18-
set (CMAKE_CXX_STANDARD 11)
19-
20-
include(download_pod_headers)
21-
include(firebase_cpp_gradle)
22-
23-
project(firebase_analytics NONE)
24-
enable_language(C)
25-
enable_language(CXX)
26-
2717
# Analytics generates header files for default events, parameters, and
2818
# properties based on the iOS SDK, that are used across all platforms.
2919
set(analytics_generated_headers_dir
@@ -131,27 +121,12 @@ elseif(IOS)
131121
APPEND_STRING PROPERTY
132122
COMPILE_FLAGS "-fobjc-arc")
133123

134-
# Setup the target for getting the Firebase iOS SDK headers through Cocoapods.
135-
set(pod_target_name "download_analytics_pod_headers")
136-
set(pods_dir "${PROJECT_BINARY_DIR}/Pods")
137-
set(pod_list "")
138-
list(APPEND pod_list "'Firebase/Core', '6.10.0'")
139-
list(APPEND pod_list "'Firebase/Analytics', '6.10.0'")
140-
141-
setup_pod_headers_target("${pod_target_name}" "${pods_dir}" "${pod_list}")
142-
143-
# Add the Cocoapod headers to the include directories
144-
set(base_header_dir "${pods_dir}/Pods/Headers/Public")
145-
set(analytics_framework_path
146-
"${pods_dir}/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.framework")
147-
target_include_directories(firebase_analytics
148-
PRIVATE
149-
${base_header_dir}/FirebaseCore
150-
${analytics_framework_path}/Headers
124+
setup_pod_headers(
125+
firebase_analytics
126+
POD_NAMES
127+
FirebaseCore
128+
FirebaseAnalytics
151129
)
152-
153-
# Add a dependency to downloading the headers onto analytics.
154-
add_dependencies(firebase_analytics ${pod_target_name})
155130
endif()
156131

157132
if(FIREBASE_CPP_BUILD_TESTS)

app/CMakeLists.txt

+8-32
Original file line numberDiff line numberDiff line change
@@ -14,18 +14,6 @@
1414

1515
# CMake file for the firebase_app library
1616

17-
cmake_minimum_required (VERSION 3.1)
18-
set (CMAKE_CXX_STANDARD 11)
19-
20-
include(FindPkgConfig)
21-
include(binary_to_array)
22-
include(download_pod_headers)
23-
include(firebase_cpp_gradle)
24-
25-
project(firebase_app NONE)
26-
enable_language(C)
27-
enable_language(CXX)
28-
2917
# Define how to generate google_services_resource_(source/header)
3018
binary_to_array("google_services_resource"
3119
"${CMAKE_CURRENT_LIST_DIR}/google_services.fbs"
@@ -356,27 +344,15 @@ elseif(IOS)
356344
APPEND_STRING PROPERTY
357345
COMPILE_FLAGS "-fobjc-arc")
358346

359-
# Setup the target for getting the Firebase iOS SDK headers through Cocoapods.
360-
set(pod_target_name "download_app_pod_headers")
361-
set(pods_dir "${PROJECT_BINARY_DIR}/Pods")
362-
set(pod_list "")
363-
list(APPEND pod_list "'Firebase/Core', '6.10.0'")
364-
list(APPEND pod_list "'Firebase/DynamicLinks', '6.10.0'")
365-
366-
setup_pod_headers_target("${pod_target_name}" "${pods_dir}" "${pod_list}")
367-
368-
# Add the Cocoapod headers to the include directories
369-
set(base_header_dir "${pods_dir}/Pods/Headers/Public")
370-
target_include_directories(firebase_app
371-
PRIVATE
372-
${base_header_dir}
373-
${base_header_dir}/FirebaseCore
374-
${base_header_dir}/FirebaseDynamicLinks
375-
${base_header_dir}/FirebaseInstanceID
347+
# Add empty include path to get root include folder '.'
348+
setup_pod_headers(
349+
firebase_app
350+
POD_NAMES
351+
.
352+
FirebaseCore
353+
FirebaseDynamicLinks
354+
FirebaseInstanceID
376355
)
377-
378-
# Add a dependency to downloading the headers onto app.
379-
add_dependencies(firebase_app ${pod_target_name})
380356
endif()
381357

382358
if (NOT ANDROID AND NOT IOS)

app/app_resources/build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ android {
4646
}
4747

4848
dependencies {
49-
implementation 'com.google.firebase:firebase-analytics:17.2.0'
49+
implementation 'com.google.firebase:firebase-analytics:17.2.1'
5050
}
5151

5252
afterEvaluate {

app/google_api_resources/build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ android {
4949
}
5050

5151
dependencies {
52-
implementation 'com.google.firebase:firebase-analytics:17.2.0'
52+
implementation 'com.google.firebase:firebase-analytics:17.2.1'
5353
implementation project(':app:app_resources')
5454
}
5555

app/invites_resources/build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ android {
4545
}
4646

4747
dependencies {
48-
implementation 'com.google.firebase:firebase-analytics:17.2.0'
48+
implementation 'com.google.firebase:firebase-analytics:17.2.1'
4949
implementation 'com.google.firebase:firebase-dynamic-links:19.0.0'
5050
implementation project(':app:app_resources')
5151
}

0 commit comments

Comments
 (0)