React-Native之打包发布(Android)
<h1 style="text-align: center">React-Native之打包发布(Android)</h1><h2>一,介绍与需求</h2>
<p> 移动端打包发布到应用市场</p>
<h2>二,发布配置</h2>
<p><em>注意:以下所有操作都在win10下进行,React Native版本0.59.5,android-studio 版本 3.2</em></p>
<p><img src="https://img2018.cnblogs.com/blog/1040068/201904/1040068-20190422152323948-1173191871.png" alt=""><img src="https://img2018.cnblogs.com/blog/1040068/201904/1040068-20190422154806275-1296688630.png" alt=""></p>
<h3>1,生成签名</h3>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> keytool -genkey -v -keystore app.keystore -alias yingqi -keyalg RSA -keysize 2048 -validity 10000</pre>
</div>
<p>附加说明:</p>
<p>-genkey 生成文件 </p>
<p>-keystore 文件名 </p>
<p>-alias 别名</p>
<p>-keyalg 加密算法</p>
<p>-validity 有效期(单位是天) </p>
<p>输入如上命令以后,出现以下步骤:</p>
<p><img src="https://img2018.cnblogs.com/blog/1040068/201904/1040068-20190422153051918-1463979112.png" alt=""></p>
<p>注意:输入密钥库口令【很重要,要记住】</p>
<p>生成的的keystore文件默认是在项目的根目录中,如下图所示:</p>
<p> <img src="https://img2018.cnblogs.com/blog/1040068/201904/1040068-20190422153343274-1572504995.png" alt=""></p>
<h3>2,在gradle文件中添加签名配置</h3>
<p>把app.keystore文件放到你工程中的android/app文件夹下。</p>
<p>打开编辑项目目录下的android/app/build.gradle文件,添加如下的签名配置:</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)"> 1</span> <span style="color: rgba(0, 0, 0, 1)">...
</span><span style="color: rgba(0, 128, 128, 1)"> 2</span> <span style="color: rgba(0, 0, 0, 1)">android {
</span><span style="color: rgba(0, 128, 128, 1)"> 3</span> <span style="color: rgba(0, 0, 0, 1)"> ...
</span><span style="color: rgba(0, 128, 128, 1)"> 4</span> <span style="color: rgba(0, 0, 0, 1)"> defaultConfig { ... }
</span><span style="color: rgba(0, 128, 128, 1)"> 5</span> <span style="color: rgba(0, 0, 0, 1)"> signingConfigs {
</span><span style="color: rgba(0, 128, 128, 1)"> 6</span> <span style="color: rgba(0, 0, 0, 1)"> release {
</span><span style="color: rgba(0, 128, 128, 1)"> 7</span> keyAlias 'yingqi' <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">别名</span>
<span style="color: rgba(0, 128, 128, 1)"> 8</span> keyPassword '123456' <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">密钥密码 之前设置秘钥口令</span>
<span style="color: rgba(0, 128, 128, 1)"> 9</span> storeFile file('app.keystore') <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">my-release-key.keystore文件的绝对路径</span>
<span style="color: rgba(0, 128, 128, 1)">10</span> storePassword '123456' <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">存储密码</span>
<span style="color: rgba(0, 128, 128, 1)">11</span> <span style="color: rgba(0, 0, 0, 1)"> }
</span><span style="color: rgba(0, 128, 128, 1)">12</span> <span style="color: rgba(0, 0, 0, 1)"> }
</span><span style="color: rgba(0, 128, 128, 1)">13</span> <span style="color: rgba(0, 0, 0, 1)"> buildTypes {
</span><span style="color: rgba(0, 128, 128, 1)">14</span> <span style="color: rgba(0, 0, 0, 1)"> release {
</span><span style="color: rgba(0, 128, 128, 1)">15</span> <span style="color: rgba(0, 0, 0, 1)"> ...
</span><span style="color: rgba(0, 128, 128, 1)">16</span> minifyEnabled enableProguardInReleaseBuilds <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 在 当前文件中,找到变量 enableProguardInReleaseBuilds ,将其值修改为 true</span>
<span style="color: rgba(0, 128, 128, 1)">17</span> signingConfig signingConfigs.release <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 引用签名</span>
<span style="color: rgba(0, 128, 128, 1)">18</span> <span style="color: rgba(0, 0, 0, 1)"> }
</span><span style="color: rgba(0, 128, 128, 1)">19</span> <span style="color: rgba(0, 0, 0, 1)"> }
</span><span style="color: rgba(0, 128, 128, 1)">20</span> <span style="color: rgba(0, 0, 0, 1)">}
</span><span style="color: rgba(0, 128, 128, 1)">21</span> ...</pre>
</div>
<h3> 3,修改应用名称</h3>
<p>打开编辑项目目录下的android/app/src/main/res/values/strings.xml文件,修改名称</p>
<p><img src="https://img2018.cnblogs.com/blog/1040068/201904/1040068-20190422155830495-1103904211.png" alt=""></p>
<p><img src="https://img2018.cnblogs.com/blog/1040068/201904/1040068-20190422161722215-1775726614.jpg" alt=""></p>
<h3> 4,修改应用icon</h3>
<p>将如下文件夹中的icon替换成需要修改的图标即可,注意icon大小保持一致</p>
<p><img src="https://img2018.cnblogs.com/blog/1040068/201904/1040068-20190422160146640-593371400.png" alt=""></p>
<h3> 5,代码混淆</h3>
<p>启用Proguard代码混淆来缩小APK文件的大小(保护源代码,缩小APK包大小)<br>Proguard是一个Java字节码混淆压缩工具,它可以移除掉React Native Java (和它的依赖库中)中没有被使用到的部分,最终有效的减少APK的大小。<br>重要:每次启用Proguard之后,必须再次全面地测试你的应用。Proguard有时候需要为你引入的每个原生库做一些额外的配置。参见app/proguard-rules.pro文件。</p>
<p>在android/app/build.gradle文件中,找到enableProguardInReleaseBuilds然后修改def enableProguardInReleaseBuilds = true</p>
<h3> 6,打包命令配置</h3>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">scripts</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">: {
</span><span style="color: rgba(0, 128, 128, 1)">2</span> <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">start</span><span style="color: rgba(128, 0, 0, 1)">"</span>: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">node node_modules/react-native/local-cli/cli.js start</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(0, 128, 128, 1)">3</span> <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">bundle-ios</span><span style="color: rgba(128, 0, 0, 1)">"</span>: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">node node_modules/react-native/local-cli/cli.js bundle --entry-file index.js--platform ios --dev false --bundle-output ./ios/main.jsbundle --bundle-encoding utf8 --assets-dest ./ios</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(0, 128, 128, 1)">4</span> <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">bundle-android</span><span style="color: rgba(128, 0, 0, 1)">"</span>: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">cd ./android && ./gradlew assembleRelease</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(0, 128, 128, 1)">5</span> <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">bundle-win-android</span><span style="color: rgba(128, 0, 0, 1)">"</span>: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">cd android && gradlew assembleRelease</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(0, 128, 128, 1)">6</span> <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">test</span><span style="color: rgba(128, 0, 0, 1)">"</span>: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">jest</span><span style="color: rgba(128, 0, 0, 1)">"</span>
<span style="color: rgba(0, 128, 128, 1)">7</span> },</pre>
</div>
<p>运行打包与成功效果</p>
<p><img src="https://img2018.cnblogs.com/blog/1040068/201904/1040068-20190422161219707-1384717362.png" alt=""></p>
<p><img src="https://img2018.cnblogs.com/blog/1040068/201904/1040068-20190422161316560-1444110636.png" alt=""></p>
<p><img src="https://img2018.cnblogs.com/blog/1040068/201904/1040068-20190422161739179-814910785.jpg" alt=""></p><br><br>
来源:https://www.cnblogs.com/jackson-yqj/p/10750218.html
頁:
[1]