Android端
-
生成以一个签名秘钥
keytool -genkey -v -keystore MyApp-release-key.keystore -alias MyApp -keyalg RSA -keysize 2048 -validity 10000
-
在/android/app/src/main/目录下创建assets目录。(如果目录存在跳过步骤)
-
将index.android.bundle下载并保存在assets资产目录中
curl -k "http://localhost:8081/index.android.bundle" > android/app/src/main/assets/index.android.bundle
出现上面的提示代表下载成功。
这时在android/app/src/main/assets/目录下会出现index.android.bundle文件。
- 在Android端添加gradle配置信息
打包的apk在未签名的情况下,没有root的手机是不允许安装的。
在build.gradle文件中
signingConfigs{
release{
storeFile file('../../MyApp-release-key.keystore')
storePassword "fengxing"
keyAlias 'myapp'
keyPassword 'fengxing'
}
}
buildTypes {
release {
minifyEnabled enableProguardInReleaseBuilds
proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
signingConfig signingConfigs.release
}
}
- 开启代码混淆来减小apk文件的大小 proguard
Proguard 是一个java字节码混淆压缩工具。它可以移除掉React Native Java(和它的依赖库中)没有被使用到的部分,最终减小apk大小。
弃用Proguard之后,必须再次全面检测你的应用,Progurd有时需要为你引入的每一个第三方库做一些额外的配置。参见app/proguard.pro文件
def enableProguardInReleaseBuilds = true
默认false,改成true就开启了代码混淆了。
- 在/android/目录下 执行
gradle assembleRelease
命令。打包后的文件在android/app/build/outputs/apk
中。如果打包碰到问题可以先执行下gradle clean
清理下。
在执行gradle assembleRelease
命令 遇到的问题
What went wrong:
Could not list contents of '/Users/mrleonmark/Desktop/react-li/iwant1/iwant/node_modules/node-pre-gyp/node_modules/.bin/detect-libc'. Couldn't follow symbolic link.
执行
unlink /目录/
例如
unlink /Users/mrleonmark/Desktop/react-li/iwant1/iwant/node_modules/node-pre-gyp/node_modules/.bin/detect-libc
问题解决.如果还不好使
rm -rf node_modules && npm install
一步到胃.
如果提示 gradle 命令找不到 自行配置环境变量。
到/android/app/build/outputs/apk/下 查看是否有apk文件。
网友评论