{"_id":"rn-curiosity","_rev":"431-7716056190aca2c72adb87af9a1975c9","time":{"2.4.9":"2019-09-05T20:42:59.374Z","3.0.4":"2019-09-05T20:42:59.374Z","3.0.5":"2019-09-05T20:42:59.374Z","created":"2019-09-11T07:42:50.551Z","0.0.1":"2019-09-11T07:42:50.799Z","modified":"2022-05-16T02:18:10.751Z","0.0.2":"2019-12-27T16:11:09.625Z","0.0.3":"2019-12-28T07:10:54.998Z","0.0.4":"2019-12-28T15:36:21.695Z","0.1.0":"2020-01-02T02:15:05.619Z","0.1.1":"2020-01-02T02:45:16.255Z","0.1.2":"2020-01-04T03:46:54.220Z","0.2.0":"2020-01-06T16:27:06.139Z","0.2.1":"2020-01-07T02:24:02.781Z","0.3.0":"2020-01-08T14:20:36.477Z","0.3.1":"2020-01-08T14:30:23.327Z","0.3.2":"2020-01-08T15:05:58.413Z","0.3.3":"2020-01-08T15:12:01.386Z","0.3.5":"2020-01-08T15:56:58.630Z","0.3.6":"2020-01-09T03:28:46.568Z","0.3.7":"2020-01-09T04:00:59.739Z","0.3.8":"2020-01-09T09:26:50.088Z","0.3.10":"2020-01-09T10:42:07.137Z","0.3.11":"2020-01-24T08:47:52.806Z","0.3.12":"2020-01-24T08:52:38.984Z","0.3.13":"2020-01-24T09:41:20.858Z","0.4.0":"2020-01-24T09:46:11.229Z","0.4.1":"2020-01-24T10:46:39.184Z","0.4.2":"2020-01-24T12:12:59.272Z","0.5.0":"2020-10-26T05:29:31.911Z","0.5.1":"2020-10-26T05:32:54.229Z","0.5.2":"2020-10-26T08:21:27.596Z","0.5.3":"2020-10-26T08:46:56.625Z","0.5.5":"2020-12-12T12:33:36.406Z","0.5.6":"2020-12-12T14:08:42.432Z","1.0.1":"2021-01-26T02:06:22.909Z"},"name":"rn-curiosity","dist-tags":{"latest":"1.0.1"},"versions":{"0.0.1":{"name":"rn-curiosity","version":"0.0.1","description":"React Native rn-curiosity API for iOS & Android","main":"index.js","homepage":"https://github.com/Wayaer/rn-curiosity","license":"license","author":{"name":"Wayaer"},"scripts":{"npmPublish":"npm publish","npmUnPublish":"npm unpublish rn-curiosity@0.0.0","npmDeprecate":"npm deprecate rn-curiosity@0.0.0 Please update the version for rn-curiosity"},"gitHead":"662c72600f39810bdcf6320ead9d06a56c1002e4","_id":"rn-curiosity@0.0.1","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-yeWDn9Ols5p0DoJpbYgof1457Z6XKrEbrJbz92h1K3GgK7Zx13Deznc8Y4xVNZEopTLwCyvqIIZrG9tkJPfE3g==","shasum":"9650ceac217b2157c69412f0e3ef8fcf4fd4ac85","tarball":"https://registry.npmjs.org/rn-curiosity/-/rn-curiosity-0.0.1.tgz","fileCount":80,"unpackedSize":1030910,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdeKV7CRA9TVsSAnZWagAA7FUP/1cPHuPRk6yystQFSPFU\nIXaUZyVuyhuEjMBb8Bblc0O5504mGaHEy/AO2uYGcp13rGgW9SKS0Yl2SR0M\ndwA2yXDylqXtJW2xgLcrqleta+9oejVeBxub+5YiImo5NdT+/LUJuxtJmiYb\nR6IQdCIyFl1L8Dt/VV4ibonF+KB58w6hP0XXCsVfrY95MqIoRUGlTSq0lwo4\naoXIyYRuctvUk6n/OxSY5j87vyg0cCtYlEyl+l2IfTtiryf0xiea/urcIMRp\nDwE9NPxWBRw436DUHTOv97/OCzkTJTKOVdE+Ck1pMoafykbFWWo0RoGZ7XpW\n+c/aczsT7xZO7jwD8arf8tjk7PKu3XF2TBzuoOvylyAO2Kp6cUDFt0Lg/Ncv\nrVW5PsGwkelXI3p8S2/6InT+74HsZ1zTnOT93Dodpl9sqqjBrkvmJtwNpVXh\nMXa/Kq7Y0t9Rtu6ll4NssEaaadkmRBvd86n95EkBJwQf8c6pOBM2BkTF79kW\nOlJZ6MrP0P/Efhu+UZ2+5csiTAi1G45fqxQnScJJghbIuYWiPh7ym1ABlY2j\nEQGwlnqB/5Hudi/Yqbvp+P5w65SPaK3yC5ICElpQaB4LYyp0cFOJBkFtguNT\nect9rblmmaZ2joog4HQvGN08M2GALcUE+2u0WtetsjUawYit/nQbJaN9h32M\njkU5\r\n=pfsh\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD6er47mOmToIZKpFtip7qvSFbQebUS0E51p7ICDM61RgIhAMwuhK0H+Mf5AKgcPj+d8DeBBspYcfQo7RaSkBkY101R"}]},"maintainers":[{"name":"wayaer","email":"Wayaer@foxmail.com"}],"_npmUser":{"name":"wayaer","email":"Wayaer@foxmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/rn-curiosity_0.0.1_1568187770551_0.1364934541252616"},"_hasShrinkwrap":false},"0.4.2":{"name":"rn-curiosity","version":"0.4.2","description":"React Native rn-curiosity API for iOS & Android","main":"index.js","pod":"RNCuriosity","homepage":"https://github.com/Wayaer/rn-curiosity","license":"license","author":{"name":"Wayaer"},"scripts":{"useNpm":"npx nrm use npm","useTaoBao":"npx nrm use taobao","npmPublish":"npm publish","npmUnPublish":"npm unpublish rn-curiosity@0.4.1","npmDeprecate":"npm deprecate rn-curiosity@0.0.0 Please update the version for rn-curiosity"},"gitHead":"286f7a6a40674038c87a12c2919e297cd5d938f8","_id":"rn-curiosity@0.4.2","_nodeVersion":"13.2.0","_npmVersion":"6.13.1","dist":{"integrity":"sha512-bKzakMCbzzcfe/spnVe6xTKtNw5MZR7WcD7xWMIbw1Hc/ARE1rkjLYI2MOwyQWw2XkzWvtjLtz+M5aTwcv4KEQ==","shasum":"d5628d81cbd2e5c9767948a4bc039134843c9d1e","tarball":"https://registry.npmjs.org/rn-curiosity/-/rn-curiosity-0.4.2.tgz","fileCount":48,"unpackedSize":864662,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeKt9LCRA9TVsSAnZWagAAxFcP/jbGL3DnpVDhkVoO9F14\nVn9cynjIye669D5ODZrM94xuoOSiERISd1sMFdVsSnmTpdIscM8kZFtAZEoF\n3W9B+4PhxyNFmtMpsAxWAC/OUNECNOvZr8epaJfzod+cuvHuG2t98AWkgdy5\nafgyIL4JZed/P6WJNDBMWfBqyycN3Bay0wOnQ+aWUROCiHj2OeeEPW6to879\nHIUC50zdR51BSzfzRUKOK6mx8BZasY3B2ImzHUJxbEJUS/D1kie5wJ+Qy5rV\nwFiMzgQn2bFHWt1UMRG65Aq3rls1fDpegdxMGWhz8qan1Zljd6W1jvOMYUIh\nwkoTpU7P39yl1YRouegzVNd3SXdfTjeXBcEz1bxyx1vgu4WeHBgIalRMWpp9\nvOyy8q9F/J1Suv0zt+kYDJtECHvXptFvOdsu7WqkMzHM6+fqVFztMgsHbM9h\neVlAXeZtjTFliKQ5BO3CqONkpIpbTCm77Wy2G8A1B3dvr65MNdQHP7cRUPEv\nRyCM7Rz7ORlOXUGTbJjq9yzPoPXr8E5WcYtUSw0+g62ka87cAIZEpkfG8GkB\naSVGTwgNcg3KDWg7Aj1AWuPaFhH4RlMVi2SWB2GJh9d8Ful/ShhiGeaCAS+j\nCTYpqJi7ek5ciEXJHULPNKneA2MWhpZ8vPYJOq6iszfVK90wLZ06ipoXkMZM\nYn2g\r\n=Uls7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCQLKfCPuujAITSgjj5hYPGqvvAuPqt/R+iooIzVqLZtQIhAJYiJzkrX8lxSysGdGYg1F9XOZ30myfe5uAe2/+QFJf4"}]},"maintainers":[{"name":"wayaer","email":"Wayaer@foxmail.com"}],"_npmUser":{"name":"wayaer","email":"Wayaer@foxmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/rn-curiosity_0.4.2_1579867979110_0.8404622740687782"},"_hasShrinkwrap":false},"0.5.3":{"name":"rn-curiosity","version":"0.5.3","description":"React Native rn-curiosity API for iOS & Android","main":"index.js","pod":"RNCuriosity","homepage":"https://github.com/Wayaer/rn-curiosity","license":"license","author":{"name":"Wayaer"},"scripts":{"useNpm":"npx nrm use npm","useTaoBao":"npx nrm use taobao","npmPublish":"npm publish","npmUnPublish":"npm unpublish rn-curiosity@0.5.2","npmDeprecate":"npm deprecate rn-curiosity@0.0.0 Please update the version for rn-curiosity"},"dependencies":{"rn-fetch-blob":"^0.12.0"},"devDependencies":{"react-native":"^0.63.3"},"gitHead":"6152fec54bbcb55c3937d69bffff9fbda25f65a2","_id":"rn-curiosity@0.5.3","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-juMt04aEWqcUcfFeWcvZmefRY4IEiNIOskE5Tx/y33CdU2lXbK+c1JL356lwW6L0mmys6Vmk6apP5u8Fbbr6Zw==","shasum":"344a19ecd0d2f77be49021fa1c54b8b656fc0dd5","tarball":"https://registry.npmjs.org/rn-curiosity/-/rn-curiosity-0.5.3.tgz","fileCount":48,"unpackedSize":917982,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJflo0ACRA9TVsSAnZWagAARiYP/1dLPQ5lrh4vae/mmPsG\n+fIIMWpEBnAR5oYTBd1F97fJQUAHqXXpZjqjTf9kf54CBfy6j3vo0LL/UgRN\nmXLnSSNvHjsbSG/m4TAqqmW1n6OV078ew9QH1bm04Sl1SRG33cUjVngF0UnZ\nSEuFuu2jw498UFBtUdTmMpEnw46oA0LFkbJ6HuB1/0LoW9wAcEhBBVm5YKiM\naNVYcADe1iz8kLh7C5Owg4bll8YR/8/nR3YeDqmWwbUI9d7GDYoZ13BC+FzY\n/e2audtbPr7BG58kkPSpnDlv3E6lRf7JQEX79MqfGJp60v8yztmLGJaHhnvF\niEjRXp45KLAaUi2O4OjClPwCua7S4BGGMXkx7nfeBW2cZ/Zckgu7TI239IRj\nrQaH19n/ErYYNX8XribquwtVNaDOHYp0oND9QicCjHFDakQHhV2/sTbsO95P\nD8gyz3ZSVAERgKLvT1FkrwhOWEQPJZejn6kZfi/vWBEWb3ykmnZEhZ5QzTMr\nvPmI9DvR3oVOfy+m+jfl7xCoIPiLqP695VFdndUfbJZsHtInF2zDz+Ek1SBt\ndZsBhKEOsO9oTVG4uMfgH/5fk+CPeMa9feFK30cau77zXKx7at+ISEgUpLJl\nVgn+J9asceXRmNDp2HzhSX9wvOje9EUrVB/J9G0yHXPEuUff8XSAJ08s5BpL\ngJv/\r\n=jtHB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICpfumrcSHwXLOEBh89U6lED0pdNTUIGSYE2uBsiYYX6AiA2DyFFcAWUB3h39JI9QjxkjOfrBzYDgme5PkQ/jB3bfQ=="}]},"maintainers":[{"name":"wayaer","email":"Wayaer@foxmail.com"}],"_npmUser":{"name":"wayaer","email":"Wayaer@foxmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/rn-curiosity_0.5.3_1603702016357_0.0029051218903337617"},"_hasShrinkwrap":false},"0.5.6":{"name":"rn-curiosity","version":"0.5.6","description":"React Native rn-curiosity API for iOS & Android","main":"index.js","pod":"RNCuriosity","homepage":"https://github.com/Wayaer/rn-curiosity","license":"license","author":{"name":"Wayaer"},"scripts":{"useNpm":"npx nrm use npm","useTaoBao":"npx nrm use taobao","npmPublish":"npm publish","npmUnPublish":"npm unpublish rn-curiosity@0.5.5","npmDeprecate":"npm deprecate rn-curiosity@0.0.0 Please update the version for rn-curiosity"},"dependencies":{"rn-fetch-blob":"^0.12.0"},"devDependencies":{"react-native":"^0.63.3"},"gitHead":"a30d61a1fdd646dfddacd6ccf1ab7dd7d7b8e35c","_id":"rn-curiosity@0.5.6","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-mVJkl9nnLTl7LcUSVwAND4hsJBbPrrkavDo5RDp99PX7pvm9vdz4sr5U69hSYKTBz5df+Ut30awLn9Fl020HBA==","shasum":"d57f6effad6cd139f813e290d9559d0773547281","tarball":"https://registry.npmjs.org/rn-curiosity/-/rn-curiosity-0.5.6.tgz","fileCount":49,"unpackedSize":923375,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf1M7qCRA9TVsSAnZWagAAoEQP/2DRDaIBSvshlAsqABuj\nITimAtLt2TA5aymQm0WMH5DKk1ychjN0hAoaLYVC+KqDiY1cTc+ig4pE/COu\n+ugONiLTSfnRx0ILzGZGc+kRiMwYMilPxU89Lkvmn8g1CoKurU/0NwSJxLWT\nZUMGribl7W9Wcnd9At18/yIVqjFsrv92PqtRw8eA7JKfLlHPpMIL/on2jaUu\nVrMxKnIoj9reBmpVQqG9xTWdjMOwlKxshvLpakEXzaYlD72R5TFx7u/vwS1+\nTmJv8CCYYvCUPFqEjBSyrsSoVe7CDAzjw6tI6Mzw2HB26taBSWEepatQXlMS\njsGEGOrZAFLFAAWoDjlhTbQSmpUl18x1bhLyuuKws2JTGKuJoGXpIl3mYKMU\nclSkUlve2+bwWnWCJKoQwqRP/rHlUDXGlPWHcifAGwVMgLKAX4ckeXp0yISA\nrwKboTbkVHaH5ZUzJhGWVL0IR/iuoPAo964MxA8tmobCVN7FgApArrZGTXP5\nmIslYZuxzpGR339Z6CnKJH1qKq39iUIa9u6+TDulXfLIbdtYy0vmyTCRKUB8\nhDOsOz2Y9jdmB57RPOQBd8hBwCl2wrtAlBJhCS91FI0RPANxfFx8i4w1HIwZ\nwno5pLS82+AurgratgGpwj5sHJx2O1PVA5Zw1ai1BBoLOADVB4T3IX5cyj6N\nA7Z5\r\n=Ugtr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDQh1HvJnj93Tfl8d5ik4CJQ1MMgpmOd1sEZuSdPhzNCgIhAMFe4H63iv3lz/ZPTlCfQwp3AzA4ITS1aVzFr2jVmWRF"}]},"_npmUser":{"name":"wayaer","email":"Wayaer@foxmail.com"},"directories":{},"maintainers":[{"name":"wayaer","email":"Wayaer@foxmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/rn-curiosity_0.5.6_1607782122187_0.9777428741704639"},"_hasShrinkwrap":false},"1.0.1":{"name":"rn-curiosity","version":"1.0.1","description":"React Native rn-curiosity API for iOS & Android","main":"index.js","pod":"RNCuriosity","homepage":"https://github.com/Wayaer/rn-curiosity","license":"license","author":{"name":"Wayaer"},"scripts":{"useNpm":"npx nrm use npm","useTaoBao":"npx nrm use taobao","npmPublish":"npm publish","npmUnPublish":"npm unpublish rn-curiosity@0.5.5","npmDeprecate":"npm deprecate rn-curiosity@0.0.0 Please update the version for rn-curiosity"},"dependencies":{"rn-fetch-blob":"^0.12.0","@react-native-community/async-storage":"1.12.1"},"peerDependencies":{"rn-fetch-blob":">=0.12.0","@react-native-community/async-storage":">=1.12.1","@react-native-community/netinfo":">=5.9.10"},"devDependencies":{"react-native":"^0.63.3"},"gitHead":"4a1afddc63b5afa172512f619fb271d05c831950","_id":"rn-curiosity@1.0.1","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-/z9jhEuVsC+Ym7oAogeHM03cFbHwtxqBrT6txvmVNs2iBRAGXZuYA0yRZjD1LEn2398SVvhY7gx978YoLmOOUg==","shasum":"5b949b6f22dd6b6b248b768f60b03672e5bf96ee","tarball":"https://registry.npmjs.org/rn-curiosity/-/rn-curiosity-1.0.1.tgz","fileCount":50,"unpackedSize":938778,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgD3kfCRA9TVsSAnZWagAAm04QAICGnaluPU/GwY98rgfo\n6jBzFYQHa4+Yx6QLc9urVVDSbiJRafhPKj1rUwPrFvV99E1bbBk52zIcWC23\nhefA9gusXzzE4O3eXJXv+5f+AwzfxQnQuIXhEURQxS7bsmJXmf1lQZMhUXtM\nlcHySoFGoM5u8k+xcvHBlv1KVIU6+mAr+97TcERi7Rl6trHrMj89hEViKqT+\nTisQpYRqUQ3HWV6FMkuBWqynrSixHZ0B/frB1/qYPSRePzRJyOkO018eLnB2\nfAG5W5zgKJyRoQYe//k4etQZlqCxs+a1/MwBx/gnjm8CfQJUEjGvMP30XhCW\n8O26XaiXlhLtb1JZQk0KLvD7BsbTnw8M++B1zELVi6k26RGMIKYP4O/+mRdX\nJ+CwDy1+aVsy7uOfSUkoQMQ3esW1gHZz92fu0/v8ZILiMQk39xI/tbNH9vY/\nonzB/09h21vpWpms0MKGZCNG7eqaE5K5fCBBylRJccY57YrkZLp5xAtWJ3GC\n+G+hxpdoR9KB63ZddrtH1Rf9537MMahE24W5rG9qezFA7qEmE53nOFuqeG/j\n4x5+ev5jQ2RwX6fI7nDF3shreNiZucjFjy7tIcY5BugzdADBqZhBbnkzamD4\nxIC8MvxksJXJPhQ84zPqJiSaoIwsHVU62FRinrTNzCLfKnxTYxHooZOJg5jp\nNIVV\r\n=rM96\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC4FeCW0WiZdgAcWh3f6yYnDF9pDQXLCzEmkuFru/78zQIhAJnRxxa2vvas46oFyZUqKiDVVH1Ib9exDyDtnjbIo2Bu"}]},"_npmUser":{"name":"wayaer","email":"Wayaer@foxmail.com"},"directories":{},"maintainers":[{"name":"wayaer","email":"Wayaer@foxmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/rn-curiosity_1.0.1_1611626782715_0.587609062793625"},"_hasShrinkwrap":false}},"maintainers":[{"name":"wayaer","email":"Wayaer@foxmail.com"}],"description":"React Native rn-curiosity API for iOS & Android","homepage":"https://github.com/Wayaer/rn-curiosity","author":{"name":"Wayaer"},"license":"license","readme":"\n# rn-curiosity\n\n## rn-curiosity，原生工具集合\n\n react-native >0.60.0\n```\n\n   yarn add rn-curiosity\n \n```\n \n react-native <0.59\n```\n   yarn add rn-curiosity\n\n   react-native link rn-curiosity \n```\n0.60以下版本Android编译会报错 \n```\n   import androidx . annotation. Nullable;\n```\n需要在 android/gradle.properties 文件下\n加入以下代码\n```\n\n   android.useAndroidX=true\n   android.enableJetifier=true\n   \n```\n## 部分原生方法 NativeUtils\n[参考NativeUtils文件](src/native_utils.js)\n\n## 网络请求封装 FetchBlob\n[参考FetchBlob文件](src/fetch_blob.js)\n\n## 本地存储 StorageTools\n调用方式\n```\n Storage.xxx\n```\n[参考storage=文件](src/storage.js)\n\n\n## 支付宝支付 Ali_pay\n[参考AliPay文件](src/ali_pay.js)\n\n## 渐变组件 Linear_gradient\n[参考LinearGradient文件](src/linear_gradient.js)\n\n# 热更新\n\n## 热更新工具类 UploadTools\n[参考UploadTools文件](src/upload_utils.js)\n\n## JS调用热更新\n\n```\n  调用方式\n  参数传递见方法注解，bundle 本地储存地址均为固定地址，不可改变\n\n  UploadTools.uploadBundle()  //bundle版本校验及下载解压，\n  \n  UploadTools.downloadBundleZipWithUnZip()  //bundle 下载和解压，具体的版本校验自行判断\n\n```\n[参考UploadTools.uploadBundle方法和downloadBundleZipWithUnZip方法](src/UploadTools.js)\n```\n    /**\n     * 此方法包含 校验bundle版本号匹配问题已经下载和解压\n     * 版本号必须为int类型，字段key 不可改变\n     * netVersion={\n     *     androidBundleVersion:0,\n     *     androidVersion:1,\n     *     iosBundleVersion:0,\n     *     iosVersion:1,\n     *   }\n     * OSS目录文件 服务器文件下载目录,目录不可更改\n     *\n     * ├── OSS\n     *      ├──android\n     *            ├──bundle\n     *                 ├── 0  (版本号)\n     *                     └──bundle.zip\n     *                 ├── 1  (版本号)\n     *                     └──bundle.zip\n     *                 ├── 2  (版本号)\n     *                     └──bundle.zip\n     *            ├──apk\n     *                 ├── 0  (版本号)\n     *                     └──0.apk\n     *                 ├── 1  (版本号)\n     *                     └──1.apk\n     *                 ├── 2  (版本号)\n     *                     └──2.apk\n     *       ├──ios\n     *            ├──bundle\n     *                 ├── 0  (版本号)\n     *                     └──bundle.zip\n     *                 ├── 1  (版本号)\n     *                     └──bundle.zip\n     *                 ├── 2  (版本号)\n     *                     └──bundle.zip\n     *            ├──ipa     //分发平台版本号\n     *                 ├── 0  (版本号)\n     *                     └──0.ipa\n     *                 ├── 1  (版本号)\n     *                     └──1.ipa\n     *                 ├── 2  (版本号)\n     *                     └──2.ipa\n     *            ├──store_ipa  //官方版本号\n     *                 ├── 0  (版本号)\n     *                     └──0.ipa\n     *                 ├── 1  (版本号)\n     *                     └──1.ipa\n     *                 ├── 2  (版本号)\n     *                     └──2.ipa\n     *\n     * @param netVersion\n     * @param localAndroidBundleVersion    可在package.json中加入两个字段 并从中获取\n     * @param localIosBundleVersion        可在package.json中加入两个字段 并从中获取\n     * @param OSSUrl\n     * @param bundleUnZip\n     */\n     static uploadBundle(netVersion, localAndroidBundleVersion, localIosBundleVersion, OSSUrl, bundleUnZip) {\n       if (this.checkNumber(netVersion.androidBundleVersion) &&\n         this.checkNumber(netVersion.androidVersion) &&\n         this.checkNumber(netVersion.iosBundleVersion) &&\n         this.checkNumber(netVersion.iosVersion) &&\n         this.checkNumber(localAndroidBundleVersion) &&\n         this.checkNumber(localIosBundleVersion)) {\n         const localVersionCode = Constant.VersionCode;\n         if (Constant.Android) {\n           if ((netVersion.androidVersion) === localVersionCode && (netVersion.androidBundleVersion) > localAndroidBundleVersion) {\n             Utils.downloadBundleZipWithUnZip(OSSUrl + 'android/bundle/' + (netVersion.androidBundleVersion) + '/bundle.zip', (percent) => {\n             }, () => {\n               bundleUnZip && bundleUnZip();\n             });\n           } else if ((netVersion.iosVersion) === localVersionCode && (netVersion.iosBundleVersion) < localAndroidBundleVersion) {\n             Utils.deleteBundle();\n           }\n         } else if (Constant.IOS) {\n           if ((netVersion.iosVersion) === localVersionCode && (netVersion.iosBundleVersion) > localIosBundleVersion) {\n             Utils.downloadBundleZipWithUnZip(OSSUrl + 'android/bundle/' + (netVersion.androidBundleVersion) + '/bundle.zip', (percent) => {\n             }, () => {\n               bundleUnZip && bundleUnZip();\n             });\n           } else if ((netVersion.iosVersion) === localVersionCode && (netVersion.iosBundleVersion) < localIosBundleVersion) {\n             this.deleteBundle();\n           }\n         }\n       } else {\n         return console.error('version type error (not number)');\n       }\n     }\n     \n     \n     \n     \n   /**\n    * 下载并解压bundle文件,此方法只可以下载和解压至固定位置，\n    * 固定位置\n    * android:/data/user/0/{packageName}/files/\n    * ios:/var/mobile/Containers/Data/Application/{186EE408-3B95-4A09-B8E2-E1C14B333E2B}/Library/\n    *\n    * @param url\n    * @param callbackPercent\n    * @param callbackUnzip\n    */\n   static downloadBundleZipWithUnZip(url, callbackPercent, callbackUnzip) {\n     if (Constant.IOS) {\n       const path = Constant.LibraryDirectory + '/';\n       FetchBlob.downloadFile(url, path, 'bundle.zip', (percent) => {\n         return callbackPercent(percent);\n       }, () => {\n         NativeUtils.unZipFile(path + 'bundle.zip', (zip) => {\n           return callbackUnzip(zip);\n         });\n       }, (fail) => {\n         return console.error('download Fail');\n       });\n     } else if (Constant.Android) {\n       const path = Constant.FilesDir + '/';\n       FetchBlob.downloadFile(url, path, 'bundle.zip', (percent) => {\n         return callbackPercent(percent);\n       }, () => {\n         NativeUtils.unZipFile(path + 'bundle.zip', (zip) => {\n           return callbackUnzip(zip);\n         });\n       }, (fail) => {\n         return console.error('download Fail');\n       });\n     }\n   }\n\n  \n```   \n\n\n```\n *分别在android & ios bundle.zip 中加入version.json文件，\n\n version.json  * 用于匹配当前app版本号和bundle内app版本号是否匹配，不匹配则删除 bundle.zip\n\n {\n   appVersion:1  //版本号为android:versionCode   ios:Build\n }\n```\n\n\nAndroid:\n[参考ApplicationTest](android/src/main/java/com/curiosity/ApplicationTest.java)\n\n    \n```\n\n   android/app/src/com/包名/MainApplication 中加入以下代码\n   \n   \n       \n   import com.curiosity.NativeTools;\n   import java.io.File;\n   \n   public class MainApplication extends Application implements ReactApplication { \n     ...\n     private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) {\n        \n       ...\n       /*\n        * bundle加载判断\n        * */\n         @Override\n         protected String getJSBundleFile() {\n           if (NativeTools.getBundleFile(getApplicationContext()) != null && NativeTools.matchingVersion(getApplicationContext())) {\n                 return NativeTools.getBundleFile(getApplicationContext()).getAbsolutePath();\n              } else {\n                 return super.getJSBundleFile();\n              }\n         }\n       ... \n      };\n      ...\n    }\n```\n\n\nIOS:\n\n[参考AppDelegateTest](ios/RNCuriosity/AppDelegateTest.m)\n\n[IOS 运行http请求文件配置信息](src/res/ioshttp.png)\n\n```\n//热更新导入头部\n\n#import \"RNCuriosity.h\"\n\n\n\n热更新 react-native 0.40>&&<0.59\n\n- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken\n{\n\n...\nNSURL *jsCodeLocation;\n#ifdef DEBUG\n    jsCodeLocation = [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@\"index\" fallbackResource:nil];\n#else\n\n   if([NativeTools isBundle]&&[NativeTools matchingVersion]){\n        jsCodeLocation=[NativeTools urlBundle];\n    }else{\n        jsCodeLocation =[[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@\"/index\" fallbackResource:nil];\n   }\n#endif\n\n...\n\n  [NativeTools showSplashScreen];  //开启启动屏\n  return YES;\n}\n\n\n\n热更新 react-native >0.59\n...\n- (NSURL *)sourceURLForBridge:(RCTBridge *)bridge\n{\n#if DEBUG\n   return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@\"index\" fallbackResource:nil];\n#else\n    if([RNCuriosity isBundle]&&[RNCuriosity matchingVersion]){\n       return [RNCuriosity urlBundle];\n   }else{\n        return [[NSBundle mainBundle] URLForResource:@\"main\" withExtension:@\"jsbundle\"];\n    }\n#endif\n}\n...\n\n```\n\nAndroid问题解决\n\nandroid react-native-gesture-handler 编译爆红\n\n<img  src=\"src/res/android_support.v4.png\" width=\"852\" height = \"294\">\n\n``` \n   问题： 程序包android.support.v4 不存在\n   \n   原因： 0.60.0以下旧版本无法兼容 AndroidX  \n \n   解决办法： （所有v4包找不到的问题 都可用此办法，如果yarn或者npm后，都需要执行以下代码）\n  \n   npm install --save-dev jetifier （如若已安装jetifier 可省略此步骤）\n   \n   npx jetify\n   \n   cd android && ./gradlew clean\n   \n   react-native run-android\n   \n```\n\n   如果你安装新的第三方库 一定要执行\n   \n   npx jetify\n\n\nandroid 9.0 无法请求接口问题解决\n\n```\nandroid/src/main/AndroidManiTest.xml  中加入代码\n\n  \n<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    package=\"com.happylife\">\n\n    <uses-permission android:name=\"android.permission.INTERNET\" />\n \n    <application\n        android:name=\".MainApplication\"\n        android:allowBackup=\"false\"\n        android:icon=\"@mipmap/ic_launcher\"\n        android:label=\"@string/app_name\"\n        android:networkSecurityConfig=\"@xml/network_config\"     //加入代码\n        android:roundIcon=\"@mipmap/ic_launcher_round\"\n        android:theme=\"@style/AppTheme\">\n        <activity\n            android:name=\".MainActivity\"\n            android:configChanges=\"keyboard|keyboardHidden|orientation|screenSize\"\n            android:label=\"@string/app_name\"\n            android:windowSoftInputMode=\"adjustResize\">\n            <intent-filter>\n                <action android:name=\"android.intent.action.MAIN\" />\n                <category android:name=\"android.intent.category.LAUNCHER\" />\n            </intent-filter>\n        </activity>\n        <activity android:name=\"com.facebook.react.devsupport.DevSettingsActivity\" />\n    </application>\n\n</manifest>\n\n\n```\n\n","readmeFilename":"README.md"}