非常教程

React native参考手册

指南(Android) | Guides (Android)

Generating Signed APK

需要本机代码的项目

此页面仅适用于react-native init使用Create React Native App 制作的或使用此类应用程序弹出的项目。有关弹出的更多信息,请参阅创建React Native App存储库的指南。

Android要求所有应用程序在安装之前都要用证书进行数字签名,因此要通过Google Play商店分发您的Android应用程序,您需要生成已签名的发布APK。Android Developers文档上的签名应用程序页面详细介绍了该主题。本指南简要介绍了该过程,并列出了打包JavaScript包所需的步骤。

生成一个签名密钥

您可以使用生成私人签名密钥keytool。在Windows上keytool必须运行C:\Program Files\Java\jdkx.x.x_x\bin

$ keytool -genkey -v -keystore my-release-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000

此命令会提示您输入密钥库和密钥的密码,并为密钥提供专有名称字段。然后它生成一个名为keystore的文件my-release-key.keystore

密钥库包含一个密钥,有效期为10000天。别名是您在签名应用程序时稍后使用的名称,因此请记住注意别名。

注意:请记住保持密钥库文件的私密性,不要将其提交给版本控制。

设置gradle变量

  • my-release-key.keystore文件放在android/app项目文件夹中的目录下。
  • 编辑文件~/.gradle/gradle.properties并添加以下内容(替换*****为正确的密钥库密码,别名和密钥密码),
MYAPP_RELEASE_STORE_FILE=my-release-key.keystore
MYAPP_RELEASE_KEY_ALIAS=my-key-alias
MYAPP_RELEASE_STORE_PASSWORD=*****
MYAPP_RELEASE_KEY_PASSWORD=*****

这些将成为全局的gradle变量,我们稍后可以在我们的gradle配置中使用它来签署我们的应用程序。

关于保存密钥库的注意事项: 在Play商店中发布应用程序后,如果您想在任何时候更改签名密钥,则需要使用不同的软件包名称(丢失所有下载和评级)重新发布您的应用程序。所以请备份您的密钥库,不要忘记密码。

关于安全性的注意事项:如果您不想以纯文本存储密码,并且您正在运行OSX,则还可以 将您的凭证存储在Keychain Access应用程序中。然后你可以跳过 __中的最后两行~/.gradle/gradle.properties

将签名配置添加到您的应用的gradle配置

编辑android/app/build.gradle项目文件夹中的文件并添加签名配置,

...
android {
    ...
    defaultConfig { ... }
    signingConfigs {
        release {
            if (project.hasProperty('MYAPP_RELEASE_STORE_FILE')) {
                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
        }
    }
}
...

生成发布APK

只需在终端中运行以下内容:

$ cd android && ./gradlew assembleRelease

Gradle的assembleRelease将捆绑运行你的应用程序所需的所有JavaScript到APK中。如果您需要更改捆绑JavaScript和/或可绘制资源的方式(例如,如果更改了默认文件/文件夹名称或项目的一般结构),android/app/build.gradle请查看如何更新它以反映这些变化。

生成的APK可以在下面找到android/app/build/outputs/apk/app-release.apk,并且准备好分发。

测试你的应用程序的发布版本

在将发布版本上传到Play商店之前,请确保您彻底进行测试。首先卸载您已经安装的应用程序的任何先前版本。使用以下命令将其安装在设备上

$ react-native run-android --variant=release

请注意,--variant=release只有在您按上述方式设置了签名后才可用。

您可以杀死任何正在运行的包装程序实例,所有框架和JavaScript代码都捆绑在APK的资产中。

启用Proguard以缩小APK的大小(可选)

Proguard是一个可以稍微减小APK的大小的工具。它通过剥离应用程序未使用的部分React Native Java字节码(及其依赖项)来实现此目的。

重要 __:如果您启用了Proguard,请务必彻底测试您的应用。Proguard通常需要特定于您正在使用的每个本机库的配置。参见 app/proguard-rules.pro__。

要启用Proguard,请编辑android/app/build.gradle

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

React Native 是一个 JavaScript 的框架,用来撰写实时的、可原生呈现 iOS 和 Android 的应用。

主页 https://facebook.github.io/react-native/
源码 https://github.com/facebook/react-native
发布版本 0.49

React native目录

1.开始 | Getting Started
2.指南 | Guides
3.APIs
4.组件:ActivityIndicator | Components: ActivityIndicator
5.组件:按钮 | Components: Button
6.组件:CheckBox | Components: CheckBox
7.组件:DatePickerIOS | Components: DatePickerIOS
8.组件:DrawerLayoutAndroid | Components: DrawerLayoutAndroid
9.组件:FlatList | Components: FlatList
10.组件:图像 | Components: Image
11.组件:KeyboardAvoidingView | Components: KeyboardAvoidingView
12.Components: ListView
13.Components: MaskedViewIOS
14.Components: Modal
15.Components: NavigatorIOS
16.Components: Picker
17.Components: PickerIOS
18.Components: ProgressBarAndroid
19.Components: ProgressViewIOS
20.Components: RefreshControl
21.Components: ScrollView
22.Components: SectionList
23.Components: SegmentedControlIOS
24.Components: Slider
25.Components: SnapshotViewIOS
26.Components: StatusBar
27.Components: Switch
28.Components: TabBarIOS
29.Components: TabBarIOS.Item
30.Components: Text
31.Components: TextInput
32.Components: ToolbarAndroid
33.Components: TouchableHighlight
34.Components: TouchableNativeFeedback
35.Components: TouchableOpacity
36.Components: TouchableWithoutFeedback
37.Components: View
38.Components: ViewPagerAndroid
39.Components: VirtualizedList
40.Components: WebView
41.创建 | Contributing
42.指南(Android) | Guides (Android)
43.指南(IOS) | Guides (iOS)
44.其他 | Miscellaneous