如何让Android Studio生成的APK在真实设备连接本地localhost服务器?
Android真实设备无法连接Xampp本地服务器的解决方案
问题背景
使用Xampp和localhost开发的Android登录注册应用,在模拟器上可正常运行,但安装APK到真实设备后无法连接服务器,已尝试用IPv4地址适配模拟器,但真实设备仍无法连接。
核心排查与修复步骤
1. 确保设备处于同一局域网
- 真实手机必须和运行Xampp的电脑连接同一个WiFi/局域网,否则无法访问电脑的IPv4地址。
2. 开放Xampp Apache的局域网访问权限
- 打开Xampp安装目录下的
apache/conf/httpd.conf文件 - 找到
Require local这一行,修改为Require all granted,允许局域网内所有设备访问 - 重启Xampp的Apache服务
3. 关闭电脑防火墙(或添加规则)
- 电脑防火墙会拦截外部设备的请求,临时关闭防火墙测试,或者给Apache添加入站允许规则
4. 修复PHP登录代码的致命逻辑错误
你的登录代码存在密码验证逻辑错误:对输入密码进行哈希后直接查询数据库,这会导致永远无法匹配数据库中存储的哈希密码。
修正后的login.php代码:
<?php require_once 'connection.php'; if($_SERVER['REQUEST_METHOD'] == 'POST'){ if(isset($_POST['email']) && isset($_POST['password'])){ $email = mysqli_real_escape_string($conn, $_POST['email']); $inputPassword = $_POST['password']; $sql = "SELECT * FROM users WHERE email = '$email'"; $response = mysqli_query($conn, $sql); $result = array(); $result['login'] = array(); if(mysqli_num_rows($response) === 1){ $row = mysqli_fetch_assoc($response); // 用password_verify验证输入密码与数据库哈希是否匹配 if(password_verify($inputPassword, $row['password'])){ $index['id'] = $row['id']; $index['email'] = $row['email']; array_push($result['login'], $index); $result["success"] = "1"; $result["message"] = "Giriş Başarılı"; } else { $result["success"] = "0"; $result["message"] = "Parola hatalı"; } echo json_encode($result); } else { $result["success"] = "0"; $result["message"] = "Kullanıcı bulunamadı"; echo json_encode($result); } mysqli_close($conn); } else { echo json_encode(array("success" => "0", "message" => "Email ve şifre eksik")); } } ?>
5. 确认Android代码中的IP地址有效性
- 检查
url_login中的192.168.0.8是否为电脑当前的IPv4地址(可通过ipconfig/ifconfig命令查询,IP地址可能随网络变动) - 用手机浏览器访问
http://192.168.0.8/biletoss/login.php,如果能正常打开页面,说明服务器配置无问题
6. 适配Android 9+的明文HTTP限制
Android 9及以上系统默认禁止明文HTTP请求,需在AndroidManifest.xml中添加配置:
<application ... android:usesCleartextTraffic="true"> ... </application>
内容的提问来源于stack exchange,提问作者selona
相关产品推荐
相关产品推荐

