打包发布

2018-08-15  本文已影响0人  Android_冯星

Android端

  1. 生成以一个签名秘钥
    keytool -genkey -v -keystore MyApp-release-key.keystore -alias MyApp -keyalg RSA -keysize 2048 -validity 10000

  2. 在/android/app/src/main/目录下创建assets目录。(如果目录存在跳过步骤)

  3. 将index.android.bundle下载并保存在assets资产目录中
    curl -k "http://localhost:8081/index.android.bundle" > android/app/src/main/assets/index.android.bundle

image.png

出现上面的提示代表下载成功。
这时在android/app/src/main/assets/目录下会出现index.android.bundle文件。

  1. 在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
        }
    }
  1. 开启代码混淆来减小apk文件的大小 proguard

Proguard 是一个java字节码混淆压缩工具。它可以移除掉React Native Java(和它的依赖库中)没有被使用到的部分,最终减小apk大小。

弃用Proguard之后,必须再次全面检测你的应用,Progurd有时需要为你引入的每一个第三方库做一些额外的配置。参见app/proguard.pro文件

def enableProguardInReleaseBuilds = true
默认false,改成true就开启了代码混淆了。

  1. 在/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文件。

上一篇 下一篇

猜你喜欢

热点阅读