【问题标题】:Changing MainActivity entry while integrating React native and android application在集成 React 本机和 android 应用程序时更改 MainActivity 条目
【发布时间】:2020-07-27 14:14:16
【问题描述】:

我正在开发 POC 以将原生 android 应用程序与 React Native 集成。按照 react native 官方文档中的所有步骤进行集成后,我有一个错误 MainActivity.java 不存在。不确定,但我猜它的 cosreact-native run-android 通过 MainActivity.java 工作。但在原生安卓应用程序中,我们没有任何这样的活动文件。从 AndroidManifest.xml 看起来这是第一个活动:

<application
    android:name=".core.exampleApplication"

为了自定义这个活动文件,我遇到了 cli 选项:

yarn react-native run-android --main-activity core.exampleApplication

但它会抛出此错误:

Starting: Intent { cmp=com.comp.android/.core.exampleApplication }
Error type 3
Error: Activity class {com.comp.android/com.comp.android.core.exampleApplication} does not exist.

包名/applicationId 是com.comp.android

有人知道如何解决这个问题吗?或者你们有什么想分享的经验吗?

编辑意图过滤器如下所示:

<activity
        android:name=".ui.SplashActivity"
        android:screenOrientation="portrait">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>

        <meta-data android:name="android.app.shortcuts"
                   android:resource="@xml/shortcuts" /> -->
</activity>

【问题讨论】:

  • 您将 ActivityApplication 类混淆了。您的清单包含哪些活动?
  • @VadimGoroshevsky 也许我不是本地开发人员,并且清单文件包含多个活动。我们的 Android 项目不包含任何 MainActivity.java。那么您能否建议我在哪里可以找到与代码中的等效项?我认为应用程序名称.core.exampleApplication 可能是第一个活动。
  • 您是从AndroidManifest 还是从build.gradle 获取package name/applicationId is com.comp.android
  • 我从应用程序 build.gradle 中获取,AndroidManifest 仅在 applicationId 中提到了这一点:android:authorities="${applicationId}.provider"
  • AndroidManifest 有根标签&lt;manifest&gt; 和属性package。和applicationId一样吗?

标签: javascript java android react-native kotlin


【解决方案1】:

您应该查看AndroidManifest.xml 并搜索包含此代码的&lt;activity&gt; 标签:

<intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>

确定您的活动后,运行命令yarn react-native run-android --main-activity com.comp.android.core.YOUR_ACTIVITY。请注意完整的包名,您的活动可能不是.core 包的一部分。

编辑: 使用命令yarn react-native run-android --main-activity ui.SplashActivity。抱歉,现在我阅读了react-native-cli 代码,这里不需要完整的包名

【讨论】:

  • 是的,有 Launcher 意图过滤器,我把它和类混淆了。活动名称是 SplashActivity,它的第一行提到了com.comp.android.ui,所以我使用了yarn react-native run-android --main-activity com.comp.android.ui.SplashActivity。但是现在它给出了一个错误:Starting: Intent { cmp=com.comp.android/.com.comp.android.ui.SplashActivity } Error type 3 Error: Activity class {com.comp.android/com.comp.android.com.comp.android.ui.SplashActivity} does not exist.
  • 请查看已编辑的帖子。抱歉,现在我阅读了react-native-cli 代码,这里不需要完整的包名
  • 我从 root 和 android 文件夹都试过了:yarn react-native run-android --main-activity ui.SplashActivity 错误:Activity 类 {com.comp.android/com.comp.android.ui.SplashActivity} 不存在。
  • 如果有帮助,我已经添加了完整的意图过滤器。
【解决方案2】:

这行得通:

yarn react-native run-android --main-activity .ui.SplashActivity

必须添加一个“点”

【讨论】:

    猜你喜欢
    • 2021-12-04
    • 1970-01-01
    • 1970-01-01
    • 2018-06-18
    • 1970-01-01
    • 2019-02-28
    • 2012-12-11
    • 2016-05-26
    • 2013-04-18
    相关资源
    最近更新 更多