react native项目编译,打包成android APP

2018-06-16  本文已影响0人  小马将过河
react.jpg

从同事那里转来的文章。

>>>我的博客<<<

编译react native项目,并最终打包成安卓的apk包

另一篇好博文

-entry-file 指定入口文件 因为要打包ios平台,所以指定为rn项目的index.ios.js作为入口
–bundle-output 指定输出的jsbundle文件路径和文件名 指定到rn项目的ios工程文件夹下,记得一定要先创建bundle文件夹,不然终端会报文件夹找不到的错误
–platform 指定平台类型
–assets-dest 指定资源文件夹路径 assets文件夹的路径,包含图片、node模块等资源
–dev 是否为开发模式 如果设置为false,不会产生警告,并且bundle会被压缩
还有其他命令,比如:transformer、prepack、bundle-encoding等,可以到官网查看具体介绍。

第十章 离线打包发布

10.2 Android打包发布

1)将js代码打包成jsbundle包

react-native bundle --entry-file demo/index.js --bundle-output ./android/app/src/main/assets/index.android.jsbundle --platform android --assets-dest ./android/app/src/main/res/ --dev false

【注意:上述命令中 “demo/index/.js”是你工程的安卓入口文件目录】

         @Nullable
         @Override
         protected String getBundleAssetName() {
             return "index.android.bundle";
         }
2)利用命令行打包安卓APK

Android要求所有应用都必须有一个签名证书才允许安装在手机上,所以,在把应用发布到应用市场之前必须生成1个签名的apk包。

【注:keystore名称可自己修改】

这条命令会要求你输入密钥库(keystore)和对应密钥的密码,然后设置一些发行相关的信息。最后它会生成一个叫做my-release-key.keystore的密钥库文件。

在运行上面这条语句之后,密钥库里应该已经生成了一个单独的密钥,有效期为10000天。--alias参数后面的别名是你将来为应用签名时所需要用到的,所以记得记录这个别名。

./gradlew assembleRelease在macOS、Linux或是windows的PowerShell环境中表示执行当前目录下的名为gradlew的脚本文件,且其运行参数为assembleRelease,注意这个./不可省略;而在windows的传统CMD命令行下则需要去掉./

Gradle的assembleRelease参数会把所有用到的JavaScript代码都打包到一起,然后内置到APK包中。如果你想调整下这个行为(比如js代码以及静态资源打包的默认文件名或是目录结构等),可以看看android/app/build.gradle文件,然后琢磨下应该怎么修改以满足你的需求。

生成的APK文件位于android/app/build/outputs/apk/app-release.apk,它已经可以用来发布了。

3)利用androidStudio打包生成apk

常见问题

1、build失败
在国内不适用代理的话build失败是常见的,有些包下载不下来。
另外如果有个别包就是下载失败,可以尝试调换repository里的顺序,比如我的环境里有个common-1.0.0.jar死活下载不下来,调了顺序,将google放成第一个就成功了。

    repositories {
        jcenter()
        google()
        mavenCentral()
        maven { url 'https://maven.fabric.io/public' }
    }

另外,bugild失败如果本地有代理的话,在android studio里正确配置代理也是一种办法。


proxy.png
上一篇下一篇

猜你喜欢

热点阅读