使用Expo React Native构建后,Android APK无法正常工作

时间:2020-09-23 20:25:12

标签: android react-native apk expo

我一直在开发应用程序,并且一直在使用Android模拟器和Android设备通过Expo进行测试。

效果很好,一切都变得完美。但是,我刚刚构建了一个Android APK(我执行了expo build:android),并且可以看到我的应用程序的登录信息,但是在引入凭据之后,它有点像是关闭了该应用程序然后将其还原,但现在它仍然保持仅显示一个空白屏幕。

这是一张gif,可向您确切显示发生的情况。

https://giphy.com/gifs/hdtXNeM2s5Dx7FnbNJ

此外,这是我的App.js的代码,该代码可以显示<AuthNavigator />(登录屏幕),但是在设置了用户但没有出现<AppNavigator />时它将停止工作。 / p>

import React, { useState } from "react";
import { StyleSheet } from "react-native";
import { NavigationContainer } from "@react-navigation/native";
import { AppLoading } from "expo";

import AppNavigator from "./app/navigation/AppNavigator";
import AuthNavigator from "./app/navigation/AuthNavigator";
import AuthContext from "./app/auth/context";
import authStorage from "./app/auth/storage";

export default function App() {
  const [user, setUser] = useState();
  const [isReady, setIsReady] = useState(false);

  const restoreUser = async () => {
    const user = await authStorage.getUser();
    if (user) setUser(user);
  };

  if (!isReady) {
    return (
      <AppLoading startAsync={restoreUser} onFinish={() => setIsReady(true)} />
    );
  }

  return (
    <AuthContext.Provider value={{ user, setUser }}>
      <NavigationContainer>
        {user ? <AppNavigator /> : <AuthNavigator />}
      </NavigationContainer>
    </AuthContext.Provider>
  );
}

还有我的app.json,以防万一:

{
  "expo": {
    "name": "Agro-Mobile",
    "slug": "Agro-Mobile",
    "version": "1.0.0",
    "orientation": "portrait",
    "icon": "./app/assets/icon.png",
    "splash": {
      "image": "./app/assets/splash.png",
      "resizeMode": "cover",
      "backgroundColor": "#ffffff"
    },
    "updates": {
      "fallbackToCacheTimeout": 0
    },
    "assetBundlePatterns": ["**/*"],
    "ios": {
      "supportsTablet": true
    },
    "android": {
      "package": "com.smartbase.agrocognitive",
      "versionCode": 1
    },
    "web": {
      "favicon": "./app/assets/favicon.png"
    },
    "description": ""
  }
}

1 个答案:

答案 0 :(得分:1)

在 app.json 中,您需要更改:

"android": {
  "package": "com.smartbase.agrocognitive",
  "versionCode": 1 

为此

"android": {
  "package": "com.agrocognitive.agrocognitive",
  "versionCode": 1 

换句话说,您只需将公司名称更改为您的应用程序名称,请确保仅使用小写字符而不使用 simbol。您创建的文件夹与您的应用程序同名。对于其他人,删除 App.js 中的任何评论。

这适用于我在 bluestacks 模拟器和我的手机中运行 apk 文件 希望能帮到你