react-native打包Android应用


  做好的App,首要的第一件事当然就是拿来分(zhuang)享(bi)了,也就是说要做得有模有样,能发布到app市场上,能真正安装到手机上 ,这样才有成就感。
  既然要这样的话,那么自然就不是‘摇晃手机’那么简单了。
  因为我只亲自做过Android应用上的打包,IOS暂时还没做过,所以就不多说了。


1. 制作App图标

  RN的默认图标,就是一个android机器人大头贴,这看起来一点都不酷,既然想要酷,那就只有我们动手了。

  android平台上的图标没有IOS那么多规矩,所以比较简单。

  第一步,找一张你认为觉得酷的图片,为了更好的效果,建议分辨率要高、宽高比最好保持为1

  第二步,根据这张图片,导出最起码4种尺寸的图标
  至于为什么要4种,请看项目目录 project\android\app\src\main\res,在这个文件夹里,以mipmap-开头的文件夹一共有四个,也就是对应4种大小的图标,尺寸分别为h:72x72 m:48x48 xh:96x96 xxh:144x144,想要一个好的效果的话,你所需要导出的4张图标,尺寸就必须严格依照这四种。

  第一步只能靠自己发挥想象了,第二步的图标导出就需要借助工具了,事实上如果真的是为了好的效果,第一步就应该动用一些什么工具的,比如PS之类,但这毕竟不是程序员擅长的活,而且我们的重点也不是这个,效果达到了就好,能省事就省事。

  图标导出的方法也很多,比如使用PS工具,到 这个,或者 这个 网站上看一看,基本可以满足要求。

  但这未免还是有些麻烦,简单起见的话,完全可以在线上传、导出,简单胜利,百度一下即可,这种网站很多,无需注册、无需认证,一键上传下载,一分钟绰绰有余,有的甚至可以一次性帮你导出几十种尺寸的图标。

  拿到了图标之后,想要将图标应用到手头的app上,方法有两种。

  第一种在项目的R.java文件里面设置,这里不太推荐,如果不懂java的话,改错了什么东西可不好办。

  第二种就简单了,直接到这个project\android\app\src\main\res文件夹中,依次打开那四个以mipmap-开头的文件夹,将里面原先的大头贴删除,然后将你自己的四张图片依次放进去。
  这里需要注意的是,图片的尺寸要对应,然后替换完图片之后,将图片的名字改成和原先一样的,也就是ic_launcher.jpg

  到了这里,图标的事情,就算是解决了


2. 打包APK

  关于如何打包apk,有两种方法。

  第一是使用Android Studio,不过网上关于如何使用Android Studio打包RN应用,大多数都存在一个致命的问题,那就是Android Studio的版本不一致,RN官网上对于Android Studio的要求是2.0版本以上,这个版本的操作步骤,显然和大部分网上所说的那些Android Studio的版本,最起码在如何打包RN应用这方面,有不小的出入。

  不过好在还有第二条路,不用开IDE,直接命令行走起。
  关于这种方法,其实RN官网上已经说得很清楚了,不过因为是英文,所以有些英文基础不太好的人,可能会看得不太清楚,这里我就根据我的实践来说一下吧

