PageSourceSearch

https://www.react-native.cn/assets/js/ab535e60.d6c2846c.js

js react-native.cn collected 2026-09-25 23:50:05 UTC 21,238 bytes, 1 lines download raw bytes

1"use strict";(self.webpackChunkreact_native_website=self.webpackChunkreact_native_website||[]).push([["1463"],{41617(e,n,d){d.r(n),d.d(n,{metadata:()=>i,default:()=>h,frontMatter:()=>c,contentTitle:()=>s,toc:()=>o,assets:()=>a});var i=JSON.parse('{"id":"react-native-gradle-plugin","title":"React Native Gradle Plugin","description":"\u672C\u6307\u5357\u63CF\u8FF0\u4E86\u5982\u4F55\u914D\u7F6E React Native Gradle Plugin\uFF08\u901A\u5E38\u79F0\u4E3A RNGP\uFF09\u6765\u4E3A Android \u6784\u5EFA React Native \u5E94\u7528\u3002","source":"@site/versioned_docs/version-0.76/react-native-gradle-plugin.md","sourceDirName":".","slug":"/react-native-gradle-plugin","permalink":"/docs/0.76/react-native-gradle-plugin","draft":false,"unlisted":false,"editUrl":"https://github.com/reactnativecn/react-native-website/blob/production/cnwebsite/../cndocs/react-native-gradle-plugin.md","tags":[],"version":"0.76","frontMatter":{"id":"react-native-gradle-plugin","title":"React Native Gradle Plugin"},"sidebar":"docs","previous":{"title":"\u548C\u539F\u751F\u7AEF\u901A\u4FE1","permalink":"/docs/0.76/communication-android"},"next":{"title":"\u94FE\u63A5\u539F\u751F\u5E93","permalink":"/docs/0.76/linking-libraries-ios"}}'),l=d(62540),r=d(43023);let c={id:"react-native-gradle-plugin",title:"React Native Gradle Plugin"},s,a={},o=[{value:"\u4F7F\u7528\u63D2\u4EF6",id:"\u4F7F\u7528\u63D2\u4EF6",level:2},{value:"\u914D\u7F6E\u63D2\u4EF6",id:"\u914D\u7F6E\u63D2\u4EF6",level:2},{value:"<code>root</code>",id:"root",level:3},{value:"<code>reactNativeDir</code>",id:"reactnativedir",level:3},{value:"<code>codegenDir</code>",id:"codegendir",level:3},{value:"<code>cliFile</code>",id:"clifile",level:3},{value:"<code>debuggableVariants</code>",id:"debuggablevariants",level:3},{value:"<code>nodeExecutableAndArgs</code>",id:"nodeexecutableandargs",level:3},{value:"<code>bundleCommand</code>",id:"bundlecommand",level:3},{value:"<code>bundleConfig</code>",id:"bundleconfig",level:3},{value:"<code>bundleAssetName</code>",id:"bundleassetname",level:3},{value:"<code>entryFile</code>",id:"entryfile",level:3},{value:"<code>extraPackagerArgs</code>",id:"extrapackagerargs",level:3},{value:"<code>hermesCommand</code>",id:"hermescommand",level:3},{value:"<code>hermesFlags</code>",id:"hermesflags",level:3},{value:"\u4F7F\u7528 Flavors \u4E0E Build Variants",id:"\u4F7F\u7528-flavors-\u4E0E-build-variants",level:2},{value:"\u63D2\u4EF6\u5728\u5E55\u540E\u505A\u4EC0\u4E48\uFF1F",id:"\u63D2\u4EF6\u5728\u5E55\u540E\u505A\u4EC0\u4E48",level:2}];function t(e){let n={a:"a",code:"code",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,r.R)(),...e.components};return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)(n.p,{children:["\u672C\u6307\u5357\u63CF\u8FF0\u4E86\u5982\u4F55\u914D\u7F6E ",(0,l.jsx)(n.strong,{children:"React Native Gradle Plugin"}),"\uFF08\u901A\u5E38\u79F0\u4E3A RNGP\uFF09\u6765\u4E3A Android \u6784\u5EFA React Native \u5E94\u7528\u3002"]}),"\n",(0,l.jsx)(n.h2,{id:"\u4F7F\u7528\u63D2\u4EF6",children:"\u4F7F\u7528\u63D2\u4EF6"}),"\n",(0,l.jsxs)(n.p,{children:["React Native Gradle Plugin \u4F5C\u4E3A\u5355\u72EC\u7684 NPM \u5305\u5206\u53D1\uFF0C\u5E76\u968F ",(0,l.jsx)(n.code,{children:"react-native"})," \u81EA\u52A8\u5B89\u88C5\u3002"]}),"\n",(0,l.jsxs)(n.p,{children:["\u63D2\u4EF6\u5DF2\u4E3A\u4F7F\u7528 ",(0,l.jsx)(n.code,{children:"npx react-native init"})," \u521B\u5EFA\u7684\u65B0\u9879\u76EE\u914D\u7F6E\u3002\u5982\u679C\u4F60\u4F7F\u7528\u6B64\u547D\u4EE4\u521B\u5EFA\u5E94\u7528\uFF0C\u5219\u4E0D\u9700\u8981\u8FDB\u884C\u4EFB\u4F55\u989D\u5916\u6B65\u9AA4\u6765\u5B89\u88C5\u5B83\u3002"]}),"\n",(0,l.jsxs)(n.p,{children:["\u5982\u679C\u4F60\u6B63\u5728\u5C06 React Native \u96C6\u6210\u5230\u73B0\u6709\u9879\u76EE\u4E2D\uFF0C\u8BF7\u53C2\u9605 ",(0,l.jsx)(n.a,{href:"/docs/next/integration-with-existing-apps#configuring-gradle",children:"\u5BF9\u5E94\u9875\u9762"}),"\uFF1A\u5B83\u5305\u542B\u6709\u5173\u5982\u4F55\u5B89\u88C5\u63D2\u4EF6\u7684\u7279\u5B9A\u8BF4\u660E\u3002"]}),"\n",(0,l.jsx)(n.h2,{id:"\u914D\u7F6E\u63D2\u4EF6",children:"\u914D\u7F6E\u63D2\u4EF6"}),"\n",(0,l.jsxs)(n.p,{children:["\u9ED8\u8BA4\u60C5\u51B5\u4E0B\uFF0C\u63D2\u4EF6\u4F1A",(0,l.jsx)(n.strong,{children:"\u5F00\u7BB1\u5373\u7528"}),"\uFF0C\u5E76\u4F7F\u7528\u5408\u7406\u7684\u9ED8\u8BA4\u503C\u3002\u4F60\u5E94\u8BE5\u53C2\u8003\u672C\u6307\u5357\u5E76\u4EC5\u5728\u9700\u8981\u65F6\u81EA\u5B9A\u4E49\u884C\u4E3A\u3002"]}),"\n",(0,l.jsxs)(n.p,{children:["\u8981\u914D\u7F6E\u63D2\u4EF6\uFF0C\u53EF\u4EE5\u4FEE\u6539 ",(0,l.jsx)(n.code,{children:"android/app/build.gradle"})," \u4E2D\u7684 ",(0,l.jsx)(n.code,{children:"react"})," \u5757\uFF1A"]}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-groovy",metastring:'title="Groovy"',children:'apply plugin: "com.facebook.react"\n\n/**\n * This is the configuration block to customize your React Native Android app.\n * By default you don\'t need to apply any configuration, just uncomment the lines you need.\n */\nreact {\n  // Custom configuration goes here.\n}\n'})}),"\n",(0,l.jsx)(n.p,{children:"\u6BCF\u4E2A\u914D\u7F6E\u952E\u7684\u63CF\u8FF0\u5982\u4E0B\uFF1A"}),"\n",(0,l.jsx)(n.h3,{id:"root",children:(0,l.jsx)(n.code,{children:"root"})}),"\n",(0,l.jsxs)(n.p,{children:["\u8FD9\u662F\u4F60\u7684 React Native \u9879\u76EE\u7684\u6839\u6587\u4EF6\u5939\uFF0C\u5373 ",(0,l.jsx)(n.code,{children:"package.json"})," \u6587\u4EF6\u6240\u5728\u7684\u4F4D\u7F6E\u3002\u9ED8\u8BA4\u662F ",(0,l.jsx)(n.code,{children:".."}),"\u3002\u4F60\u53EF\u4EE5\u6309\u5982\u4E0B\u65B9\u5F0F\u81EA\u5B9A\u4E49\uFF1A"]}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-groovy",metastring:'title="Groovy"',children:'root = file("../")\n'})}),"\n",(0,l.jsx)(n.h3,{id:"reactnativedir",children:(0,l.jsx)(n.code,{children:"reactNativeDir"})}),"\n",(0,l.jsxs)(n.p,{children:["\u8FD9\u662F ",(0,l.jsx)(n.code,{children:"react-native"})," \u5305\u6240\u5728\u7684\u6587\u4EF6\u5939\u3002\u9ED8\u8BA4\u662F ",(0,l.jsx)(n.code,{children:"../node_modules/react-native"}),"\u3002\u5982\u679C\u4F60\u5728 Monorepo \u4E2D\u6216\u5728\u4E0D\u540C\u7684\u5305\u7BA1\u7406\u5668\u4E2D\u4F7F\u7528\uFF0C\u53EF\u4EE5\u8C03\u6574 ",(0,l.jsx)(n.code,{children:"reactNativeDir"})," \u4EE5\u9002\u5E94\u4F60\u7684\u8BBE\u7F6E\u3002"]}),"\n",(0,l.jsx)(n.p,{children:"\u4F60\u53EF\u4EE5\u6309\u5982\u4E0B\u65B9\u5F0F\u81EA\u5B9A\u4E49\uFF1A"}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-groovy",metastring:'title="Groovy"',children:'reactNativeDir = file("../node_modules/react-native")\n'})}),"\n",(0,l.jsx)(n.h3,{id:"codegendir",children:(0,l.jsx)(n.code,{children:"codegenDir"})}),"\n",(0,l.jsxs)(n.p,{children:["\u8FD9\u662F ",(0,l.jsx)(n.code,{children:"react-native-codegen"})," \u5305\u6240\u5728\u7684\u6587\u4EF6\u5939\u3002\u9ED8\u8BA4\u662F ",(0,l.jsx)(n.code,{children:"../node_modules/react-native-codegen"}),"\u3002\u5982\u679C\u4F60\u5728 Monorepo \u4E2D\u6216\u5728\u4E0D\u540C\u7684\u5305\u7BA1\u7406\u5668\u4E2D\u4F7F\u7528\uFF0C\u53EF\u4EE5\u8C03\u6574 ",(0,l.jsx)(n.code,{children:"codegenDir"})," \u4EE5\u9002\u5E94\u4F60\u7684\u8BBE\u7F6E\u3002"]}),"\n",(0,l.jsx)(n.p,{children:"\u4F60\u53EF\u4EE5\u6309\u5982\u4E0B\u65B9\u5F0F\u81EA\u5B9A\u4E49\uFF1A"}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-groovy",metastring:'title="Groovy"',children:'codegenDir = file("../node_modules/@react-native/codegen")\n'})}),"\n",(0,l.jsx)(n.h3,{id:"clifile",children:(0,l.jsx)(n.code,{children:"cliFile"})}),"\n",(0,l.jsxs)(n.p,{children:["\u8FD9\u662F React Native CLI \u7684\u5165\u53E3\u6587\u4EF6\u3002\u9ED8\u8BA4\u662F ",(0,l.jsx)(n.code,{children:"../node_modules/react-native/cli.js"}),"\u3002\u5165\u53E3\u6587\u4EF6\u662F\u5FC5\u9700\u7684\uFF0C\u56E0\u4E3A\u63D2\u4EF6\u9700\u8981\u8C03\u7528 CLI \u6765\u4E3A\u5E94\u7528\u751F\u6210\u6346\u7ED1\u5305\u3002"]}),"\n",(0,l.jsxs)(n.p,{children:["\u5982\u679C\u4F60\u5728 Monorepo \u4E2D\u6216\u5728\u4E0D\u540C\u7684\u5305\u7BA1\u7406\u5668\u4E2D\u4F7F\u7528\uFF0C\u53EF\u4EE5\u8C03\u6574 ",(0,l.jsx)(n.code,{children:"cliFile"})," \u4EE5\u9002\u5E94\u4F60\u7684\u8BBE\u7F6E\u3002"]}),"\n",(0,l.jsx)(n.p,{children:"\u4F60\u53EF\u4EE5\u6309\u5982\u4E0B\u65B9\u5F0F\u81EA\u5B9A\u4E49\uFF1A"}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-groovy",metastring:'title="Groovy"',children:'cliFile = file("../node_modules/react-native/cli.js")\n'})}),"\n",(0,l.jsx)(n.h3,{id:"debuggablevariants",children:(0,l.jsx)(n.code,{children:"debuggableVariants"})}),"\n",(0,l.jsxs)(n.p,{children:["\u8FD9\u662F\u53EF\u8C03\u8BD5\u53D8\u4F53\u7684\u5217\u8868\uFF08\u6709\u5173\u53D8\u4F53\u7684\u66F4\u591A\u4E0A\u4E0B\u6587\uFF0C\u8BF7\u53C2\u9605 ",(0,l.jsx)(n.a,{href:"#using-variants",children:"\u4F7F\u7528\u53D8\u4F53"}),"\uFF09\u3002"]}),"\n",(0,l.jsxs)(n.p,{children:["\u9ED8\u8BA4\u60C5\u51B5\u4E0B\uFF0C\u63D2\u4EF6\u4EC5\u5C06 ",(0,l.jsx)(n.code,{children:"debug"})," \u89C6\u4E3A\u53EF\u8C03\u8BD5\u53D8\u4F53\uFF0C\u800C ",(0,l.jsx)(n.code,{children:"release"})," \u5219\u4E0D\u662F\u3002\u5982\u679C\u4F60\u6709\u5176\u4ED6\u53D8\u4F53\uFF08\u5982 ",(0,l.jsx)(n.code,{children:"staging"}),"\u3001",(0,l.jsx)(n.code,{children:"lite"})," \u7B49\uFF09\uFF0C\u5219\u9700\u8981\u76F8\u5E94\u8C03\u6574\u3002"]}),"\n",(0,l.jsx)(n.p,{children:"\u5217\u51FA\u7684\u53D8\u4F53\u5C06\u4E0D\u4F1A\u5E26\u6709\u5DF2\u53D1\u5E03\u7684\u6346\u7ED1\u5305\uFF0C\u56E0\u6B64\u4F60\u9700\u8981\u8FD0\u884C Metro \u6765\u8FD0\u884C\u5B83\u4EEC\u3002"}),"\n",(0,l.jsx)(n.p,{children:"\u4F60\u53EF\u4EE5\u6309\u5982\u4E0B\u65B9\u5F0F\u81EA\u5B9A\u4E49\uFF1A"}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-groovy",metastring:'title="Groovy"',children:'debuggableVariants = ["liteDebug", "prodDebug"]\n'})}),"\n",(0,l.jsx)(n.h3,{id:"nodeexecutableandargs",children:(0,l.jsx)(n.code,{children:"nodeExecutableAndArgs"})}),"\n",(0,l.jsxs)(n.p,{children:["\u8FD9\u662F\u7528\u4E8E\u6240\u6709\u811A\u672C\u7684 node \u547D\u4EE4\u548C\u53C2\u6570\u7684\u5217\u8868\u3002\u9ED8\u8BA4\u662F ",(0,l.jsx)(n.code,{children:"[node]"}),"\uFF0C\u4F46\u53EF\u4EE5\u6309\u5982\u4E0B\u65B9\u5F0F\u81EA\u5B9A\u4E49\uFF1A"]}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-groovy",metastring:'title="Groovy"',children:'nodeExecutableAndArgs = ["node"]\n'})}),"\n",(0,l.jsx)(n.h3,{id:"bundlecommand",children:(0,l.jsx)(n.code,{children:"bundleCommand"})}),"\n",(0,l.jsxs)(n.p,{children:["\u8FD9\u662F\u7528\u4E8E\u521B\u5EFA\u5E94\u7528\u6346\u7ED1\u5305\u7684 ",(0,l.jsx)(n.code,{children:"bundle"})," \u547D\u4EE4\u7684\u540D\u79F0\u3002\u5982\u679C\u4F60\u4F7F\u7528 ",(0,l.jsx)(n.a,{href:"/docs/ram-bundles-inline-requires",children:"RAM Bundles"}),"\uFF0C\u5219\u6B64\u547D\u4EE4\u975E\u5E38\u6709\u7528\u3002\u9ED8\u8BA4\u662F ",(0,l.jsx)(n.code,{children:"bundle"}),"\uFF0C\u4F46\u53EF\u4EE5\u6309\u5982\u4E0B\u65B9\u5F0F\u81EA\u5B9A\u4E49\uFF1A"]}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-groovy",metastring:'title="Groovy"',children:'bundleCommand = "ram-bundle"\n'})}),"\n",(0,l.jsx)(n.h3,{id:"bundleconfig",children:(0,l.jsx)(n.code,{children:"bundleConfig"})}),"\n",(0,l.jsxs)(n.p,{children:["\u8FD9\u662F\u4F20\u9012\u7ED9 ",(0,l.jsx)(n.code,{children:"bundle --config <file>"})," \u7684\u914D\u7F6E\u6587\u4EF6\u7684\u8DEF\u5F84\u3002\u9ED8\u8BA4\u662F\u7A7A\uFF08\u4E0D\u63D0\u4F9B\u914D\u7F6E\u6587\u4EF6\uFF09\u3002\u6709\u5173\u6346\u7ED1\u914D\u7F6E\u6587\u4EF6\u7684\u66F4\u591A\u4FE1\u606F\uFF0C\u8BF7\u53C2\u9605 ",(0,l.jsx)(n.a,{href:"https://github.com/react-native-community/cli/blob/main/docs/commands.md#bundle",children:"CLI \u6587\u6863"}),"\u3002\u53EF\u4EE5\u6309\u5982\u4E0B\u65B9\u5F0F\u81EA\u5B9A\u4E49\uFF1A"]}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-groovy",metastring:'title="Groovy"',children:"bundleConfig = file(../rn-cli.config.js)\n"})}),"\n",(0,l.jsx)(n.h3,{id:"bundleassetname",children:(0,l.jsx)(n.code,{children:"bundleAssetName"})}),"\n",(0,l.jsxs)(n.p,{children:["\u8FD9\u662F\u5E94\u8BE5\u751F\u6210\u7684\u6346\u7ED1\u5305\u6587\u4EF6\u7684\u540D\u79F0\u3002\u9ED8\u8BA4\u662F ",(0,l.jsx)(n.code,{children:"index.android.bundle"}),"\u3002\u53EF\u4EE5\u6309\u5982\u4E0B\u65B9\u5F0F\u81EA\u5B9A\u4E49\uFF1A"]}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-groovy",metastring:'title="Groovy"',children:'bundleAssetName = "MyApplication.android.bundle"\n'})}),"\n",(0,l.jsx)(n.h3,{id:"entryfile",children:(0,l.jsx)(n.code,{children:"entryFile"})}),"\n",(0,l.jsxs)(n.p,{children:["\u8FD9\u662F\u7528\u4E8E\u6346\u7ED1\u5305\u751F\u6210\u7684\u5165\u53E3\u6587\u4EF6\u3002\u9ED8\u8BA4\u662F\u641C\u7D22 ",(0,l.jsx)(n.code,{children:"index.android.js"})," \u6216 ",(0,l.jsx)(n.code,{children:"index.js"}),"\u3002\u53EF\u4EE5\u6309\u5982\u4E0B\u65B9\u5F0F\u81EA\u5B9A\u4E49\uFF1A"]}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-groovy",metastring:'title="Groovy"',children:'entryFile = file("../js/MyApplication.android.js")\n'})}),"\n",(0,l.jsx)(n.h3,{id:"extrapackagerargs",children:(0,l.jsx)(n.code,{children:"extraPackagerArgs"})}),"\n",(0,l.jsxs)(n.p,{children:["\u8FD9\u662F\u4F20\u9012\u7ED9 ",(0,l.jsx)(n.code,{children:"bundle"})," \u547D\u4EE4\u7684\u989D\u5916\u6807\u5FD7\u7684\u5217\u8868\u3002\u53EF\u7528\u6807\u5FD7\u7684\u5217\u8868\u5728 ",(0,l.jsx)(n.a,{href:"https://github.com/react-native-community/cli/blob/main/docs/commands.md#bundle",children:"CLI \u6587\u6863"})," \u4E2D\u3002\u9ED8\u8BA4\u662F\u7A7A\u3002\u53EF\u4EE5\u6309\u5982\u4E0B\u65B9\u5F0F\u81EA\u5B9A\u4E49\uFF1A"]}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-groovy",metastring:'title="Groovy"',children:"extraPackagerArgs = []\n"})}),"\n",(0,l.jsx)(n.h3,{id:"hermescommand",children:(0,l.jsx)(n.code,{children:"hermesCommand"})}),"\n",(0,l.jsxs)(n.p,{children:["\u8FD9\u662F ",(0,l.jsx)(n.code,{children:"hermesc"})," \u547D\u4EE4\u7684\u8DEF\u5F84\uFF08Hermes \u7F16\u8BD1\u5668\uFF09\u3002React Native \u9644\u5E26\u4E86\u4E00\u4E2A Hermes \u7F16\u8BD1\u5668\u7248\u672C\uFF0C\u56E0\u6B64\u4F60\u901A\u5E38\u4E0D\u9700\u8981\u81EA\u5B9A\u4E49\u6B64\u9879\u3002\u63D2\u4EF6\u5C06\u4F7F\u7528\u6B63\u786E\u7684\u7F16\u8BD1\u5668\u3002"]}),"\n",(0,l.jsx)(n.h3,{id:"hermesflags",children:(0,l.jsx)(n.code,{children:"hermesFlags"})}),"\n",(0,l.jsxs)(n.p,{children:["\u8FD9\u662F\u4F20\u9012\u7ED9 ",(0,l.jsx)(n.code,{children:"hermesc"})," \u7684\u6807\u5FD7\u5217\u8868\u3002\u9ED8\u8BA4\u662F ",(0,l.jsx)(n.code,{children:'["-O", "-output-source-map"]'}),"\u3002\u53EF\u4EE5\u6309\u5982\u4E0B\u65B9\u5F0F\u81EA\u5B9A\u4E49\uFF1A"]}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-groovy",metastring:'title="Groovy"',children:'hermesFlags = ["-O", "-output-source-map"]\n'})}),"\n",(0,l.jsx)(n.h2,{id:"\u4F7F\u7528-flavors-\u4E0E-build-variants",children:"\u4F7F\u7528 Flavors \u4E0E Build Variants"}),"\n",(0,l.jsxs)(n.p,{children:["\u5728\u6784\u5EFA Android \u5E94\u7528\u65F6\uFF0C\u4F60\u53EF\u80FD\u5E0C\u671B\u4F7F\u7528 ",(0,l.jsx)(n.a,{href:"https://developer.android.com/studio/build/build-variants#product-flavors",children:"\u81EA\u5B9A\u4E49 Flavors"})," \u6765\u4ECE\u540C\u4E00\u4E2A\u9879\u76EE\u4E2D\u751F\u6210\u4E0D\u540C\u7248\u672C\u7684 app\u3002"]}),"\n",(0,l.jsxs)(n.p,{children:["\u8BF7\u53C2\u9605 ",(0,l.jsx)(n.a,{href:"https://developer.android.com/studio/build/build-variants",children:"\u5B98\u65B9 Android \u6307\u5357"})," \u6765\u914D\u7F6E\u81EA\u5B9A\u4E49\u6784\u5EFA\u7C7B\u578B\uFF08\u5982 ",(0,l.jsx)(n.code,{children:"staging"}),"\uFF09\u6216\u81EA\u5B9A\u4E49 Flavors\uFF08\u5982 ",(0,l.jsx)(n.code,{children:"full"}),"\u3001",(0,l.jsx)(n.code,{children:"lite"})," \u7B49\uFF09\u3002\u9ED8\u8BA4\u60C5\u51B5\u4E0B\uFF0C\u65B0\u5E94\u7528\u6709\u4E24\u4E2A\u6784\u5EFA\u7C7B\u578B\uFF08",(0,l.jsx)(n.code,{children:"debug"})," \u548C ",(0,l.jsx)(n.code,{children:"release"}),"\uFF09\uFF0C\u6CA1\u6709\u81EA\u5B9A\u4E49 Flavors\u3002"]}),"\n",(0,l.jsxs)(n.p,{children:["\u6240\u6709\u6784\u5EFA\u7C7B\u578B\u548C Flavors \u7684\u7EC4\u5408\u751F\u6210\u4E00\u7EC4 ",(0,l.jsx)(n.strong,{children:"build variants"}),"\u3002\u4F8B\u5982\uFF0C\u5BF9\u4E8E ",(0,l.jsx)(n.code,{children:"debug"}),"/",(0,l.jsx)(n.code,{children:"staging"}),"
1/",(0,l.jsx)(n.code,{children:"release"})," \u6784\u5EFA\u7C7B\u578B\u548C ",(0,l.jsx)(n.code,{children:"full"}),"/",(0,l.jsx)(n.code,{children:"lite"})," Flavors\uFF0C\u4F60\u5C06\u62E5\u6709 6 \u4E2A build variants\uFF1A",(0,l.jsx)(n.code,{children:"fullDebug"}),"\u3001",(0,l.jsx)(n.code,{children:"fullStaging"}),"\u3001",(0,l.jsx)(n.code,{children:"fullRelease"})," \u7B49\u7B49\u3002"]}),"\n",(0,l.jsxs)(n.p,{children:["\u5982\u679C\u4F60\u4F7F\u7528\u9664\u4E86 ",(0,l.jsx)(n.code,{children:"debug"})," \u548C ",(0,l.jsx)(n.code,{children:"release"})," \u4E4B\u5916\u7684\u81EA\u5B9A\u4E49\u53D8\u4F53\uFF0C\u4F60\u9700\u8981\u901A\u8FC7 ",(0,l.jsx)(n.a,{href:"#debuggablevariants",children:(0,l.jsx)(n.code,{children:"debuggableVariants"})})," \u914D\u7F6E\u6765\u6307\u793A\u63D2\u4EF6\u54EA\u4E9B\u53D8\u4F53\u662F ",(0,l.jsx)(n.strong,{children:"\u53EF\u8C03\u8BD5"})," \u7684\uFF0C\u5982\u4E0B\u6240\u793A\uFF1A"]}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-diff",metastring:'title="Diff"',children:'apply plugin: "com.facebook.react"\n\nreact {\n+ debuggableVariants = ["fullStaging", "fullDebug"]\n}\n'})}),"\n",(0,l.jsxs)(n.p,{children:["\u8FD9\u662F\u5FC5\u8981\u7684\uFF0C\u56E0\u4E3A\u63D2\u4EF6\u5C06\u8DF3\u8FC7\u6240\u6709 ",(0,l.jsx)(n.code,{children:"debuggableVariants"})," \u7684 JS \u6346\u7ED1\uFF1A\u4F60\u9700\u8981\u8FD0\u884C Metro \u6765\u8FD0\u884C\u5B83\u4EEC\u3002\u4F8B\u5982\uFF0C\u5982\u679C\u4F60\u5728 ",(0,l.jsx)(n.code,{children:"debuggableVariants"})," \u4E2D\u5217\u51FA ",(0,l.jsx)(n.code,{children:"fullStaging"}),"\uFF0C\u5219\u65E0\u6CD5\u5C06\u5176\u53D1\u5E03\u5230\u5546\u5E97\uFF0C\u56E0\u4E3A\u5B83\u5C06\u7F3A\u5C11\u6346\u7ED1\u5305\u3002"]}),"\n",(0,l.jsx)(n.h2,{id:"\u63D2\u4EF6\u5728\u5E55\u540E\u505A\u4EC0\u4E48",children:"\u63D2\u4EF6\u5728\u5E55\u540E\u505A\u4EC0\u4E48\uFF1F"}),"\n",(0,l.jsxs)(n.p,{children:["React Native Gradle Plugin \u8D1F\u8D23\u914D\u7F6E\u4F60\u7684\u5E94\u7528\u6784\u5EFA\uFF0C\u4EE5\u5C06 React Native \u5E94\u7528\u53D1\u5E03\u5230\u751F\u4EA7\u73AF\u5883\u4E2D\u3002\u63D2\u4EF6\u8FD8\u7528\u4E8E\u5728\u7B2C\u4E09\u65B9\u5E93\u4E2D\u8FD0\u884C\u7528\u4E8E\u65B0\u67B6\u6784\u7684 ",(0,l.jsx)(n.a,{href:"/docs/the-new-architecture/pillars-codegen",children:"Codegen"}),"\u3002"]}),"\n",(0,l.jsx)(n.p,{children:"\u4EE5\u4E0B\u662F\u63D2\u4EF6\u7684\u8D23\u4EFB\u603B\u7ED3\uFF1A"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\u4E3A\u6BCF\u4E2A\u975E\u53EF\u8C03\u8BD5\u53D8\u4F53\u6DFB\u52A0\u4E00\u4E2A ",(0,l.jsx)(n.code,{children:"createBundle<Variant>JsAndAssets"})," \u4EFB\u52A1\uFF0C\u8D1F\u8D23\u8C03\u7528 ",(0,l.jsx)(n.code,{children:"bundle"}),"\u3001",(0,l.jsx)(n.code,{children:"hermesc"})," \u548C ",(0,l.jsx)(n.code,{children:"compose-source-map"})," \u547D\u4EE4\u3002"]}),"\n",(0,l.jsxs)(n.li,{children:["\u8BBE\u7F6E ",(0,l.jsx)(n.code,{children:"com.facebook.react:react-android"})," \u548C ",(0,l.jsx)(n.code,{children:"com.facebook.react:hermes-android"})," \u7684\u9002\u5F53\u7248\u672C\uFF0C\u4ECE ",(0,l.jsx)(n.code,{children:"react-native"})," \u7684 ",(0,l.jsx)(n.code,{children:"package.json"})," \u4E2D\u8BFB\u53D6 React Native \u7248\u672C\u3002"]}),"\n",(0,l.jsx)(n.li,{children:"\u8BBE\u7F6E\u9002\u5F53\u7684 Maven \u4ED3\u5E93\uFF08Maven Central\u3001Google Maven Repo\u3001JSC \u672C\u5730 Maven \u4ED3\u5E93\u7B49\uFF09\uFF0C\u4EE5\u4F7F\u7528\u6240\u6709\u5FC5\u8981\u7684 Maven \u4F9D\u8D56\u9879\u3002"}),"\n",(0,l.jsx)(n.li,{children:"\u8BBE\u7F6E NDK\uFF0C\u4EE5\u4FBF\u4F60\u53EF\u4EE5\u6784\u5EFA\u4F7F\u7528\u65B0\u67B6\u6784\u7684\u5E94\u7528\u3002"}),"\n",(0,l.jsxs)(n.li,{children:["\u8BBE\u7F6E ",(0,l.jsx)(n.code,{children:"buildConfigFields"}),"\uFF0C\u4EE5\u4FBF\u4F60\u53EF\u4EE5\u5728\u8FD0\u884C\u65F6\u77E5\u9053\u662F\u5426\u542F\u7528\u4E86 Hermes \u6216\u65B0\u67B6\u6784\u3002"]}),"\n",(0,l.jsx)(n.li,{children:"\u8BBE\u7F6E Metro DevServer \u7AEF\u53E3\u4F5C\u4E3A Android \u8D44\u6E90\uFF0C\u4EE5\u4FBF\u5E94\u7528\u77E5\u9053\u8FDE\u63A5\u5230\u54EA\u4E2A\u7AEF\u53E3\u3002"}),"\n",(0,l.jsxs)(n.li,{children:["\u5982\u679C\u5E93\u6216\u5E94\u7528\u4F7F\u7528\u65B0\u67B6\u6784\u7684 Codegen\uFF0C\u5219\u8C03\u7528 ",(0,l.jsx)(n.a,{href:"/docs/the-new-architecture/pillars-codegen",children:"React Native Codegen"}),"\u3002"]}),"\n"]})]})}function h(e={}){let{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,l.jsx)(n,{...e,children:(0,l.jsx)(t,{...e})}):t(e)}},43023(e,n,d){d.d(n,{R:()=>c,x:()=>s});var i=d(63696);let l={},r=i.createContext(l);function c(e){let n=i.useContext(r);return i.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function s(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(l):e.components||l:c(e.components),i.createElement(r.Provider,{value:n},e.children)}}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.