Skip to content
This repository was archived by the owner on May 20, 2025. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@ public class CodePushConstants {
public static final String ASSETS_BUNDLE_PREFIX = "assets://";
public static final String BINARY_MODIFIED_TIME_KEY = "binaryModifiedTime";
public static final String CODE_PUSH_FOLDER_PREFIX = "CodePush";
public static final String CODE_PUSH_HASH_FILE_NAME = "CodePushHash.json";
public static final String CODE_PUSH_HASH_FILE_NAME = "CodePushHash";
public static final String CODE_PUSH_OLD_HASH_FILE_NAME = "CodePushHash.json";
public static final String CODE_PUSH_PREFERENCES = "CodePush";
public static final String CURRENT_PACKAGE_KEY = "currentPackage";
public static final String DEFAULT_JS_BUNDLE_NAME = "index.android.bundle";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -109,12 +109,15 @@ public static String getHashForBinaryContents(Context context, boolean isDebugMo
try {
return CodePushUtils.getStringFromInputStream(context.getAssets().open(CodePushConstants.CODE_PUSH_HASH_FILE_NAME));
} catch (IOException e) {
if (!isDebugMode) {
// Only print this message in "Release" mode. In "Debug", we may not have the
// hash if the build skips bundling the files.
CodePushUtils.log("Unable to get the hash of the binary's bundled resources - \"codepush.gradle\" may have not been added to the build definition.");
try {
return CodePushUtils.getStringFromInputStream(context.getAssets().open(CodePushConstants.CODE_PUSH_OLD_HASH_FILE_NAME));
} catch (IOException ex) {
if (!isDebugMode) {
// Only print this message in "Release" mode. In "Debug", we may not have the
// hash if the build skips bundling the files.
CodePushUtils.log("Unable to get the hash of the binary's bundled resources - \"codepush.gradle\" may have not been added to the build definition.");
}
}

return null;
}
}
Expand Down
12 changes: 11 additions & 1 deletion scripts/generateBundledResourcesHash.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,8 @@ var path = require("path");
var getFilesInFolder = require("./getFilesInFolder");

var CODE_PUSH_FOLDER_PREFIX = "CodePush";
var CODE_PUSH_HASH_FILE_NAME = "CodePushHash.json";
var CODE_PUSH_HASH_FILE_NAME = "CodePushHash";
var CODE_PUSH_HASH_OLD_FILE_NAME = "CodePushHash.json";
var HASH_ALGORITHM = "sha256";
var TEMP_FILE_PATH = path.join(require("os").tmpdir(), "CodePushResourcesMap.json");

Expand Down Expand Up @@ -72,6 +73,15 @@ function addJsBundleAndMetaToManifest() {

var savedResourcesManifestPath = assetsDir + "/" + CODE_PUSH_HASH_FILE_NAME;
fs.writeFileSync(savedResourcesManifestPath, finalHash);

// "CodePushHash.json" file name breaks flow type checking.
// To fix the issue we need to delete "CodePushHash.json" file and
// use "CodePushHash" file name instead to store the hash value.
// Relates to https://github.com/Microsoft/react-native-code-push/issues/577
var oldSavedResourcesManifestPath = assetsDir + "/" + CODE_PUSH_HASH_OLD_FILE_NAME;
if (fs.existsSync(oldSavedResourcesManifestPath)) {
fs.unlinkSync(oldSavedResourcesManifestPath);
}
});
});
}
Expand Down