将React Native项目转化为Android Instant Apps

4

我目前正在尝试使用干净的React Native项目来实现它。我遵循了官方的Android Instant Apps指南。

我为将React Native转换为Android Instant Apps所做的工作:

  1. app模块重命名为base模块

  2. build.gradle中删除splitsapplicationVariants

  3. 创建installed模块和instantApp模块。

  4. installed模块中添加import OutputFileentryFileapply from react.gradle

然而,我遇到了以下问题:

  1. react-native run-android失败,因为它仍在寻找app模块。
  2. 从Android Studio运行instantApp将在我的手机上运行应用程序,但即使手动运行并执行adb reverse tcp:8081 tcp:8081后仍无法从我的React Metro绑定器下载JS。
  3. 将基础模块重新命名为app模块并运行react-native run-android仍然会出现错误消息:Error: Activity class {com.instantapp/com.instantapp.MainActivity} does not exist.

我尝试在各处搜索,但找不到解决方法。


你能够实现这个吗? - Amit Chauhan
1个回答

1

将应用程序模块重命名为“base”后,您需要在项目中创建另一个应用程序模块(谷歌的指南建议将其命名为“installed”,但我会使用“app”来避免与React Native的问题)。让React Native查找您的新应用程序模块。这应该解决您的问题,但我真的不认为您能够使用React Native构建一个4MB或更小的apk文件,请记住这是即时应用程序apk可以拥有的最大大小。


请注意,对于非游戏应用程序的完整体验,需要4mb的空间。否则,10mb的空间足够进行“立即尝试”体验。详情请见https://developer.android.com/topic/google-play-instant/overview#reduce-size - TWL
是的,你说得对。此外,根据这份报告,似乎可以构建一个大小为3.5mb的RN apk - https://medium.com/@aswinmohanme/how-i-reduced-the-size-of-my-react-native-app-by-86-27be72bba640 - henrique
@HenriqueCamposdeFreitas 谢谢你的回答。我按照步骤将其重命名为“base”,并创建了另一个名为“installed”的模块。我还添加了“instantapp”模块。你能否更具体地说明“让react-native查找您的新应用程序模块”的含义?我尝试深入研究react-native源代码,但仍然无法弄清楚为什么我的应用程序无法连接到我的metro bundler(即使在adb reverse tcp:8081 tcp:8081之后)。 - Eric Kim
@EricKim,你找到任何方法来做这件事了吗?(是的,我在挖掘一个三年前的帖子 :)) - John Smith
@JohnSmith 不好意思,我还没有找到合适的解决方案。我正在考虑使用全屏模式的Web应用程序。 - Eric Kim

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接