Mercurial
annotate gara/android/firebase-cloud-messaging/README.md @ 67:6626ec933933
[Seobeo] Separated out Client Server logic. Created test tools.
| author | June Park <parkjune1995@gmail.com> |
|---|---|
| date | Wed, 24 Dec 2025 09:15:55 -0800 |
| parents | 829623189a57 |
| children |
| rev | line source |
|---|---|
|
47
829623189a57
[Gara] Android commit. Bazelfied it.
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
1 |
|
829623189a57
[Gara] Android commit. Bazelfied it.
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
2 # Bazel Firebase Cloud Messaging (FCM) example |
|
829623189a57
[Gara] Android commit. Bazelfied it.
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
3 |
|
829623189a57
[Gara] Android commit. Bazelfied it.
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
4 FCM requires certain information about your app (API key, app ID, project id, |
|
829623189a57
[Gara] Android commit. Bazelfied it.
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
5 etc) to be present in the `res/values/values.xml` resource file. This example |
|
829623189a57
[Gara] Android commit. Bazelfied it.
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
6 shows how to use the tools provided in the |
|
829623189a57
[Gara] Android commit. Bazelfied it.
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
7 [bazelbuild/tools_android](https://github.com/bazelbuild/tools_android) repo to |
|
829623189a57
[Gara] Android commit. Bazelfied it.
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
8 generate the `values.xml` file from the `google-services.json` file from your |
|
829623189a57
[Gara] Android commit. Bazelfied it.
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
9 Firebase console. |
|
829623189a57
[Gara] Android commit. Bazelfied it.
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
10 |
|
829623189a57
[Gara] Android commit. Bazelfied it.
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
11 ## Building the Example |
|
829623189a57
[Gara] Android commit. Bazelfied it.
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
12 |
|
829623189a57
[Gara] Android commit. Bazelfied it.
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
13 To build the example: |
|
829623189a57
[Gara] Android commit. Bazelfied it.
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
14 |
|
829623189a57
[Gara] Android commit. Bazelfied it.
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
15 1. Make sure the `ANDROID_HOME` environment variable is set to the absolute path |
|
829623189a57
[Gara] Android commit. Bazelfied it.
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
16 of your Android SDK. |
|
829623189a57
[Gara] Android commit. Bazelfied it.
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
17 |
|
829623189a57
[Gara] Android commit. Bazelfied it.
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
18 2. Go to the Firebase console for your project, and in Settings, download |
|
829623189a57
[Gara] Android commit. Bazelfied it.
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
19 `google-service.json`, and replace the sample file in the `app` directory. |
|
829623189a57
[Gara] Android commit. Bazelfied it.
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
20 |
|
829623189a57
[Gara] Android commit. Bazelfied it.
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
21 3. Run `bazel build //app` in the project. |
|
829623189a57
[Gara] Android commit. Bazelfied it.
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
22 |
|
829623189a57
[Gara] Android commit. Bazelfied it.
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
23 ## Applying the Example to Your Code |
|
829623189a57
[Gara] Android commit. Bazelfied it.
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
24 |
|
829623189a57
[Gara] Android commit. Bazelfied it.
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
25 To apply this example to your code: |
|
829623189a57
[Gara] Android commit. Bazelfied it.
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
26 |
|
829623189a57
[Gara] Android commit. Bazelfied it.
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
27 1. Add the following to your `WORKSPACE` file: |
|
829623189a57
[Gara] Android commit. Bazelfied it.
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
28 ```python |
|
829623189a57
[Gara] Android commit. Bazelfied it.
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
29 TOOLS_ANDROID_VERSION = "0.1" |
|
829623189a57
[Gara] Android commit. Bazelfied it.
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
30 http_archive( |
|
829623189a57
[Gara] Android commit. Bazelfied it.
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
31 name = "tools_android", |
|
829623189a57
[Gara] Android commit. Bazelfied it.
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
32 strip_prefix = "tools_android-" + TOOLS_ANDROID_VERSION, |
|
829623189a57
[Gara] Android commit. Bazelfied it.
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
33 url = "https://github.com/bazelbuild/tools_android/archive/%s.tar.gz" % TOOLS_ANDROID_VERSION, |
|
829623189a57
[Gara] Android commit. Bazelfied it.
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
34 ) |
|
829623189a57
[Gara] Android commit. Bazelfied it.
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
35 load("@tools_android//tools/googleservices:defs.bzl", "google_services_workspace_dependencies") |
|
829623189a57
[Gara] Android commit. Bazelfied it.
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
36 google_services_workspace_dependencies() |
|
829623189a57
[Gara] Android commit. Bazelfied it.
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
37 ``` |
|
829623189a57
[Gara] Android commit. Bazelfied it.
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
38 |
|
829623189a57
[Gara] Android commit. Bazelfied it.
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
39 2. Add the following to your `BUILD` file: |
|
829623189a57
[Gara] Android commit. Bazelfied it.
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
40 ```python |
|
829623189a57
[Gara] Android commit. Bazelfied it.
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
41 load("@tools_android//tools/googleservices:defs.bzl", "google_services_xml") |
|
829623189a57
[Gara] Android commit. Bazelfied it.
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
42 |
|
829623189a57
[Gara] Android commit. Bazelfied it.
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
43 GOOGLE_SERVICES_XML = google_services_xml( |
|
829623189a57
[Gara] Android commit. Bazelfied it.
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
44 package_name = "com.example.myapplication", |
|
829623189a57
[Gara] Android commit. Bazelfied it.
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
45 google_services_json = "google-services.json" |
|
829623189a57
[Gara] Android commit. Bazelfied it.
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
46 ) |
|
829623189a57
[Gara] Android commit. Bazelfied it.
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
47 ``` |
|
829623189a57
[Gara] Android commit. Bazelfied it.
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
48 |
|
829623189a57
[Gara] Android commit. Bazelfied it.
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
49 3. Add `GOOGLE_SERVICES_XML` to the `resource_files` attribute of your |
|
829623189a57
[Gara] Android commit. Bazelfied it.
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
50 `android_binary` rule. For example: |
|
829623189a57
[Gara] Android commit. Bazelfied it.
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
51 ```python |
|
829623189a57
[Gara] Android commit. Bazelfied it.
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
52 android_binary( |
|
829623189a57
[Gara] Android commit. Bazelfied it.
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
53 ... |
|
829623189a57
[Gara] Android commit. Bazelfied it.
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
54 resource_files = glob(["src/main/res/**"]) + GOOGLE_SERVICES_XML, |
|
829623189a57
[Gara] Android commit. Bazelfied it.
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
55 ... |
|
829623189a57
[Gara] Android commit. Bazelfied it.
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
56 ) |
|
829623189a57
[Gara] Android commit. Bazelfied it.
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
57 ``` |
|
829623189a57
[Gara] Android commit. Bazelfied it.
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
58 |
|
829623189a57
[Gara] Android commit. Bazelfied it.
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
59 4. Bazel's `AndroidManifest.xml` merging logic does not merge permissions from |
|
829623189a57
[Gara] Android commit. Bazelfied it.
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
60 dependent libraries (see issue [#5411](https://github.com/bazelbuild/bazel/issues/5411)). |
|
829623189a57
[Gara] Android commit. Bazelfied it.
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
61 You may need to add the following permissions to the `AndroidManifest.xml` of |
|
829623189a57
[Gara] Android commit. Bazelfied it.
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
62 your top-level `android_binary` rule: |
|
829623189a57
[Gara] Android commit. Bazelfied it.
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
63 ```xml |
|
829623189a57
[Gara] Android commit. Bazelfied it.
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
64 <uses-permission android:name="android.permission.INTERNET" /> |
|
829623189a57
[Gara] Android commit. Bazelfied it.
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
65 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> |
|
829623189a57
[Gara] Android commit. Bazelfied it.
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
66 <uses-permission android:name="android.permission.WAKE_LOCK" /> |
|
829623189a57
[Gara] Android commit. Bazelfied it.
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
67 <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /> |
|
829623189a57
[Gara] Android commit. Bazelfied it.
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
68 ``` |
|
829623189a57
[Gara] Android commit. Bazelfied it.
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
69 |
|
829623189a57
[Gara] Android commit. Bazelfied it.
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
70 ## Manual Integration |
|
829623189a57
[Gara] Android commit. Bazelfied it.
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
71 |
|
829623189a57
[Gara] Android commit. Bazelfied it.
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
72 It's also possible to run the Google Services values.xml generator manually and |
|
829623189a57
[Gara] Android commit. Bazelfied it.
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
73 add the results to your project: |
|
829623189a57
[Gara] Android commit. Bazelfied it.
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
74 |
|
829623189a57
[Gara] Android commit. Bazelfied it.
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
75 1. Go to the Firebase console for your project, and in Settings, download |
|
829623189a57
[Gara] Android commit. Bazelfied it.
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
76 `google-service.json`. |
|
829623189a57
[Gara] Android commit. Bazelfied it.
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
77 |
|
829623189a57
[Gara] Android commit. Bazelfied it.
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
78 2. From the workspace root of the `tools_android` project, run the Google |
|
829623189a57
[Gara] Android commit. Bazelfied it.
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
79 Services XML generator: |
|
829623189a57
[Gara] Android commit. Bazelfied it.
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
80 ``` |
|
829623189a57
[Gara] Android commit. Bazelfied it.
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
81 bazel run //third_party/googleservices:GenerateGoogleServicesXml -- \ |
|
829623189a57
[Gara] Android commit. Bazelfied it.
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
82 com.example.myapplication \ |
|
829623189a57
[Gara] Android commit. Bazelfied it.
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
83 /absolute/path/to/google-services.json \ |
|
829623189a57
[Gara] Android commit. Bazelfied it.
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
84 /tmp/values.xml |
|
829623189a57
[Gara] Android commit. Bazelfied it.
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
85 ``` |
|
829623189a57
[Gara] Android commit. Bazelfied it.
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
86 The arguments are the package name for your app, the absolute file path to |
|
829623189a57
[Gara] Android commit. Bazelfied it.
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
87 the `google-services.json` file, and finally the file path for `values.xml`. |
|
829623189a57
[Gara] Android commit. Bazelfied it.
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
88 |
|
829623189a57
[Gara] Android commit. Bazelfied it.
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
89 3. Merge the resulting `values.xml` file into your `values.xml` file (or put the |
|
829623189a57
[Gara] Android commit. Bazelfied it.
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
90 file into your `res/values` directory if you don't already have a |
|
829623189a57
[Gara] Android commit. Bazelfied it.
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
91 `values.xml` file). Alternatively, the `values.xml` file can be put into a |
|
829623189a57
[Gara] Android commit. Bazelfied it.
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
92 separate `res/values` directory and added to the `resource_files`. For the |
|
829623189a57
[Gara] Android commit. Bazelfied it.
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
93 example here, if `values.xml` is in |
|
829623189a57
[Gara] Android commit. Bazelfied it.
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
94 `app/src/main/google_services_xml/res/values/values.xml`, the `BUILD` file |
|
829623189a57
[Gara] Android commit. Bazelfied it.
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
95 would have |
|
829623189a57
[Gara] Android commit. Bazelfied it.
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
96 `resource_files = glob(["src/main/res/**"]) + ["src/main/google_services_xml/res/values/values.xml"],`. |