2.1 Android签名文件生成

  做过Android开发的人,对于这一步肯定很熟悉了,想要你的app能够以发布版本的身份,用正常的方式安装到手机中,甚至是发布到app市场上,那么这一步很关键。

  1. 既然能够开发RN,那说明相应的Java环境肯定是装好了,如果你在配置Java环境的时候,一路默认安装,那么直接进入C:\Program Files\Java\jdkx.x.x_x\bin
    如果你将Java的根目录设置到了憋得地方,那也没关系,同样是到你的Java安装目录下找到\jdkx.x.x_x\bin这个文件夹,其中jdkx.x.x_x代表JDK的版本好,如果你当初没有对这个文件夹重命名的话,那么这个文件夹的名字就像这样:\jdk1.8.0,总之是jdk开头,后面的数字可能不一样,这个没关系

  2. 进入到了’\jdkx.x.x_x\bin’之后,在这个目录中打开控制台,输入keytool -genkey -v -keystore my-release-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000
    其中my-release-key这个名字可以自己取名,同时my-key-alias也是自己取名,其中第二个名称alias参数后边的别名,在后面你在为应用签名的时候需要用到,所以暂时记录一下这个别名
    这里需要提醒下,当你按照控制台指示输入密钥的时候,你已经确信自己已经按下了按键,但是控制台上的光标却没有往后移,并没有显示你刚才输入的字母,不要急不要怕,其实你已经输入了,只是没有显示出来让你看到而已,只要你确信自己真的输入了就行,继续往下输,别管它有没有显示,输完按回车,你就会看到控制台让你再输一遍刚才的密钥了,就把刚才输入的密钥再输一遍,只要两遍输得都一样,肯定会让你过的
    接下来控制台又会继续输入一些问题,用来确认你的身份, 以及生成密钥证书所用,如果你只是自己玩玩的话,没想过要真的发布到app市场上,那么随便输,别客气,想叫什么名字就叫什么名字,拉风一点的最好。

    敲完之后,如果一切正常,你将看到控制台输出:
    正在为以下对象生成 2,048 位RSA密钥对和自签名证书 (SHA256withRSA) (有效期为 10,000 天):
    ........
    输入 的密钥口令
    (如果和密钥库口令相同, 按回车):
    [正在存储my-release-key.keystore]

  然后你可以看到,在你当前目录下,多出了一个以keystore结尾的文件,比如我这里是my-release-key.keystore,那就是刚才所生成的密钥证书.

  这就表明,签名算是弄好了。

2.2 Setting up gradle variables

  1. 替换证书

在你的项目根目录下,进入/android/app这个文件夹,将刚才生成my-release-key.keystore剪切到这个目录里来


  1. 修改文件

在你的项目下,进入 /anddriod文件夹,里面有个 gradle.properties文件,用编辑器打开,随便找个地方在里面添加下面这几句代码:
MYAPP_RELEASE_STORE_FILE=my-release-key.keystore
MYAPP_RELEASE_KEY_ALIAS=my-key-alias
MYAPP_RELEASE_STORE_PASSWORD=*****
MYAPP_RELEASE_KEY_PASSWORD=*****

其中,将两个*****替换成你之前在控制台中输入的密钥口令

2.3 Adding signing config to your app’s gradle config

在你的项目根目录下,打开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
        }
    }
}
...

其中,只有:

signingConfigs {
        release {
            storeFile file(MYAPP_RELEASE_STORE_FILE)
            storePassword MYAPP_RELEASE_STORE_PASSWORD
            keyAlias MYAPP_RELEASE_KEY_ALIAS
            keyPassword MYAPP_RELEASE_KEY_PASSWORD
        }
    }

还有

signingConfig signingConfigs.release

  这两段才是真正你所需要添加进去的内容。

2.4 编译发布版本的App

  之前测试所生成的app,app名字的后半段都是带有debug,这表明App是测试版本的,而只有经过了打包步骤后,才会生成真正的release版本App

在你的项目根目录,进入/android文件夹,打开控制台,输入:
gradlew assembleRelease

  这一步就是编译生成发布版本的App,时间可能比较久,如果你发现控制台长时间不动,先别急着按Ctrl+C,再耐心等一下,
反正我是等了15分钟的。。。

  当你看到BUILD SUCCESSFUL这句话的时候,恭喜你,终于编译好了。

2.5 测试

  到了这里,其实整个打包过程就完成了,打开android\app\build\outputs\apk文件夹,你会发现里面多出了一个名字以release作为后半段的apk文件,这就是最终打包出来的apk了。
  不过,照例还是需要测试一番的。

还是在你的项目根目录,进入/android文件夹,打开控制台,输入:
gradlew installRelease

  这会将发布版本的app安装到你的手机上,安装完成后,需要你自己在手机上点开,然后就能体验你的app在真实发布环境下的表现了。

2.6 开启文件混淆功能

  使用git init下来的RN框架中,可能包含了一些你在项目中并不需要的部分,所以这一步可以帮你剥离掉那些你并不需要的文件代码,压缩最终APK的体积。
  这一步很简单,打开android/app/build.gradle文件,在里面将def enableProguardInReleaseBuilds = false
  改成
def enableProguardInReleaseBuilds = true

  不过RN官网上说,这一步可能会出些问题,所以做完这一步后,尽可能对App做一个彻底的测试。

你可能感兴趣的:(React)