@react-native-firebase/app-distribution 21.6.2 → 21.7.1
Sign up to get free protection for your applications and to get access to all the features.
- package/CHANGELOG.md +10 -0
- package/app.plugin.js +1 -0
- package/lib/version.js +1 -1
- package/package.json +15 -4
- package/plugin/__tests__/README.md +1 -0
- package/plugin/__tests__/__snapshots__/androidPlugin.test.ts.snap +167 -0
- package/plugin/__tests__/androidPlugin.test.ts +32 -0
- package/plugin/__tests__/fixtures/app_build.gradle +118 -0
- package/plugin/__tests__/fixtures/project_build.gradle +38 -0
- package/plugin/build/android/applyPlugin.d.ts +6 -0
- package/plugin/build/android/applyPlugin.js +28 -0
- package/plugin/build/android/buildscriptDependency.d.ts +6 -0
- package/plugin/build/android/buildscriptDependency.js +29 -0
- package/plugin/build/android/constants.d.ts +3 -0
- package/plugin/build/android/constants.js +7 -0
- package/plugin/build/android/index.d.ts +3 -0
- package/plugin/build/android/index.js +7 -0
- package/plugin/build/index.d.ts +3 -0
- package/plugin/build/index.js +12 -0
- package/plugin/src/android/applyPlugin.ts +29 -0
- package/plugin/src/android/buildscriptDependency.ts +33 -0
- package/plugin/src/android/constants.ts +7 -0
- package/plugin/src/android/index.ts +4 -0
- package/plugin/src/index.ts +13 -0
- package/plugin/tsconfig.json +9 -0
- package/plugin/tsconfig.tsbuildinfo +1 -0
package/CHANGELOG.md
CHANGED
@@ -3,6 +3,16 @@
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
5
5
|
|
6
|
+
## [21.7.1](https://github.com/invertase/react-native-firebase/compare/v21.7.0...v21.7.1) (2025-01-20)
|
7
|
+
|
8
|
+
**Note:** Version bump only for package @react-native-firebase/app-distribution
|
9
|
+
|
10
|
+
## [21.7.0](https://github.com/invertase/react-native-firebase/compare/v21.6.2...v21.7.0) (2025-01-16)
|
11
|
+
|
12
|
+
### Features
|
13
|
+
|
14
|
+
- **app-distribution:** add Android app distribution plugin and configuration ([9b5c405](https://github.com/invertase/react-native-firebase/commit/9b5c405b2933c84daad561117a3eebacc65cbb7e))
|
15
|
+
|
6
16
|
## [21.6.2](https://github.com/invertase/react-native-firebase/compare/v21.6.1...v21.6.2) (2025-01-02)
|
7
17
|
|
8
18
|
**Note:** Version bump only for package @react-native-firebase/app-distribution
|
package/app.plugin.js
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
module.exports = require('./plugin/build');
|
package/lib/version.js
CHANGED
@@ -1,2 +1,2 @@
|
|
1
1
|
// Generated by genversion.
|
2
|
-
module.exports = '21.
|
2
|
+
module.exports = '21.7.1';
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@react-native-firebase/app-distribution",
|
3
|
-
"version": "21.
|
3
|
+
"version": "21.7.1",
|
4
4
|
"author": "Invertase <oss@invertase.io> (http://invertase.io)",
|
5
5
|
"description": "React Native Firebase - App Distribution",
|
6
6
|
"main": "lib/index.js",
|
@@ -8,7 +8,9 @@
|
|
8
8
|
"scripts": {
|
9
9
|
"build": "genversion --semi lib/version.js",
|
10
10
|
"build:clean": "rimraf android/build && rimraf ios/build",
|
11
|
-
"
|
11
|
+
"build:plugin": "rimraf plugin/build && tsc --build plugin",
|
12
|
+
"lint:plugin": "eslint plugin/src/*",
|
13
|
+
"prepare": "yarn run build && yarn run build:plugin"
|
12
14
|
},
|
13
15
|
"repository": {
|
14
16
|
"type": "git",
|
@@ -22,10 +24,19 @@
|
|
22
24
|
"app-distribution"
|
23
25
|
],
|
24
26
|
"peerDependencies": {
|
25
|
-
"@react-native-firebase/app": "21.
|
27
|
+
"@react-native-firebase/app": "21.7.1",
|
28
|
+
"expo": ">=47.0.0"
|
29
|
+
},
|
30
|
+
"devDependencies": {
|
31
|
+
"expo": "^50.0.21"
|
32
|
+
},
|
33
|
+
"peerDependenciesMeta": {
|
34
|
+
"expo": {
|
35
|
+
"optional": true
|
36
|
+
}
|
26
37
|
},
|
27
38
|
"publishConfig": {
|
28
39
|
"access": "public"
|
29
40
|
},
|
30
|
-
"gitHead": "
|
41
|
+
"gitHead": "a11363f77efa34b41cab2bc92ed9a700b814fd8d"
|
31
42
|
}
|
@@ -0,0 +1 @@
|
|
1
|
+
Please see the `packages/app/plugin/__tests__/README.md`.
|
@@ -0,0 +1,167 @@
|
|
1
|
+
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
2
|
+
|
3
|
+
exports[`App distribution Plugin Android Tests applies app distribution classpath to project build.gradle 1`] = `
|
4
|
+
"// Top-level build file where you can add configuration options common to all sub-projects/modules.
|
5
|
+
|
6
|
+
buildscript {
|
7
|
+
ext {
|
8
|
+
buildToolsVersion = "29.0.3"
|
9
|
+
minSdkVersion = 21
|
10
|
+
compileSdkVersion = 30
|
11
|
+
targetSdkVersion = 30
|
12
|
+
}
|
13
|
+
repositories {
|
14
|
+
google()
|
15
|
+
jcenter()
|
16
|
+
}
|
17
|
+
dependencies {
|
18
|
+
classpath 'com.google.firebase:firebase-appdistribution-gradle:5.0.0'
|
19
|
+
classpath("com.android.tools.build:gradle:4.1.0")
|
20
|
+
|
21
|
+
// NOTE: Do not place your application dependencies here; they belong
|
22
|
+
// in the individual module build.gradle files
|
23
|
+
}
|
24
|
+
}
|
25
|
+
|
26
|
+
allprojects {
|
27
|
+
repositories {
|
28
|
+
mavenLocal()
|
29
|
+
maven {
|
30
|
+
// All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
|
31
|
+
url("$rootDir/../node_modules/react-native/android")
|
32
|
+
}
|
33
|
+
maven {
|
34
|
+
// Android JSC is installed from npm
|
35
|
+
url("$rootDir/../node_modules/jsc-android/dist")
|
36
|
+
}
|
37
|
+
|
38
|
+
google()
|
39
|
+
jcenter()
|
40
|
+
maven { url 'https://www.jitpack.io' }
|
41
|
+
}
|
42
|
+
}
|
43
|
+
"
|
44
|
+
`;
|
45
|
+
|
46
|
+
exports[`App distribution Plugin Android Tests applies app distribution plugin to app/build.gradle 1`] = `
|
47
|
+
"/* Example build.gradle file from https://github.com/expo/expo/blob/6ab0274b5cb9a9c223e0d453787a522b438b4fcb/templates/expo-template-bare-minimum/android/app/build.gradle */
|
48
|
+
|
49
|
+
apply plugin: "com.android.application"
|
50
|
+
|
51
|
+
import com.android.build.OutputFile
|
52
|
+
|
53
|
+
|
54
|
+
project.ext.react = [
|
55
|
+
enableHermes: false
|
56
|
+
]
|
57
|
+
|
58
|
+
apply from: '../../node_modules/react-native-unimodules/gradle.groovy'
|
59
|
+
apply from: "../../node_modules/react-native/react.gradle"
|
60
|
+
apply from: "../../node_modules/expo-constants/scripts/get-app-config-android.gradle"
|
61
|
+
apply from: "../../node_modules/expo-updates/scripts/create-manifest-android.gradle"
|
62
|
+
|
63
|
+
def enableSeparateBuildPerCPUArchitecture = false
|
64
|
+
|
65
|
+
def enableProguardInReleaseBuilds = false
|
66
|
+
|
67
|
+
def jscFlavor = 'org.webkit:android-jsc:+'
|
68
|
+
|
69
|
+
def enableHermes = project.ext.react.get("enableHermes", false);
|
70
|
+
|
71
|
+
android {
|
72
|
+
compileSdkVersion rootProject.ext.compileSdkVersion
|
73
|
+
|
74
|
+
compileOptions {
|
75
|
+
sourceCompatibility JavaVersion.VERSION_1_8
|
76
|
+
targetCompatibility JavaVersion.VERSION_1_8
|
77
|
+
}
|
78
|
+
|
79
|
+
defaultConfig {
|
80
|
+
applicationId "com.helloworld"
|
81
|
+
minSdkVersion rootProject.ext.minSdkVersion
|
82
|
+
targetSdkVersion rootProject.ext.targetSdkVersion
|
83
|
+
versionCode 1
|
84
|
+
versionName "1.0"
|
85
|
+
}
|
86
|
+
splits {
|
87
|
+
abi {
|
88
|
+
reset()
|
89
|
+
enable enableSeparateBuildPerCPUArchitecture
|
90
|
+
universalApk false // If true, also generate a universal APK
|
91
|
+
include "armeabi-v7a", "x86", "arm64-v8a", "x86_64"
|
92
|
+
}
|
93
|
+
}
|
94
|
+
signingConfigs {
|
95
|
+
debug {
|
96
|
+
storeFile file('debug.keystore')
|
97
|
+
storePassword 'android'
|
98
|
+
keyAlias 'androiddebugkey'
|
99
|
+
keyPassword 'android'
|
100
|
+
}
|
101
|
+
}
|
102
|
+
buildTypes {
|
103
|
+
debug {
|
104
|
+
signingConfig signingConfigs.debug
|
105
|
+
}
|
106
|
+
release {
|
107
|
+
// Caution! In production, you need to generate your own keystore file.
|
108
|
+
// see https://reactnative.dev/docs/signed-apk-android.
|
109
|
+
signingConfig signingConfigs.debug
|
110
|
+
minifyEnabled enableProguardInReleaseBuilds
|
111
|
+
proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
|
112
|
+
}
|
113
|
+
}
|
114
|
+
|
115
|
+
// applicationVariants are e.g. debug, release
|
116
|
+
applicationVariants.all { variant ->
|
117
|
+
variant.outputs.each { output ->
|
118
|
+
// For each separate APK per architecture, set a unique version code as described here:
|
119
|
+
// https://developer.android.com/studio/build/configure-apk-splits.html
|
120
|
+
def versionCodes = ["armeabi-v7a": 1, "x86": 2, "arm64-v8a": 3, "x86_64": 4]
|
121
|
+
def abi = output.getFilter(OutputFile.ABI)
|
122
|
+
if (abi != null) { // null for the universal-debug, universal-release variants
|
123
|
+
output.versionCodeOverride =
|
124
|
+
versionCodes.get(abi) * 1048576 + defaultConfig.versionCode
|
125
|
+
}
|
126
|
+
|
127
|
+
}
|
128
|
+
}
|
129
|
+
}
|
130
|
+
|
131
|
+
dependencies {
|
132
|
+
implementation fileTree(dir: "libs", include: ["*.jar"])
|
133
|
+
//noinspection GradleDynamicVersion
|
134
|
+
implementation "com.facebook.react:react-native:+" // From node_modules
|
135
|
+
implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.0.0"
|
136
|
+
debugImplementation("com.facebook.flipper:flipper:\${FLIPPER_VERSION}") {
|
137
|
+
exclude group:'com.facebook.fbjni'
|
138
|
+
}
|
139
|
+
debugImplementation("com.facebook.flipper:flipper-network-plugin:\${FLIPPER_VERSION}") {
|
140
|
+
exclude group:'com.facebook.flipper'
|
141
|
+
exclude group:'com.squareup.okhttp3', module:'okhttp'
|
142
|
+
}
|
143
|
+
debugImplementation("com.facebook.flipper:flipper-fresco-plugin:\${FLIPPER_VERSION}") {
|
144
|
+
exclude group:'com.facebook.flipper'
|
145
|
+
}
|
146
|
+
addUnimodulesDependencies()
|
147
|
+
|
148
|
+
if (enableHermes) {
|
149
|
+
def hermesPath = "../../node_modules/hermes-engine/android/";
|
150
|
+
debugImplementation files(hermesPath + "hermes-debug.aar")
|
151
|
+
releaseImplementation files(hermesPath + "hermes-release.aar")
|
152
|
+
} else {
|
153
|
+
implementation jscFlavor
|
154
|
+
}
|
155
|
+
}
|
156
|
+
|
157
|
+
// Run this once to be able to run the application with BUCK
|
158
|
+
// puts all compile dependencies into folder libs for BUCK to use
|
159
|
+
task copyDownloadableDepsToLibs(type: Copy) {
|
160
|
+
from configurations.compile
|
161
|
+
into 'libs'
|
162
|
+
}
|
163
|
+
|
164
|
+
apply from: file("../../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesAppBuildGradle(project)
|
165
|
+
|
166
|
+
apply plugin: 'com.google.firebase.appdistribution'"
|
167
|
+
`;
|
@@ -0,0 +1,32 @@
|
|
1
|
+
import fs from 'fs/promises';
|
2
|
+
import path from 'path';
|
3
|
+
import { beforeAll, describe, expect, it } from '@jest/globals';
|
4
|
+
|
5
|
+
import { applyPlugin } from '../src/android/applyPlugin';
|
6
|
+
import { setBuildscriptDependency } from '../src/android/buildscriptDependency';
|
7
|
+
|
8
|
+
describe('App distribution Plugin Android Tests', function () {
|
9
|
+
let appBuildGradle: string;
|
10
|
+
let projectBuildGradle: string;
|
11
|
+
|
12
|
+
beforeAll(async function () {
|
13
|
+
projectBuildGradle = await fs.readFile(
|
14
|
+
path.resolve(__dirname, './fixtures/project_build.gradle'),
|
15
|
+
{ encoding: 'utf-8' },
|
16
|
+
);
|
17
|
+
|
18
|
+
appBuildGradle = await fs.readFile(path.resolve(__dirname, './fixtures/app_build.gradle'), {
|
19
|
+
encoding: 'utf-8',
|
20
|
+
});
|
21
|
+
});
|
22
|
+
|
23
|
+
it('applies app distribution classpath to project build.gradle', async function () {
|
24
|
+
const result = setBuildscriptDependency(projectBuildGradle);
|
25
|
+
expect(result).toMatchSnapshot();
|
26
|
+
});
|
27
|
+
|
28
|
+
it('applies app distribution plugin to app/build.gradle', async function () {
|
29
|
+
const result = applyPlugin(appBuildGradle);
|
30
|
+
expect(result).toMatchSnapshot();
|
31
|
+
});
|
32
|
+
});
|
@@ -0,0 +1,118 @@
|
|
1
|
+
/* Example build.gradle file from https://github.com/expo/expo/blob/6ab0274b5cb9a9c223e0d453787a522b438b4fcb/templates/expo-template-bare-minimum/android/app/build.gradle */
|
2
|
+
|
3
|
+
apply plugin: "com.android.application"
|
4
|
+
|
5
|
+
import com.android.build.OutputFile
|
6
|
+
|
7
|
+
|
8
|
+
project.ext.react = [
|
9
|
+
enableHermes: false
|
10
|
+
]
|
11
|
+
|
12
|
+
apply from: '../../node_modules/react-native-unimodules/gradle.groovy'
|
13
|
+
apply from: "../../node_modules/react-native/react.gradle"
|
14
|
+
apply from: "../../node_modules/expo-constants/scripts/get-app-config-android.gradle"
|
15
|
+
apply from: "../../node_modules/expo-updates/scripts/create-manifest-android.gradle"
|
16
|
+
|
17
|
+
def enableSeparateBuildPerCPUArchitecture = false
|
18
|
+
|
19
|
+
def enableProguardInReleaseBuilds = false
|
20
|
+
|
21
|
+
def jscFlavor = 'org.webkit:android-jsc:+'
|
22
|
+
|
23
|
+
def enableHermes = project.ext.react.get("enableHermes", false);
|
24
|
+
|
25
|
+
android {
|
26
|
+
compileSdkVersion rootProject.ext.compileSdkVersion
|
27
|
+
|
28
|
+
compileOptions {
|
29
|
+
sourceCompatibility JavaVersion.VERSION_1_8
|
30
|
+
targetCompatibility JavaVersion.VERSION_1_8
|
31
|
+
}
|
32
|
+
|
33
|
+
defaultConfig {
|
34
|
+
applicationId "com.helloworld"
|
35
|
+
minSdkVersion rootProject.ext.minSdkVersion
|
36
|
+
targetSdkVersion rootProject.ext.targetSdkVersion
|
37
|
+
versionCode 1
|
38
|
+
versionName "1.0"
|
39
|
+
}
|
40
|
+
splits {
|
41
|
+
abi {
|
42
|
+
reset()
|
43
|
+
enable enableSeparateBuildPerCPUArchitecture
|
44
|
+
universalApk false // If true, also generate a universal APK
|
45
|
+
include "armeabi-v7a", "x86", "arm64-v8a", "x86_64"
|
46
|
+
}
|
47
|
+
}
|
48
|
+
signingConfigs {
|
49
|
+
debug {
|
50
|
+
storeFile file('debug.keystore')
|
51
|
+
storePassword 'android'
|
52
|
+
keyAlias 'androiddebugkey'
|
53
|
+
keyPassword 'android'
|
54
|
+
}
|
55
|
+
}
|
56
|
+
buildTypes {
|
57
|
+
debug {
|
58
|
+
signingConfig signingConfigs.debug
|
59
|
+
}
|
60
|
+
release {
|
61
|
+
// Caution! In production, you need to generate your own keystore file.
|
62
|
+
// see https://reactnative.dev/docs/signed-apk-android.
|
63
|
+
signingConfig signingConfigs.debug
|
64
|
+
minifyEnabled enableProguardInReleaseBuilds
|
65
|
+
proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
|
66
|
+
}
|
67
|
+
}
|
68
|
+
|
69
|
+
// applicationVariants are e.g. debug, release
|
70
|
+
applicationVariants.all { variant ->
|
71
|
+
variant.outputs.each { output ->
|
72
|
+
// For each separate APK per architecture, set a unique version code as described here:
|
73
|
+
// https://developer.android.com/studio/build/configure-apk-splits.html
|
74
|
+
def versionCodes = ["armeabi-v7a": 1, "x86": 2, "arm64-v8a": 3, "x86_64": 4]
|
75
|
+
def abi = output.getFilter(OutputFile.ABI)
|
76
|
+
if (abi != null) { // null for the universal-debug, universal-release variants
|
77
|
+
output.versionCodeOverride =
|
78
|
+
versionCodes.get(abi) * 1048576 + defaultConfig.versionCode
|
79
|
+
}
|
80
|
+
|
81
|
+
}
|
82
|
+
}
|
83
|
+
}
|
84
|
+
|
85
|
+
dependencies {
|
86
|
+
implementation fileTree(dir: "libs", include: ["*.jar"])
|
87
|
+
//noinspection GradleDynamicVersion
|
88
|
+
implementation "com.facebook.react:react-native:+" // From node_modules
|
89
|
+
implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.0.0"
|
90
|
+
debugImplementation("com.facebook.flipper:flipper:${FLIPPER_VERSION}") {
|
91
|
+
exclude group:'com.facebook.fbjni'
|
92
|
+
}
|
93
|
+
debugImplementation("com.facebook.flipper:flipper-network-plugin:${FLIPPER_VERSION}") {
|
94
|
+
exclude group:'com.facebook.flipper'
|
95
|
+
exclude group:'com.squareup.okhttp3', module:'okhttp'
|
96
|
+
}
|
97
|
+
debugImplementation("com.facebook.flipper:flipper-fresco-plugin:${FLIPPER_VERSION}") {
|
98
|
+
exclude group:'com.facebook.flipper'
|
99
|
+
}
|
100
|
+
addUnimodulesDependencies()
|
101
|
+
|
102
|
+
if (enableHermes) {
|
103
|
+
def hermesPath = "../../node_modules/hermes-engine/android/";
|
104
|
+
debugImplementation files(hermesPath + "hermes-debug.aar")
|
105
|
+
releaseImplementation files(hermesPath + "hermes-release.aar")
|
106
|
+
} else {
|
107
|
+
implementation jscFlavor
|
108
|
+
}
|
109
|
+
}
|
110
|
+
|
111
|
+
// Run this once to be able to run the application with BUCK
|
112
|
+
// puts all compile dependencies into folder libs for BUCK to use
|
113
|
+
task copyDownloadableDepsToLibs(type: Copy) {
|
114
|
+
from configurations.compile
|
115
|
+
into 'libs'
|
116
|
+
}
|
117
|
+
|
118
|
+
apply from: file("../../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesAppBuildGradle(project)
|
@@ -0,0 +1,38 @@
|
|
1
|
+
// Top-level build file where you can add configuration options common to all sub-projects/modules.
|
2
|
+
|
3
|
+
buildscript {
|
4
|
+
ext {
|
5
|
+
buildToolsVersion = "29.0.3"
|
6
|
+
minSdkVersion = 21
|
7
|
+
compileSdkVersion = 30
|
8
|
+
targetSdkVersion = 30
|
9
|
+
}
|
10
|
+
repositories {
|
11
|
+
google()
|
12
|
+
jcenter()
|
13
|
+
}
|
14
|
+
dependencies {
|
15
|
+
classpath("com.android.tools.build:gradle:4.1.0")
|
16
|
+
|
17
|
+
// NOTE: Do not place your application dependencies here; they belong
|
18
|
+
// in the individual module build.gradle files
|
19
|
+
}
|
20
|
+
}
|
21
|
+
|
22
|
+
allprojects {
|
23
|
+
repositories {
|
24
|
+
mavenLocal()
|
25
|
+
maven {
|
26
|
+
// All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
|
27
|
+
url("$rootDir/../node_modules/react-native/android")
|
28
|
+
}
|
29
|
+
maven {
|
30
|
+
// Android JSC is installed from npm
|
31
|
+
url("$rootDir/../node_modules/jsc-android/dist")
|
32
|
+
}
|
33
|
+
|
34
|
+
google()
|
35
|
+
jcenter()
|
36
|
+
maven { url 'https://www.jitpack.io' }
|
37
|
+
}
|
38
|
+
}
|
@@ -0,0 +1,6 @@
|
|
1
|
+
import { ConfigPlugin } from '@expo/config-plugins';
|
2
|
+
/**
|
3
|
+
* Update `app/build.gradle` by applying app-distribution monitoring plugin
|
4
|
+
*/
|
5
|
+
export declare const withApplyappDistributionPlugin: ConfigPlugin;
|
6
|
+
export declare function applyPlugin(appBuildGradle: string): string;
|
@@ -0,0 +1,28 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.withApplyappDistributionPlugin = void 0;
|
4
|
+
exports.applyPlugin = applyPlugin;
|
5
|
+
const config_plugins_1 = require("@expo/config-plugins");
|
6
|
+
const constants_1 = require("./constants");
|
7
|
+
/**
|
8
|
+
* Update `app/build.gradle` by applying app-distribution monitoring plugin
|
9
|
+
*/
|
10
|
+
const withApplyappDistributionPlugin = config => {
|
11
|
+
return (0, config_plugins_1.withAppBuildGradle)(config, config => {
|
12
|
+
if (config.modResults.language === 'groovy') {
|
13
|
+
config.modResults.contents = applyPlugin(config.modResults.contents);
|
14
|
+
}
|
15
|
+
else {
|
16
|
+
config_plugins_1.WarningAggregator.addWarningAndroid('react-native-firebase-app-distribution', `Cannot automatically configure app build.gradle if it's not groovy`);
|
17
|
+
}
|
18
|
+
return config;
|
19
|
+
});
|
20
|
+
};
|
21
|
+
exports.withApplyappDistributionPlugin = withApplyappDistributionPlugin;
|
22
|
+
function applyPlugin(appBuildGradle) {
|
23
|
+
const appDistributionPattern = new RegExp(`apply\\s+plugin:\\s+['"]${constants_1.appDistributionMonitoringPlugin}['"]`);
|
24
|
+
if (!appBuildGradle.match(appDistributionPattern)) {
|
25
|
+
appBuildGradle += `\napply plugin: '${constants_1.appDistributionMonitoringPlugin}'`;
|
26
|
+
}
|
27
|
+
return appBuildGradle;
|
28
|
+
}
|
@@ -0,0 +1,6 @@
|
|
1
|
+
import { ConfigPlugin } from '@expo/config-plugins';
|
2
|
+
/**
|
3
|
+
* Update `<project>/build.gradle` by adding app-distribution dependency to buildscript
|
4
|
+
*/
|
5
|
+
export declare const withBuildscriptDependency: ConfigPlugin;
|
6
|
+
export declare function setBuildscriptDependency(buildGradle: string): string;
|
@@ -0,0 +1,29 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.withBuildscriptDependency = void 0;
|
4
|
+
exports.setBuildscriptDependency = setBuildscriptDependency;
|
5
|
+
const config_plugins_1 = require("@expo/config-plugins");
|
6
|
+
const constants_1 = require("./constants");
|
7
|
+
/**
|
8
|
+
* Update `<project>/build.gradle` by adding app-distribution dependency to buildscript
|
9
|
+
*/
|
10
|
+
const withBuildscriptDependency = config => {
|
11
|
+
return (0, config_plugins_1.withProjectBuildGradle)(config, config => {
|
12
|
+
if (config.modResults.language === 'groovy') {
|
13
|
+
config.modResults.contents = setBuildscriptDependency(config.modResults.contents);
|
14
|
+
}
|
15
|
+
else {
|
16
|
+
config_plugins_1.WarningAggregator.addWarningAndroid('react-native-firebase-app-distribution', `Cannot automatically configure project build.gradle if it's not groovy`);
|
17
|
+
}
|
18
|
+
return config;
|
19
|
+
});
|
20
|
+
};
|
21
|
+
exports.withBuildscriptDependency = withBuildscriptDependency;
|
22
|
+
function setBuildscriptDependency(buildGradle) {
|
23
|
+
// TODO: Find a more stable solution for this
|
24
|
+
if (!buildGradle.includes(constants_1.appDistributionMonitoringClassPath)) {
|
25
|
+
return buildGradle.replace(/dependencies\s?{/, `dependencies {
|
26
|
+
classpath '${constants_1.appDistributionMonitoringClassPath}:${constants_1.appDistributionMonitoringVersion}'`);
|
27
|
+
}
|
28
|
+
return buildGradle;
|
29
|
+
}
|
@@ -0,0 +1,7 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.appDistributionMonitoringVersion = exports.appDistributionMonitoringPlugin = exports.appDistributionMonitoringClassPath = void 0;
|
4
|
+
const appPackageJson = require('@react-native-firebase/app/package.json');
|
5
|
+
exports.appDistributionMonitoringClassPath = 'com.google.firebase:firebase-appdistribution-gradle';
|
6
|
+
exports.appDistributionMonitoringPlugin = 'com.google.firebase.appdistribution';
|
7
|
+
exports.appDistributionMonitoringVersion = appPackageJson.sdkVersions.android.firebaseAppDistributionGradle;
|
@@ -0,0 +1,7 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.withApplyappDistributionPlugin = exports.withBuildscriptDependency = void 0;
|
4
|
+
const applyPlugin_1 = require("./applyPlugin");
|
5
|
+
Object.defineProperty(exports, "withApplyappDistributionPlugin", { enumerable: true, get: function () { return applyPlugin_1.withApplyappDistributionPlugin; } });
|
6
|
+
const buildscriptDependency_1 = require("./buildscriptDependency");
|
7
|
+
Object.defineProperty(exports, "withBuildscriptDependency", { enumerable: true, get: function () { return buildscriptDependency_1.withBuildscriptDependency; } });
|
@@ -0,0 +1,12 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
const config_plugins_1 = require("@expo/config-plugins");
|
4
|
+
const android_1 = require("./android");
|
5
|
+
/**
|
6
|
+
* A config plugin for configuring `@react-native-firebase/app-distribution`
|
7
|
+
*/
|
8
|
+
const withRnFirebaseAppDistribution = config => {
|
9
|
+
return (0, config_plugins_1.withPlugins)(config, [android_1.withBuildscriptDependency, android_1.withApplyappDistributionPlugin]);
|
10
|
+
};
|
11
|
+
const pak = require('@react-native-firebase/app-distribution/package.json');
|
12
|
+
exports.default = (0, config_plugins_1.createRunOncePlugin)(withRnFirebaseAppDistribution, pak.name, pak.version);
|
@@ -0,0 +1,29 @@
|
|
1
|
+
import { ConfigPlugin, WarningAggregator, withAppBuildGradle } from '@expo/config-plugins';
|
2
|
+
import { appDistributionMonitoringPlugin } from './constants';
|
3
|
+
|
4
|
+
/**
|
5
|
+
* Update `app/build.gradle` by applying app-distribution monitoring plugin
|
6
|
+
*/
|
7
|
+
export const withApplyappDistributionPlugin: ConfigPlugin = config => {
|
8
|
+
return withAppBuildGradle(config, config => {
|
9
|
+
if (config.modResults.language === 'groovy') {
|
10
|
+
config.modResults.contents = applyPlugin(config.modResults.contents);
|
11
|
+
} else {
|
12
|
+
WarningAggregator.addWarningAndroid(
|
13
|
+
'react-native-firebase-app-distribution',
|
14
|
+
`Cannot automatically configure app build.gradle if it's not groovy`,
|
15
|
+
);
|
16
|
+
}
|
17
|
+
return config;
|
18
|
+
});
|
19
|
+
};
|
20
|
+
|
21
|
+
export function applyPlugin(appBuildGradle: string) {
|
22
|
+
const appDistributionPattern = new RegExp(
|
23
|
+
`apply\\s+plugin:\\s+['"]${appDistributionMonitoringPlugin}['"]`,
|
24
|
+
);
|
25
|
+
if (!appBuildGradle.match(appDistributionPattern)) {
|
26
|
+
appBuildGradle += `\napply plugin: '${appDistributionMonitoringPlugin}'`;
|
27
|
+
}
|
28
|
+
return appBuildGradle;
|
29
|
+
}
|
@@ -0,0 +1,33 @@
|
|
1
|
+
import { ConfigPlugin, WarningAggregator, withProjectBuildGradle } from '@expo/config-plugins';
|
2
|
+
|
3
|
+
import { appDistributionMonitoringClassPath, appDistributionMonitoringVersion } from './constants';
|
4
|
+
|
5
|
+
/**
|
6
|
+
* Update `<project>/build.gradle` by adding app-distribution dependency to buildscript
|
7
|
+
*/
|
8
|
+
export const withBuildscriptDependency: ConfigPlugin = config => {
|
9
|
+
return withProjectBuildGradle(config, config => {
|
10
|
+
if (config.modResults.language === 'groovy') {
|
11
|
+
config.modResults.contents = setBuildscriptDependency(config.modResults.contents);
|
12
|
+
} else {
|
13
|
+
WarningAggregator.addWarningAndroid(
|
14
|
+
'react-native-firebase-app-distribution',
|
15
|
+
`Cannot automatically configure project build.gradle if it's not groovy`,
|
16
|
+
);
|
17
|
+
}
|
18
|
+
return config;
|
19
|
+
});
|
20
|
+
};
|
21
|
+
|
22
|
+
export function setBuildscriptDependency(buildGradle: string) {
|
23
|
+
// TODO: Find a more stable solution for this
|
24
|
+
if (!buildGradle.includes(appDistributionMonitoringClassPath)) {
|
25
|
+
return buildGradle.replace(
|
26
|
+
/dependencies\s?{/,
|
27
|
+
`dependencies {
|
28
|
+
classpath '${appDistributionMonitoringClassPath}:${appDistributionMonitoringVersion}'`,
|
29
|
+
);
|
30
|
+
}
|
31
|
+
|
32
|
+
return buildGradle;
|
33
|
+
}
|
@@ -0,0 +1,7 @@
|
|
1
|
+
const appPackageJson = require('@react-native-firebase/app/package.json');
|
2
|
+
|
3
|
+
export const appDistributionMonitoringClassPath =
|
4
|
+
'com.google.firebase:firebase-appdistribution-gradle';
|
5
|
+
export const appDistributionMonitoringPlugin = 'com.google.firebase.appdistribution';
|
6
|
+
export const appDistributionMonitoringVersion =
|
7
|
+
appPackageJson.sdkVersions.android.firebaseAppDistributionGradle;
|
@@ -0,0 +1,13 @@
|
|
1
|
+
import { ConfigPlugin, withPlugins, createRunOncePlugin } from '@expo/config-plugins';
|
2
|
+
|
3
|
+
import { withApplyappDistributionPlugin, withBuildscriptDependency } from './android';
|
4
|
+
|
5
|
+
/**
|
6
|
+
* A config plugin for configuring `@react-native-firebase/app-distribution`
|
7
|
+
*/
|
8
|
+
const withRnFirebaseAppDistribution: ConfigPlugin = config => {
|
9
|
+
return withPlugins(config, [withBuildscriptDependency, withApplyappDistributionPlugin]);
|
10
|
+
};
|
11
|
+
|
12
|
+
const pak = require('@react-native-firebase/app-distribution/package.json');
|
13
|
+
export default createRunOncePlugin(withRnFirebaseAppDistribution, pak.name, pak.version);
|
@@ -0,0 +1 @@
|
|
1
|
+
{"root":["./src/index.ts","./src/android/applyPlugin.ts","./src/android/buildscriptDependency.ts","./src/android/constants.ts","./src/android/index.ts"],"version":"5.6.2"}
|