11var fs = require ( 'fs' ) ;
2+
23var 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
438fs . 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