Android Studio - 运行 模拟器上的 Ionic App 时出现白屏
Android Studio - blank white screen when running Ionic App on an emulator
我正在开发 Ionic 应用程序。
在 iOS 模拟器(通过 Xcode)和 ionic serve
中 运行 都很好,但是当尝试 运行 它在 android 模拟器在 Android Studio 中,发生以下情况:
- 模拟器成功启动,android OS 显示并响应。
- 启动应用程序时,它以空白屏幕告终。
我读过很多这样的解决方案 ,但其中 none 对我有用。
我也试过重新安装 android studio,结果还是一样。
这就是我触发 android 工作室 IDE:
的方式
构建 Ionic 应用 ==> ionic build
运行 Android 工作室 ==> npx cap open android
下面是我的 MainActivity.java
文件:
package com.batsir.ben;
import android.os.Bundle;
import com.getcapacitor.BridgeActivity;
import com.getcapacitor.Plugin;
import java.util.ArrayList;
import ch.byrds.capacitor.contacts.Contacts;
public class MainActivity extends BridgeActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.init(savedInstanceState, new ArrayList<Class<? extends Plugin>>() {{
add(Contacts.class);
}});
}
}
以下是我在 运行 从 Logcat
:
运行应用程序时看到的一些错误
2022-04-05 20:40:19.181 1591-1591/? E/studio.deploy: MessagePipeWrapper: Cannot write (EOF)
2022-04-05 20:40:19.181 1591-1591/? E/studio.deploy: Unable to write magic number to pipe
2022-04-05 20:40:19.200 1591-1591/? E/studio.deploy: MessagePipeWrapper: Cannot read (EOF)
2022-04-05 20:40:19.201 1591-1591/? E/studio.deploy: MessagePipeWrapper: Unable to read magic number (received= '
2022-04-05 20:40:19.201 1591-1591/? E/studio.deploy: Protopipe: Unable to read() from pipe
2022-04-05 20:40:19.343 3306-3306/? E/studio.deploy: Could not remove dir '/data/data/com.batsir.ben/code_cache/.ll/': No such file or directory
2022-04-05 20:40:22.220 3322-3322/com.batsir.ben E/com.batsir.ben: Invalid ID 0x00000000.
2022-04-05 20:40:22.542 3322-3322/com.batsir.ben E/com.batsir.ben: Invalid ID 0x00000000.
2022-04-05 20:40:22.543 3322-3322/com.batsir.ben E/com.batsir.ben: Invalid ID 0x00000000.
2022-04-05 20:40:23.486 395-429/? E/HWComposer: getSupportedContentTypes: getSupportedContentTypes failed for display 4619827259835644672: Unsupported (8)
2022-04-05 20:40:24.526 3322-3387/com.batsir.ben E/Capacitor: Unable to open asset URL: http://localhost/%3C%=%20BASE_URL%20%%3Eassets/icon/favicon.png
2022-04-05 20:40:24.532 3322-3387/com.batsir.ben E/Capacitor: Unable to open asset URL: http://localhost/%3C%=%20BASE_URL%20%%3Eassets/icon/favicon.png
2022-04-05 20:40:24.541 3322-3387/com.batsir.ben E/Capacitor: Unable to open asset URL: http://localhost/%3C%=%20BASE_URL%20%%3Eassets/icon/favicon.png
请帮助我了解我缺少什么。
更新:
在使用 chrome 调试器 (chrome://inspect/#devices) 调试后:我看到我得到的唯一错误是:
Failed to load resource: the server responded with a status of 404 (OK) http://localhost/%3C%=%20BASE_URL%20%%3Eassets/icon/favicon.png
更新#2:
在 inedx.html
:
中处理并修复此行后,我能够摆脱上述错误
<link rel="shortcut icon" type="image/png" href="assets/icon/favicon.png" />
所以现在,没有错误,但结果仍然相同 - 只有空白屏幕。
对于遇到相同问题的人。
原来我的问题是ionic build
构建项目的路径(dist
)和我的capacitor.config.json
上的webDir
路径(public
) 不匹配。
同步后,应用 运行 正常
我正在开发 Ionic 应用程序。
在 iOS 模拟器(通过 Xcode)和 ionic serve
中 运行 都很好,但是当尝试 运行 它在 android 模拟器在 Android Studio 中,发生以下情况:
- 模拟器成功启动,android OS 显示并响应。
- 启动应用程序时,它以空白屏幕告终。
我读过很多这样的解决方案
我也试过重新安装 android studio,结果还是一样。 这就是我触发 android 工作室 IDE:
的方式构建 Ionic 应用 ==> ionic build
运行 Android 工作室 ==> npx cap open android
下面是我的 MainActivity.java
文件:
package com.batsir.ben;
import android.os.Bundle;
import com.getcapacitor.BridgeActivity;
import com.getcapacitor.Plugin;
import java.util.ArrayList;
import ch.byrds.capacitor.contacts.Contacts;
public class MainActivity extends BridgeActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.init(savedInstanceState, new ArrayList<Class<? extends Plugin>>() {{
add(Contacts.class);
}});
}
}
以下是我在 运行 从 Logcat
:
2022-04-05 20:40:19.181 1591-1591/? E/studio.deploy: MessagePipeWrapper: Cannot write (EOF)
2022-04-05 20:40:19.181 1591-1591/? E/studio.deploy: Unable to write magic number to pipe
2022-04-05 20:40:19.200 1591-1591/? E/studio.deploy: MessagePipeWrapper: Cannot read (EOF)
2022-04-05 20:40:19.201 1591-1591/? E/studio.deploy: MessagePipeWrapper: Unable to read magic number (received= '
2022-04-05 20:40:19.201 1591-1591/? E/studio.deploy: Protopipe: Unable to read() from pipe
2022-04-05 20:40:19.343 3306-3306/? E/studio.deploy: Could not remove dir '/data/data/com.batsir.ben/code_cache/.ll/': No such file or directory
2022-04-05 20:40:22.220 3322-3322/com.batsir.ben E/com.batsir.ben: Invalid ID 0x00000000.
2022-04-05 20:40:22.542 3322-3322/com.batsir.ben E/com.batsir.ben: Invalid ID 0x00000000.
2022-04-05 20:40:22.543 3322-3322/com.batsir.ben E/com.batsir.ben: Invalid ID 0x00000000.
2022-04-05 20:40:23.486 395-429/? E/HWComposer: getSupportedContentTypes: getSupportedContentTypes failed for display 4619827259835644672: Unsupported (8)
2022-04-05 20:40:24.526 3322-3387/com.batsir.ben E/Capacitor: Unable to open asset URL: http://localhost/%3C%=%20BASE_URL%20%%3Eassets/icon/favicon.png
2022-04-05 20:40:24.532 3322-3387/com.batsir.ben E/Capacitor: Unable to open asset URL: http://localhost/%3C%=%20BASE_URL%20%%3Eassets/icon/favicon.png
2022-04-05 20:40:24.541 3322-3387/com.batsir.ben E/Capacitor: Unable to open asset URL: http://localhost/%3C%=%20BASE_URL%20%%3Eassets/icon/favicon.png
请帮助我了解我缺少什么。
更新:
在使用 chrome 调试器 (chrome://inspect/#devices) 调试后:我看到我得到的唯一错误是:
Failed to load resource: the server responded with a status of 404 (OK) http://localhost/%3C%=%20BASE_URL%20%%3Eassets/icon/favicon.png
更新#2:
在 inedx.html
:
<link rel="shortcut icon" type="image/png" href="assets/icon/favicon.png" />
所以现在,没有错误,但结果仍然相同 - 只有空白屏幕。
对于遇到相同问题的人。
原来我的问题是ionic build
构建项目的路径(dist
)和我的capacitor.config.json
上的webDir
路径(public
) 不匹配。
同步后,应用 运行 正常