Skip to content
This repository was archived by the owner on Mar 16, 2019. It is now read-only.

Commit 231cfab

Browse files
committed
Fix rnpm script #53
1 parent 6e170d7 commit 231cfab

File tree

1 file changed

+42
-0
lines changed

1 file changed

+42
-0
lines changed

src/scripts/prelink.js

+42
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,47 @@
11
var fs = require('fs');
2+
23
var MANIFEST_PATH = process.cwd() + '/android/app/src/main/AndroidManifest.xml';
4+
var PACKAGE_JSON = process.cwd() + '/package.json';
5+
6+
var hasNecessaryFile = fs.existsSync(MANIFEST_PATH) && fs.existsSync(MANIFEST_PATH);
7+
8+
if (!hasNecessaryFile) {
9+
throw 'RNFetchBlob could not found link Android automatically, some files could not be found.'
10+
}
11+
12+
var package = JSON.parse(fs.readFileSync(PACKAGE_JSON));
13+
var APP_NAME = package.name;
14+
var APPLICATION_MAIN = process.cwd() + '/android/app/src/main/java/com/' + APP_NAME.toLocaleLowerCase() + '/MainApplication.java';
15+
16+
if(!fs.existsSync(APPLICATION_MAIN)) {
17+
throw 'RNFetchBlob could not found link Android automatically, MainApplication.java not found in path : ' + APPLICATION_MAIN
18+
}
19+
20+
var VERSION = checkVersion();
21+
console.log('RNFetchBlob detected app version .. ' + VERSION);
322

23+
if(VERSION >= 0.29) {
24+
console.log('RNFetchBlob patching MainApplication.java .. ');
25+
var main = fs.readFileSync(APPLICATION_MAIN);
26+
if(String(main).match('new RNFetchBlobPackage()') !== null) {
27+
console.log('skipped');
28+
return
29+
}
30+
main = String(main).replace('new MainReactPackage()', 'new RNFetchBlobPackage(),\n new MainReactPackage()');
31+
main = String(main).replace('import com.facebook.react.ReactApplication;', 'import com.facebook.react.ReactApplication;\nimport com.RNFetchBlob.RNFetchBlobPackage;')
32+
fs.writeFileSync(APPLICATION_MAIN, main);
33+
console.log('RNFetchBlob patching MainApplication.java .. ok')
34+
35+
}
36+
37+
// set file access permission for Android < 6.0
438
fs.readFile(MANIFEST_PATH, function(err, data) {
539

640
if(err)
741
console.log('failed to locate AndroidManifest.xml file, you may have to add file access permission manually.');
842
else {
43+
44+
console.log('RNFetchBlob patching AndroidManifest.xml .. ');
945
// append fs permission
1046
data = String(data).replace(
1147
'<uses-permission android:name="android.permission.INTERNET" />',
@@ -17,7 +53,13 @@ fs.readFile(MANIFEST_PATH, function(err, data) {
1753
'<category android:name="android.intent.category.LAUNCHER" />\n <action android:name="android.intent.action.DOWNLOAD_COMPLETE"/>'
1854
)
1955
fs.writeFileSync(MANIFEST_PATH, data);
56+
console.log('RNFetchBlob patching AndroidManifest.xml .. ok');
2057

2158
}
2259

2360
})
61+
62+
function checkVersion() {
63+
console.log('RNFetchBlob checking app version ..');
64+
return parseFloat(/\d\.\d+(?=\.)/.exec(package.dependencies['react-native']));
65+
}

0 commit comments

Comments
 (0)