android - 使用 Expo React Native 构建后,Android APK 无法正常工作
问题描述
我一直在开发一个应用程序,我一直在使用 Android 模拟器和我的 Android 设备来使用 Expo 进行测试。
它工作得很好,一切都很完美。但是,我刚刚构建了一个Android APK(我执行了expo build:android
),我可以看到我的应用程序的登录,但是在引入凭据后,它有点像关闭应用程序然后恢复它,但现在它一直显示只是一个空白屏幕.
这是一个 gif,向您展示了到底发生了什么。
https://giphy.com/gifs/hdtXNeM2s5Dx7FnbNJ
另外,这是我的 App.js 的代码,它可以显示<AuthNavigator />
(登录屏幕),但是当设置用户然后<AppNavigator />
不出现时它会停止工作。
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": ""
}
}
解决方案
在 app.json 你需要改变:
"android": {
"package": "com.smartbase.agrocognitive",
"versionCode": 1
为了这
"android": {
"package": "com.agrocognitive.agrocognitive",
"versionCode": 1
换句话说,您只需将公司名称更改为您的应用程序名称,确保仅使用小写字符而不使用 simbol。您创建的文件夹与您的应用具有相同的名称。对于其他人,请删除 App.js 中的任何评论。
这适用于我在 bluestacks 模拟器和我的手机运行 apk 文件我希望对你有帮助
推荐阅读
- php - WordPress 请求的资源上不存在“Access-Control-Allow-Origin”标头
- c# - 仅在 ASP.NET 中为某些字段转换字符集
- javascript - node.js 中的 res.download 没有在 Chrome 中重命名文件
- node.js - Node.js - 连接到 IBM Watson Assistant 失败
- java - 我需要从arraylist的listview中删除选定的对象
- java - Spring 集成:递归流?
- objective-c - 从方法返回后 CGImageRef 损坏
- exception - 如何在 Dart 中通过 waitFor 抛出一个未来
- dictionary - 地图不会在字典中给出值
- javascript - 如何使用 Sequelize 在 MySQL 上存储 TIME