我怎样才能生成一个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.bundle --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