frankFree / blog

blog地址
https://frankfree.github.io/blog
2 stars 0 forks source link

react-native android 上打包 #9

Open frankFree opened 5 years ago

frankFree commented 5 years ago

第一步:

使用keytool生成证书: keytool -genkey -keystore test.keystore -alias test -keyalg RSA -validity 10000 参数解释:

-genkey 产生证书文件 -keystore 指定密钥库的.keystore文件中 -keyalg 指定密钥的算法,这里指定为RSA(非对称密钥算法) -validity 为证书有效天数,这里我们写的是10000天 -alias 产生别名

第二步:设置gradle变量

  1. 将你的签名证书copy到 android/app目录下。
  2. 编辑~/.gradle/gradle.properties或../android/gradle.properties(一个是全局gradle.properties,一个是项目中的gradle.properties,大家可以根据需要进行修改) ,加入如下代码:
MYAPP_RELEASE_STORE_FILE=your keystore filename  
MYAPP_RELEASE_KEY_ALIAS=your keystore alias  
MYAPP_RELEASE_STORE_PASSWORD=*****    
MYAPP_RELEASE_KEY_PASSWORD=****

提示:用正确的证书密码、alias以及key密码替换掉 *****。

第三步:在gradle配置文件中添加签名配置

编辑 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  
        }  
    }  
}

terminal进入项目下的android目录,运行如下代码: ./gradlew assembleRelease

签名打包成功后你会在 "android/app/build/outputs/apk/"目录下看到签名成功后的app-release.apk文件。 提示:如果你需要对apk进行混淆打包 编辑android/app/build.gradle:

/**     
 * Run Proguard to shrink the Java bytecode in release builds.  
 */  
def enableProguardInReleaseBuilds = true