使用 react-native 教程的演练(react-native 0.30): 我创建的应用程序无法安装在 Android 设备上,步骤如下:
- react-native 初始化演示
- cd android
- gradlew assembleRelease
- 将未签名的 apk 复制到移动设备 ( htc m8 mini 2 )
得到的结果是:Application demo was not installed
基于这个类似的问题 apk didn't run on mobile android react native : 未签名的 apk 不会安装在手机上。
但为什么我能够运行由 Ionic 2 制作的未签名应用程序?
有什么问题吗?
最佳答案
在 Ionic 2 中,您运行调试 apk,无法运行未签名的 apk。
你可以在 React 中做的是签署你的 apk 并运行。
第一次设置可能有点复杂,但在您完成设置后,在您需要时可以很容易地生成签名的 apk。
您可以按照以下说明对您的 apk 进行签名:
生成签名 key
您可以使用 keytool 生成私有(private)签名 key 。
$ keytool -genkey -v -keystore my-release-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000
此命令提示您输入 keystore 和 key 的密码,并为您的 key 提供专有名称字段。然后,它会将 keystore 生成为名为 my-release-key.keystore 的文件。
keystore 包含一个 key ,有效期为 10000 天。别名是您稍后在签署您的应用程序时将使用的名称,因此请记住记下别名。
注意:请记住将您的 keystore 文件保密,切勿将其提交给版本控制。
设置gradle变量
- 将
my-release-key.keystore
文件放在android/app
下 项目文件夹中的目录。 - 编辑文件
~/.gradle/gradle.properties
并添加以下内容 (将 ***** 替换为正确的 keystore 密码、别名和 key 密码),
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 配置中使用它们来签署我们的应用程序。
Note about saving the keystore: Once you publish the app on the Play Store, you will need to republish your app under a different package name (losing all downloads and ratings) if you want to change the signing key at any point. So backup your keystore and don't forget the passwords. Note about security: If you are not keen on storing your passwords in plaintext and you are running OSX, you can also store your credentials in the Keychain Access app. Then you can skip the two last rows in
~/.gradle/gradle.properties.
将签名配置添加到您应用的 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
}
}
}
...
生成发布 APK
只需在终端中运行以下命令:
$ cd android && ./gradlew assembleRelease
Gradle 的 assembleRelease 会将运行您的应用程序所需的所有 JavaScript bundle 到 APK 中。如果您需要更改 JavaScript 包和/或可绘制资源的 bundle 方式(例如,如果您更改了默认文件/文件夹名称或项目的一般结构),请查看 android/app/build.gradle 以了解如何更新它以反射(reflect)这些变化。
生成的 APK 可以在 android/app/build/outputs/apk/app-release.apk
下找到,并准备分发。
测试您应用的发布版本
在将发布版本上传到 Play 商店之前,请务必对其进行全面测试。使用以下方法将其安装在设备上:
$ cd android && ./gradlew installRelease
请注意,installRelease 仅在您按上述方式设置签名后才可用。
您可以终止任何正在运行的打包程序实例,所有您的和框架的 JavaScript 代码都 bundle 在 APK 的 Assets 中。
关于android - react-native 编译的 apk 不会在设备上运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38613927/