其实根据官方文档,一步步操作是没问题的,但是一开始我没看就趟坑了。
列出几点⚠️注意事项吧:
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要对应好,不然会因为证书不通过导致第三方登录失败。