ReactNative windows下打包生成安卓apk

create-react-native-app 运行npm run eject后根目录会产生一个andriod目录和ios目录。里面就是运行打包的配置文件。 如果你是用react-native-cli 开发RN的应该一开始就有这俩目录。

比如 android 目录里面会有build.gradle,gradle.properties 等 简单说 gradle 是一个依赖管理/自动化编译测试部署打包工具。

首先生成签名key

.\keytool.exe -genkey -v -keystore D:/my-release-key.keystore -alias my-key-a lias -keyalg RSA -keysize 2048 -validity 10000 有个小坑是生成key的路径是D盘,因为在当前C盘生成的话在windows下可能会有权限问题。

image.png

然后按照这个 教程,改动一些配置文件。

修改相关配置文件

在根目录的android目录下执行 ./gradlew assembleRelease 后面就踩了很多坑,大多数版本问题。 比如java jdk从最新的9改为了8 gradle版本改为了最新的4.3 还报了一些缺少npm包的错误,直接npm install缺哪个装哪个就行了。

具体的见下面的文件改动

android/build.gradle

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        /*
        这里之前是 2.2.3
        卡在这里半天,老是报 com.android.build.gradle.tasks.factory.AndroidJavaCompile.setDependencyCacheDir(Ljava/io/File;)V
        */ 
        classpath 'com.android.tools.build:gradle:2.3.2'
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        mavenLocal()
        jcenter()
        maven {
            // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
            url "$rootDir/../node_modules/react-native/android"
        }
    }
}

android/app/build.gradle

android {
    // 这里之前是
    // compileSdkVersion 23
    // buildToolsVersion "23.0.1
    compileSdkVersion 25
    buildToolsVersion "25.0.1"
    ...

android\gradle\wrapper

distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
# distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-4.3-all.zip

执行最后的打包命令 ./gradlew assembleRelease

切换到android目录 打包成功画面

image.png

注意事项:打包过程会占用大量内存,把WebStorm等大的程序关掉。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏pythonlove

DNS服务器的基础应用及主从同步

域名系统(英文:Domain Name System,缩写:DNS)是因特网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互...

1762
来自专栏同步博客

会话劫持

  在现实生活中,比如你去市场买菜,在交完钱后你要求先去干一些别的事情,稍候再来拿菜;如果这个时候某个陌生人要求把菜拿走,卖菜的人会把菜给陌生人吗?!当然,这只...

1063
来自专栏jojo的技术小屋

原 一、了解web及网络基础

作者:汪娇娇 时间:2017年9月7日 了解web及网络基础 这章我们会介绍一下什么是HTTP,HTTP是用来干嘛的; 然后还会介绍和HTTP关系紧密的3个协...

2896
来自专栏coding for love

从输入url到看到页面的过程分析

我思考了很多知识组织方法来帮助理解网络知识,比如按osi模型从底至上,或者按协议种类,或者按网络发展史。但最终我还是决定选择用这个经典的问题,将网络知识串成线。...

1182
来自专栏Python中文社区

记一次惊心的网站TCP队列问题排查经历

作者:刘晓明,互联网公司运维技术负责人,拥有10年的互联网开发和运维经验。一直致力于运维工具的开发和运维专家服务的推进,赋能开发,提高效能。

1604
来自专栏黑白安全

Nmap的使用

精细扫描,可以查看更详细的信息,如包含服务版本,操作系统类型,甚至还有traceroute..

1743
来自专栏腾讯开源的专栏

看看“疫苗查询”小程序有温度的代码

1473
来自专栏FreeBuf

Kali 2.0 安装与使用指南

关于kali使用前的一些配置,网上有很多版本,但是几乎都很雷同,或者是不全,或者是根本就没有测试过,或者是有的方法是错的(换句话说是版本变化的差异),因此让很多...

9535
来自专栏木子昭的博客

Python将md批量转为docx

1896
来自专栏人工智能LeadAI

这几个问题答不对,就别说精通TCP

网络协议那么多,为什么面试喜欢问TCP?原因无外乎两个:1、TCP协议直接与进程打交道,写网络程序要用;2、TCP协议设计十分精巧,在一个不可靠的IP网络上实现...

4108

扫码关注云+社区

领取腾讯云代金券