RN工程android打包

其实根据官方文档,一步步操作是没问题的,但是一开始我没看就趟坑了。
列出几点⚠️注意事项吧:

1 不要在‘Build->Generate Signed Ask...’这个步骤下去生成签名打包的apk,因为这样生成的apk没法打包js部分,打开应用会直接报错,因为缺少JS Bundle.

2 如果你的应用引用第三方库比较多,可能会报如下多错误

com.android.dex.DexIndexOverflowException: Cannot merge new index 65562 into a non-jumbo instruction

这时候不用紧张,这就是著名的DEX 64K问题,据说是Dalvik当初设计单个DEX最多可以存放65536方法的ID,所以如果方法数过多就会出现这个问题。
办法可以参考链接这个or那个。
我采取的办法是在app/build.gradle添加如下代码以忽略方法数的检查。

android {
    dexOptions {
        jumboMode = true
    }
}

据说这样做的缺点是apk无法在低版本的设备上面安装,而我的minSdkVersion为16,现在也找不到这个版本的手机,所以我不担心。

3 关于签名配置的问题
如果为了安全保密,要把秘钥和密码之类的放在gradle.properties里面,那么注意那几个变量都不要带引号,同时,keystore的路径还是要按照app目录为准,建议把keystore文件直接放在app目录下,变量名直接写文件名就可,不用写路径。

4 关于MD5
如果你的应用要做第三方登录比如微信登录那么可能需要密匙散列(证书之类的),生成的方法是直接在终端cd到你的keystone所在目录运行下面命令

  • 获取证书:
keytool -exportcert -alias XXX -keystore XXX.keystore | openssl sha1 -binary | openssl base64

  • 获取md5(应用唯一签名):
keytool -list -v -keystore XXX.keystore

切记alias和keystore要对应好,不然会因为证书不通过导致第三方登录失败。

你可能感兴趣的:(RN工程android打包)