首页 文章

react-native编译的apk不会在设备上运行

提问于
浏览
6

使用react-native教程进行Walkthrought( react-native 0.30 ):我创建的应用程序无法在Android设备上安装,这里是步骤:

  • react-native init demo

  • cd android

  • gradlew assembleRelease

  • 将未签名的apk复制到移动设备(htc m8 mini 2)

得到的结果: Application demo was not installed

基于这个类似的问题apk didn't run on mobile android react native:Unsigned apk不会安装在手机上 .

但是为什么我能够运行Ionic 2制作的非侵权应用程序?

有什么问题?

2 回答

  • 6

    在Ionic 2中你运行一个调试apk,它不可能运行一个未签名的apk .

    你可以做的反应是签署你的apk并运行 .

    第一个设置可能有点复杂,但在完成设置后很容易在需要时生成签名的apk .

    您可以按照以下说明签署您的apk:

    Generating a signing key

    您可以使用keytool生成私有签名密钥 .

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

    此命令会提示您输入密钥库和密钥的密码,并提供密钥的“可分辨名称”字段 . 然后,它将密钥库生成为名为my-release-key.keystore的文件 .

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

    注意:请记住将密钥库文件保密,并且永远不要将其提交给版本控制 .

    Setting up gradle variables

    • 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 {
                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
            }
        }
    }
    ...
    

    Generating the release APK

    只需在终端中运行以下命令:

    $ cd android && ./gradlew assembleRelease
    

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

    生成的APK可以在 android/app/build/outputs/apk/app-release.apk 下找到,并且可以随时分发 .

    Testing the release build of your app

    在将发布版本上载到Play商店之前,请确保彻底测试 . 使用以下方法将其安装在设备上

    $ cd android && ./gradlew installRelease
    

    请注意,只有在您按上述方式设置签名后才能使用installRelease .

    您可以终止任何正在运行的打包程序实例,所有和框架JavaScript代码都捆绑在APK的资产中 .

  • 0

    @EvghenyKalkutin如果你是react-native的初学者,那么就按照这个简单的步骤

    • 从cmd下载chocolatey只需在cmd @powershell -NoProfile -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && SET PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin 中编写此代码

    • 成功安装后现在使用chocolatey安装了node.js和Python2 . 为此使用此代码安装node.js choco install nodejs.install 并安装Python @使用此代码 choco install python2

    • 确定现在打开node.js命令promt并运行此代码 npm install -g react-native-cli 以启动react-native

    • ok现在使用此代码下载示例项目 react-native init AwesomeProjectreact-native init HelloWorld :)

    • 现在转到使用 cd AwesomeProject 下载此项目的目录

    • 启动android stduio并打开此项目并更正你的gradle错误(如果它发生)(并清理项目)并使用usb调试连接你的设备

    • 并使用此代码检查您的设备是否可用 adb devices

    • 如果设备可用,则使用此代码转换它的反应原生端口 adb reverse tcp:8081 tcp:8081

    • 现在为build node.js桥执行此代码 npm start
      构建node.js后

    • bridge现在使用此代码启动您的项目 react-native run-android ,您可以在此处运行您的示例项目

    对于unsign apk或assembleRelease只需通过以下步骤

    • 只需在node.js命令提示符下编写此代码 cd android && gradlew clean && gradlew assembleRelease

    I use windows os so all this instructions are for windows os I don't know this code is same for mac os or linux os
    我希望这个wiil可以帮助你以反应原生的方式开始 . 如果有任何问题只是评论它 .

相关问题