react-native工程 打包

来源:互联网 发布:竹庆本乐仁波切 知乎 编辑:程序博客网 时间:2024/06/06 02:28

如果做过Android原生开发的,react-native打包跟Android打包就大同小异了,先说明一下,这针对window7系统。

1、看看自己有没有配好了gradle环境变量,如果配好了,这一步可以跳过。

配置步骤:

先去官网下载自己对应版本的gradle,然后直接解压即可,我这里直接解压在Android开发的相关目录下

计算机->鼠标右击选择属性->高级系统设置->高级->环境变量->点击”新建“,配置”GRADLE_HOME“,如图:


继续在此处选择“path”,进行修改,加入“;%GRADLE_HOME%\bin”,注意此处没有引号,记得前面要加分号(要切换到英文模式),这样就配置好gradle的环境变量了


配置完后认证一下,可以在cmd控制台上 输入echo %path%


看到这个,所以配置成功了。


2.正式开始打包的配置:

第一步:先生成一个签名的密钥

keytool -genkey -v -keystore my-release-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000

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

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

注:请记得妥善保管好你的密钥库文件,不要上传到版本库或者其它地方。


第二步:设置gradle变量

把my-release-key.keystore文件放到你工程中的android/app文件夹下

添加签名到应用的gradle配置文件

...
android {
    ...
    defaultConfig { ... }


//配置签名
    signingConfigs {
        release {
           storeFile file("/my-release-key.keystore")
   storePassword "******"   //生成密钥时自己设置的密码
           keyAlias "my-key-alias"
           keyPassword "******""    //同上
        }
    }


    buildTypes {
        release {
            ...
            signingConfig signingConfigs.release  //引用签名的配置
        }
    }
}


启用Proguard代码混淆来缩小APK文件的大小(可选)

Proguard是一个Java字节码混淆压缩工具,它可以移除掉React Native Java(和它的依赖库中)中没有被使用到的部分,最终有效的减少APK的大小。

重要:启用Proguard之后,你必须再次全面地测试你的应用。Proguard有时候需要为你引入的每个原生库做一些额外的配置。参见app/proguard-rules.pro文件。

要启用Proguard,编辑android/app/build.gradle文件:

/**
 * 运行Proguard来减小发布版本的Java字节码大小
 */
def enableProguardInReleaseBuilds = true


第三步:

找到路径/android/app/src/main,并在该目录下新建assets文件夹

然后在工程目录下将index.android.bundle下载并保存到assets资源文件夹中,执行的命名:

curl -k "http://localhost:8081/index.android.bundle" > android/app/src/main/assets/index.android.bundle

curl官网下载,下载好直接解压,然后直接将curl.exe复制粘贴到项目的根目录下即可,配置好这一步,就可以真正进入打包了。


第四步:真正打包

在cmd控制台切换到项目的/android/目录中执行gradle assembleRelease命令,打包后的文件在android/app/build/outputs/apk目录中,例如app-release.apk。如果打包碰到问题可以先执行 gradle clean 清理一下。


到此就ok了





0 0
原创粉丝点击