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

时间:2016-07-27 13:08:54

标签: android react-native

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

  1. react-native init demo
  2. cd android
  3. gradlew assembleRelease
  4. 将未签名的apk复制到移动设备(htc m8 mini 2)
  5. 得到了结果:Application demo was not installed

    基于这个类似的问题apk didn't run on mobile android react native: 未签名的apk无法在移动设备上安装。

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

    问题是什么?

3 个答案:

答案 0 :(得分:6)

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

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

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

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

生成签名密钥

您可以使用keytool生成私人签名密钥。

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

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

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

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

设置gradle变量

  1. my-release-key.keystore文件放在android/app下 项目文件夹中的目录。
  2. 编辑文件~/.gradle/gradle.properties并添加以下内容 (用正确的密钥库密码,别名和密钥替换***** 密码),
  3.   

    MYAPP_RELEASE_STORE_FILE =我的离型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
            }
        }
    }
    ...
    

    生成发布APK

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

    $ cd android && ./gradlew assembleRelease
    

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

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

    测试应用的发布版本

    在将发布版本上传到Play商店之前,请确保彻底测试。使用以下命令将其安装在设备上:

    $ cd android && ./gradlew installRelease
    

    请注意,只有在您按照上述说明设置了签名后才能使用installRelease。

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

答案 1 :(得分:0)

@EvghenyKalkutin如果你是反应原生的初学者那么只需按照这个简单的步骤

  1. 从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
  2. 中编写此代码即可
  3. 成功安装后现在使用chocolatey安装了node.js和Python2。为此使用此代码安装node.js choco install nodejs.install并安装Python @使用此代码choco install python2
  4. 确定现在打开node.js命令promt并运行此代码npm install -g react-native-cli以启动react-native
  5. 确定现在使用此代码react-native init AwesomeProjectreact-native init HelloWorld下载示例项目:)
  6. 现在转到使用cd AwesomeProject
  7. 下载此项目的目录
  8. 启动android stduio并打开此项目并更正您的gradle错误(如果发生)(并清理项目)并使用USB调试连接您的设备
  9. 并使用此代码adb devices
  10. 检查您的设备是否可用
  11. 如果设备可用,则使用此代码adb reverse tcp:8081 tcp:8081
  12. 将其转换为反应本机的端口
  13. 现在为build node.js bridge执行此代码npm start
  14. 构建之后,node.js网桥现在使用此代码react-native run-android开始您的项目,此处您的示例项目将在您的设备上运行
  15. **对于unsign apk或assembleRelease只需通过以下步骤**

    1. 只需在node.js命令提示符cd android && gradlew clean && gradlew assembleRelease

      中编写此代码即可

      我使用的是windows os所以这些说明都适用于windows os我不知道这个代码对于mac os或linux os是一样的
      我希望这个wiil可以帮助你以反应原生的方式开始。如果有任何问题只是评论它。

答案 2 :(得分:0)

WINDOWS用户 遵循这些说明....它对我有用

先决条件-您必须具有keystore file,如果没有,请按照说明打开cmd运行keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -keysize 2048 -validity 10000,然后完成。您将有一个密钥库文件。现在,请按照以下步骤操作。

1。在Windows cd android上,然后在项目目录编辑器终端命令提示符中运行gradlew assembleRelease >。

2。在此位置查找APK

android/app/build/outputs/apk/release/app-release-unsigned.apk

3。将此APK复制到jdk安装目录的bin文件夹(我的目录为C:\Program Files\Java\jdk1.8.0_181\bin)[基本上,在此步骤中,我们尝试转到与jarsigner相同的目录]

4。还将您的keystore文件复制到此(C:\Program Files\Java\jdk1.8.0_181\bin)目录。

5。现在以管理员模式打开cmd并运行

cd C:\Program Files\Java\jdk1.8.0_181\bin

6。现在运行

jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore <<your keystore file name >>  <<your apk file name>> alias_name

这是您的apk,现在在cd C:\Program Files\Java\jdk1.8.0_181\bin上找到已签名的apk。安装它,现在应该安装。