我正在努力让我的应用程序在 Android APK 版本上运行,唯一失败的情况是生成和签名 apk。所有的http请求都不起作用。 (服务器在SSL下运行)
我已经尝试过的所有场景:
-
ionic serve
-> 工作正常。
-
ionic cordova run android --device
-> 工作正常。
- 也适用于模拟器。
生成 iOS 版本也可以正常工作:
-
ionic cordova build ios
.
- 在 Xcode 上,运行针对真实设备的构建。
- 在 Xcode 上,将其存档并上传到 Itunesconnect,然后在 Apple 接受后从 AppStore 下载。
所以,它不起作用的唯一情况是当我尝试通过以下方式生成它的apk时ionic cordova build android --prod --release
并签字。
Google Play 也接受新的 APK,因此包标志完全没有问题。
由于它适用于 iOS 并直接在 Android 设备上运行,因此这不是 CORS 或 HTTPS 证书问题。
代码:
Login.ts 的片段:
this.userService.loginUser(this.user).then(
(data) => {
let response = data.json();
loading.dismiss().then(loadData => {
if (response.access_token) {
this.global.access_token = response.access_token;
this.getUserData();
}
});
}, err => {
let error = err.json();
loading.dismiss().then(response => {
if (error.message) {
this.showToast(error.message, 3000, 'bottom');
}
});
}
);
userService.loginUser方法:
loginUser(data) {
let headers = new Headers();
headers.append('Access-Control-Allow-Origin', '*');
headers.append('auth-token', '*');
return this.abs.post('/authenticateMobile',
{
login_ds_email: data.email,
login_ds_password: data.pass
}, headers);
}
Where abs
is:
constructor(http) {
this.abs = new ApiService(http);
}
ApiService.post方法:
public post(api, params, header): any {
if (!header) {
header = this.getHeaders();
}
let options = new RequestOptions({headers: header});
let url = this.global.urlGlobal + api;
return this.http.post(url, params, options).toPromise();
}
当我触发“登录”按钮并发出请求时,应用程序会卡住。服务器不会抛出异常,因此加载屏幕将永远显示。
我已经没有解决方案了,希望你们能帮助我。
离子信息:
global packages:
@ionic/cli-utils : 1.4.0
Cordova CLI : 6.4.0
Gulp CLI : CLI version 3.9.1 Local version 3.9.1
Ionic CLI : 3.4.0
local packages:
@ionic/app-scripts : 1.3.0
@ionic/cli-plugin-cordova : 1.4.0
@ionic/cli-plugin-gulp : 1.0.1
@ionic/cli-plugin-ionic-angular : 1.3.1
Cordova Platforms : android 6.0.0 ios 4.3.1
Ionic Framework : ionic-angular 3.0.1
System:
Node : v7.8.0
OS : macOS Sierra
Xcode : Xcode 8.3.3 Build version 8E3004b
ios-deploy : 1.9.0
ios-sim : 5.0.6
npm : 5.0.3