博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
win7下react-native安卓打包踩坑
阅读量:5286 次
发布时间:2019-06-14

本文共 2590 字,大约阅读时间需要 8 分钟。

都说工具使我们使用更加方便,然而最近研究-native打包还有webpack这些工具,真是一把心酸一把泪。感觉这些开发工具对window系统十分不友好,外国佬都是都在用mac系统的土豪。

言归正传,今天写下这个打包流程,目的是希望可以帮助那些和我一同奋斗在window系统的童鞋。

我这里会先介绍完整流程,和一些可能会遇到的问题及解决方法

 

一、完整打包流程

(1)打开packager包
在cmd的程序根目录下/-native start
(2)在工程目录里 执行 mkdir \app\src\main\assets 这目录是为了存储稍后的离线包
(3)生成密匙
在cmd的程序根目录下keytool -genkey -v -keystore intelligentlifeandroid.keystore -alias intelligentlifeandroidalias -keyalg RSA -keysize 2048 -validity 10000
上述intelligentlifeandroid.keystore以及intelligentlifeandroidalias 都是可修改的
(4)设置gradle变量 将(3)申请到的keystore文件放到\app目录下 
编辑 \ android \gradle.properties,添加如下的代码(注意:请把其中的** 替代为替换的keystore密码)
MYAPP_RELEASE_STORE_FILE=my-release-key.keystore
MYAPP_RELEASE_KEY_ALIAS=my-key-alias
MYAPP_RELEASE_STORE_PASSWORD=*****
MYAPP_RELEASE_KEY_PASSWORD=*****
(5)添加签名到应用的gradle配置文件 
编辑你工程目录下的android/app/build.gradle
...
android {
    ...
    defaultConfig { ... }
    拷贝:signingConfigs {
        release {
            storeFile file(MYAPP_RELEASE_STORE_FILE)
            storePassword MYAPP_RELEASE_STORE_PASSWORD
            keyAlias MYAPP_RELEASE_KEY_ALIAS
            keyPassword MYAPP_RELEASE_KEY_PASSWORD
        }
    }
    buildTypes {
        release {
            ...
            拷贝:signingConfig signingConfigs.release
        }
    }
}
(6)cd 到 \android 目录下 使用gradle命令打签名包:gradlew assembleRelease 
(打包前应该确保react-native start已开启)
打包成功后会在 android\app\build\outputs\apk内 找到app-release.apk 就是签名apk。 
(7)如果想重新打包,在\android 目录下使用命令:gradlew clean(清除文件)
(确保react-native start已开启)
接着在执行命令6
(8)执行一次后再次打包只需直接执行(6)或(7)

 

二、打包过程可能会出现的一些问题:

1.查看gradle环境

C:\Users\用户\.gradle\wrapper\dists的gradle2.XX的压缩文件完整与否

2.报:.util.zip.ZipException: error in opening zip file

编译环境与生成环境的JDK版本不一样
3.报:':app:bundleReleaseJsAndAssets'
在\android\app\react.gradle文件
修改前:
if (Os.isFamily(Os.FAMILY_WINDOWS)) {
                    commandLine "cmd", "/c", "react-native", "bundle", "--platform", "android", "--dev", "${devEnabled}",
                            "--entry-file", entryFile, "--bundle-output", jsBundleFile, "--assets-dest", resourcesDir
                } else {
                    commandLine "react-native", "bundle", "--platform", "android", "--dev", "${devEnabled}",
                            "--entry-file", entryFile, "--bundle-output", jsBundleFile, "--assets-dest", resourcesDir
                }
修改后:
if (Os.isFamily(Os.FAMILY_WINDOWS)) {
                    commandLine "cmd", "/c", "node", "node_modules/react-native/local-cli/cli.", "bundle", "--platform", "android", "--dev", "${devEnabled}",
                            "--entry-file", entryFile, "--bundle-output", jsBundleFile, "--assets-dest", resourcesDir
                } else {
                    commandLine "node", "node_modules/react-native/local-cli/cli.js", "bundle", "--platform", "android", "--dev", "${devEnabled}",
                            "--entry-file", entryFile, "--bundle-output", jsBundleFile, "--assets-dest", resourcesDir
                }

 

转载于:https://www.cnblogs.com/ZpandaZ/p/7396992.html

你可能感兴趣的文章
心得25--JDK新特性9-泛型1-加深介绍
查看>>
安装NVIDIA驱动时禁用自带nouveau驱动
查看>>
HDU-1255 覆盖的面积 (扫描线)
查看>>
Java 中 静态方法与非静态方法的区别
查看>>
Jenkins+ProGet+Windows Batch搭建全自动的内部包(NuGet)打包和推送及管理平台
查看>>
线程池的概念
查看>>
Java 序列化
查看>>
Java 时间处理实例
查看>>
Java 多线程编程
查看>>
Java 数组实例
查看>>
mysql启动过程
查看>>
利用AMPScript获取Uber用户数据的访问权限
查看>>
Mysql 数据库操作
查看>>
转:linux终端常用快捷键
查看>>
UVa 11059 最大乘积
查看>>
数组分割问题求两个子数组的和差值的小
查看>>
161017、SQL必备知识点
查看>>
kill新号专题
查看>>
MVC学习系列——Model验证扩展
查看>>
Suite3.4.7和Keil u3自带fx2.h、fx2regs.h文件的异同
查看>>