我已经构建了我的应用程序,我可以在我的本地模拟器上运行它(也可以通过更改调试服务器在同一网络中的我的Android设备上运行) .
但是,我想构建一个apk,我可以发送给没有访问开发服务器的人,我希望他们能够测试应用程序 .
我看到在文档的iOS部分有一个使用脱机捆绑的部分 . 但我无法弄清楚如何为Android做同样的事情 . 这可能吗?如果是这样,怎么样?
UPDATE: 关于这个问题的答案(react native android failed to load JS bundle),据说离线包可以从开发服务器下载 . 但是当我从开发服务器获取捆绑包时,无法加载图像文件 .
12 回答
对于React Native 0.49及以上
你应该去终端上的项目目录并运行该命令
如果低于0.49
然后使用android studio打开你在本机应用程序目录中的'android'文件夹,它会要求升级gradle和其他一些东西 . 转到build->生成签名的APK并按照那里的说明进行操作 . 那个好 .
按照Aditya Singh的回答,生成的(未签名的)apk不会安装在我的手机上 . 我必须使用here指令生成一个签名的apk .
以下对我有用:
将
my-release-key.keystore
文件放在项目文件夹中的android/app
目录下 . 然后编辑文件~/.gradle/gradle.properties
并添加以下内容(用正确的密钥库密码,别名和密钥密码替换****)如果您使用的是MacOS,则可以使用说明here将密码存储在钥匙串中,而不是将其存储在纯文本中 .
然后编辑app / build.gradle并确保存在以下内容(可能需要添加具有signingConfigs signingConfig的部分):
然后运行命令
cd android && ./gradlew assembleRelease
,对于Windows 'cd android'然后运行
gradlew assembleRelease
命令,并在android/app/build/outputs/apk/app-release.apk
下找到您的 signed apk您将必须创建一个密钥来签署apk . 使用以下方法创建密钥:
出现提示时使用密码
生成密钥后,使用它生成可安装的构建:
使用gradle生成构建
将APK上传到手机上 .
-r
标志将替换现有应用程序(如果存在)这里提到更详细的描述:https://facebook.github.io/react-native/docs/signed-apk-android.html
UPDATE :根据@shashuec和@Fallen的评论
如果你得到错误
运行mkdir android / app / src / main / assets
你应该只使用android studio来完成这个过程 . 它更简单 . 但首先在您的react本机app目录中运行此命令:
然后使用android studio打开你在本机应用程序目录中的'android'文件夹,它会要求升级gradle和其他一些东西 . 转到build->生成签名的APK并按照那里的说明进行操作 . 这真的很直接 .
运行此命令:
如果您收到失败[INSTALL_PARSE_FAILED_NO_CERTIFICATES] .
我尝试使用@Aditya生成未签名的APK文件并安装它的方法,但是当我在我的Android平板电脑上安装它时,它给了我一个错误
Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES]
.我想这是因为APK文件没有签名,平板电脑对此不满意 . 因此,在生成React Native捆绑文件后,我能够通过Android Studio正常生成签名的APK文件 .
顺便说一句,我们的应用程序是一个功能齐全的Android应用程序,已经存在于Play商店中,我们只是在一口大小的片段中添加React Native,因为它非常棒 .
总而言之,这是我的步骤:
1) Generate React Native bundle:
2) Generate a Signed APK file from Android Studio.
3) Install Signed APK File to USB device:
-d
标志只是告诉adb
在附加的USB设备上安装,如果你也运行了模拟器 . 如果要在任何模拟器上安装,请删除-d
标志 .4) Profit!
我有另一种解决方案: - 生成签名密钥您可以使用keytool生成私有签名密钥 . 在Windows上,必须从C:\ Program Files \ Java \ jdkx.x.x_x \ bin运行keytool .
将my-release-key.keystore文件放在项目文件夹中的android / app目录下 .
编辑文件你的项目文件夹中的android / app / build.gradle并添加签名配置,
并运行
这将给你两个文件在android \ app \ build \ outputs \ apk app-release.apk和app-release-unsigned.apk现在安装app-release.apk在你的Android设备 .
转到项目目录并运行命令:
如果您收到涉及index.android.js的错误 . 这是因为您使用的是新的React-native版本(我使用的是0.55.4)只需将“index.android.js”替换为“index.js”
希望它能帮助新手
官方文件here
如果你没有密钥库而不是命令之前使用,则跳过
Generating a signing key / Keystore file 您可以使用keytool生成私有签名密钥 . 在Windows上,必须从C:\ Program Files \ Java \ jdkx.x.x_x \ bin运行keytool .
你会得到像 my-release-key.keystore 这样的文件
Setting up gradle variables 将my-release-key.keystore文件放在项目文件夹中的android / app目录下 . 编辑文件android / gradle.properties并添加以下内容(用正确的密钥库密码替换*****,别名和密钥密码),enableAapt2 set false是解决方法,如android gradle 3.0版problem
然后添加这些app / buid.gradle(app)
低于默认配置
and Inside Build type release { }
then simply run this command in android studio terminal 以下命令将自动执行上述所有答案
如果是窗户
如果是linux / mac
如果你有任何错误删除所有构建文件夹并运行命令
比了
使用android studio为react的android项目生成签名的apk也是一个很好的简单选项,在android studio中打开react的android项目并生成击键和签名apk .
Android Studio中的GUI方式
在Android Studio中打开React Native应用程序的Android应用程序部分(这只是意味着用Android Studio打开您的react-native项目的android文件夹)
转到顶部的"Build"标签
下到"Build Bundle(s) / APK(s)"
然后选择"Build APK(s)"
这将引导您完成定位钥匙以签署APK或创建钥匙的过程,如果您只是练习,您可以生成这些钥匙并将其保存到桌面 .
完成该过程后,如果构建成功,Android Studio中将会显示下面的弹出窗口 . 点击其中显示"locate"(APK)的链接
那将带您到apk文件,将其移动到您的Android设备 . 然后导航到Android设备上的该文件并进行安装 .