Skip to content

Commit 5bcb98e

Browse files
authored
fix(android): fix build when android.package is set on 0.80+ (#2511)
1 parent a04e6da commit 5bcb98e

File tree

2 files changed

+18
-29
lines changed

2 files changed

+18
-29
lines changed

scripts/configure-projects.js

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ const {
1515
findFile,
1616
findNearest,
1717
getPackageVersion,
18-
readJSONFile,
1918
readTextFile,
2019
toVersionNumber,
2120
v,
@@ -100,14 +99,9 @@ const getRNPackageVersion = (() => {
10099
})();
101100

102101
/**
103-
* @param {string | undefined} manifestPath
104102
* @returns {string | undefined}
105103
*/
106-
function getAndroidPackageName(manifestPath, fs = nodefs) {
107-
if (!manifestPath) {
108-
return undefined;
109-
}
110-
104+
function getAndroidPackageName(fs = nodefs) {
111105
try {
112106
const rncliAndroidVersion = getRNPackageVersion(
113107
"@react-native-community/cli-platform-android",
@@ -128,9 +122,7 @@ function getAndroidPackageName(manifestPath, fs = nodefs) {
128122
// We're on 0.76 or later
129123
}
130124

131-
/** @type {{ android?: { package?: string }}} */
132-
const manifest = readJSONFile(manifestPath, fs);
133-
return manifest.android?.package;
125+
return "com.microsoft.reacttestapp";
134126
}
135127

136128
/**
@@ -179,7 +171,7 @@ function configureProjects({ android, ios, windows }, fs = nodefs) {
179171
config.android = {
180172
sourceDir,
181173
manifestPath,
182-
packageName: packageName || getAndroidPackageName(appManifestPath, fs),
174+
packageName: packageName || getAndroidPackageName(fs),
183175
};
184176

185177
configureGradleWrapper(sourceDir, fs);

test/configure-projects.test.ts

Lines changed: 15 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@ import {
77
internalForTestingPurposesOnly,
88
} from "../scripts/configure-projects.js";
99

10+
// This value needs to be the same as `package` in
11+
// `android/app/src/main/AndroidManifest.xml`
12+
const packageName = "com.microsoft.reacttestapp";
13+
1014
describe("configureProjects()", () => {
1115
const manifestPath = path.join(
1216
"app",
@@ -29,7 +33,7 @@ describe("configureProjects()", () => {
2933
android: {
3034
sourceDir,
3135
manifestPath,
32-
packageName: undefined,
36+
packageName,
3337
},
3438
});
3539
});
@@ -113,10 +117,8 @@ describe("findReactNativeConfig()", () => {
113117
describe("getAndroidPackageName()", () => {
114118
const { getAndroidPackageName } = internalForTestingPurposesOnly;
115119

116-
const appManifest = "app.json";
117-
const packageId = "com.testapp";
118-
119120
function mockfs(cliPlatformAndroidVersion: string): typeof nodefs {
121+
const appManifest = "app.json";
120122
const cliPlatformAndroidPackageManifest =
121123
/@react-native-community[/\\]cli-platform-android[/\\]package.json$/;
122124
return {
@@ -125,7 +127,7 @@ describe("getAndroidPackageName()", () => {
125127
// @ts-expect-error Type 'string' is not assignable to type 'Buffer'
126128
readFileSync: (p) => {
127129
if (p === appManifest) {
128-
return JSON.stringify({ android: { package: packageId } });
130+
return JSON.stringify({ android: { package: "com.testapp" } });
129131
} else if (
130132
typeof p === "string" &&
131133
cliPlatformAndroidPackageManifest.test(p)
@@ -141,28 +143,23 @@ describe("getAndroidPackageName()", () => {
141143
};
142144
}
143145

144-
it("returns early if specified path is falsy", () => {
145-
equal(getAndroidPackageName(""), undefined);
146-
equal(getAndroidPackageName(undefined), undefined);
147-
});
148-
149146
it("returns early if `@react-native-community/cli-platform-android` <12.3.7", () => {
150-
equal(getAndroidPackageName(appManifest, mockfs("11.4.1")), undefined);
151-
equal(getAndroidPackageName(appManifest, mockfs("12.3.6")), undefined);
147+
equal(getAndroidPackageName(mockfs("11.4.1")), undefined);
148+
equal(getAndroidPackageName(mockfs("12.3.6")), undefined);
152149
});
153150

154151
it("returns package name if `@react-native-community/cli-platform-android` >=12.3.7 <13.0.0", () => {
155-
equal(getAndroidPackageName(appManifest, mockfs("12.3.7")), packageId);
156-
equal(getAndroidPackageName(appManifest, mockfs("12.999.999")), packageId);
152+
equal(getAndroidPackageName(mockfs("12.3.7")), packageName);
153+
equal(getAndroidPackageName(mockfs("12.999.999")), packageName);
157154
});
158155

159156
it("returns early if `@react-native-community/cli-platform-android` <13.6.9", () => {
160-
equal(getAndroidPackageName(appManifest, mockfs("13.0.0")), undefined);
161-
equal(getAndroidPackageName(appManifest, mockfs("13.6.8")), undefined);
157+
equal(getAndroidPackageName(mockfs("13.0.0")), undefined);
158+
equal(getAndroidPackageName(mockfs("13.6.8")), undefined);
162159
});
163160

164161
it("returns package name `@react-native-community/cli-platform-android` >=13.6.9", () => {
165-
equal(getAndroidPackageName(appManifest, mockfs("13.6.9")), packageId);
166-
equal(getAndroidPackageName(appManifest, mockfs("14.0.0")), packageId);
162+
equal(getAndroidPackageName(mockfs("13.6.9")), packageName);
163+
equal(getAndroidPackageName(mockfs("14.0.0")), packageName);
167164
});
168165
});

0 commit comments

Comments
 (0)