我怎样才能生成一个apk可以运行没有服务器与反原生?

我已经构build了我的应用程序,我可以在本地模拟器上运行它(也可以通过更改debugging服务器在同一networking中的android设备上运行它)。

但是,我想要构build一个apk,我可以发送给没有访问开发服务器的人,我希望他们能够testing应用程序。

我看到有一节在文档的iOS部分使用脱机包。 但我无法弄清楚如何完成相同的android。 这可能吗? 如果是这样,怎么样?

更新:在这个问题的答案( 反应原生android未能加载JS包 ),据说离线包可以从开发服务器下载。 但是,当我从开发服务器获得捆绑的图像文件不能被加载。

跟随Aditya Singh的回答生成(未签名)apk不会安装在我的手机上。 我必须使用这里的说明生成一个签名的apk。

以下为我工作:

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

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

 MYAPP_RELEASE_STORE_FILE=my-release-key.keystore MYAPP_RELEASE_KEY_ALIAS=my-key-alias MYAPP_RELEASE_STORE_PASSWORD=**** MYAPP_RELEASE_KEY_PASSWORD=**** 

如果您使用的是MacOS,则可以使用此处的说明将密码存储在钥匙串中,而不是以明文forms存储。

然后编辑app / build.gradle并确保以下内容(可能需要添加signedConfigs signingConfig的部分):

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

然后运行命令cd android && ./gradlew assembleRelease

对于 Windows'cd android',然后运行gradlew assembleRelease,并在android/app/build/outputs/apk/app-release.apk下find签名的 apk

你将不得不创build一个密钥来签署apk。 使用下面来创build您的密钥:

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

出现提示时使用密码

一旦生成密钥,使用它来生成可安装的构build:

  react-native bundle --platform android --dev false --entry-file index.android.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res/ 

使用gradle生成构build

  cd android && ./gradlew assembleRelease 

将APK上传到您的手机。 -r标志将replace现有的应用程序(如果存在)

 adb install -r ./app/build/outputs/apk/app-release-unsigned.apk 

这里提到了更详细的描述: https : //facebook.github.io/react-native/docs/signed-apk-android.html

运行这个命令:

 react-native run-android --variant=release 

请注意,– --variant=release仅在您已经使用cd android && ./gradlew assembleRelease签名时才可用。

你应该只使用android studio进行这个过程。 这只是简单的。 但是,首先在您的原生应用程序目录中运行此命令:

 react-native bundle --platform android --dev false --entry-file index.android.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res/ 

然后使用android studio打开你的“android”文件夹,在你的本地应用程序目录下,它会询问升级gradle和其他一些东西。 去build立 – >生成签名APK并按照从那里的指示。 这非常简单。

如果您收到Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES]

我尝试使用@ Aditya生成未签名的APK文件并安装该文件的方法,但是当我去安装在我的Android平板电脑上时,它给了我一个Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES]的错误Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES]

我想这是因为APK文件没有签名,平板电脑不满意这一点。 因此,在生成React Native包文件后,我可以像平常一样通过Android Studio生成签名的APK文件。

顺便说一句,我们的应用程序是一个function齐全的Android应用程序,已经存在于Play商店中,我们只是将一小部分的React Native添加到它,因为它太棒了。

所以总结一下,这里是我的步骤:

1)生成React Native bundle:

 react-native bundle --platform android --dev false --entry-file index.android.js --bundle-output android/<your-package-name>/src/main/assets/index.android.bu‌​ndle --assets-dest android/<your-package-name>/src/main/res/ 

2)从Android Studio生成一个签名APK文件。

3)安装签名APK文件到USB设备:

 adb -d install -r <path_to_signed_apk> 

-d标志只是告诉adb在连接的USB设备上安装,如果你有一个模拟器也在运行。 如果你想安装在任何模拟器上,请删除-d标志。

4)利润!

我有另一个解决scheme: – 生成一个签名密钥您可以使用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 

将my-release-key.keystore文件放置在项目文件夹的android / app目录下。

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

 android { .... signingConfigs { release { storeFile file('my-release-key.keystore') storePassword 'yourpassword' keyAlias 'my-key-alias' keyPassword 'yourpassword' } }}} buildTypes {release {signingConfig signingConfigs.release}} 

并运行

 gradlew assembleRelease 

这将给你两个文件在android \ app \ build \ outputs \ apk app-release.apk和app-release-unsigned.apk现在在你的android设备上安装app-release.apk。

对于React Native 0.49

你应该去terminal上的项目目录并运行该命令

 1 - mkdir android/app/src/main/assets 2 - react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res 

然后使用android studio打开你的“android”文件夹,在你的本地应用程序目录下,它会询问升级gradle和其他一些东西。 去build立 – >生成签名APK并按照从那里的指示。 这非常简单。

转到项目目录并运行命令:

 cd android && ./gradlew assembleRelease