我继承了一个带有Angular和Cordova的Ionic 5项目,而不是Capacitor。它使用了几个原生插件,即QR扫描仪和应用内浏览器。在Android模拟器中启动时,应用程序工作正常,使用:
ionic cordova run android
现在我想构建一个APK,我可以分发给一些测试人员来给予应用。这个APK必须使用特定的配置来构建,以连接到预生产环境(使用Firebase,但我想这应该不重要)。我使用的过程是:
ionic build --prod --platform=android --configuration=preprod
ionic cordova prepare android --no-build --prod
ionic cordova build android --no-build --release
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore <PATH_TO_KS> <PATH_TO_APK> <KEY_NAME>
zipalign -v 4 <PATH_TO_APK> <PATH_TO_SIGNED_APK>
现在,已签名的APK将正确安装到模拟器,应用程序将启动并连接到预生产环境。但原生插件(例如QR扫描仪)无法工作。我得到的错误是原生:尝试调用QRScanner.prepare,但Cordova不可用。请确保包含cordova.js或在设备/模拟器中运行。Cordova似乎未处于活动状态,因为在打印平台时,它们不包含"cordova"
字符串:
import { Platform } from '@ionic/angular';
constructor(private platform: Platform) {...}
ngOnInit() {
this.platforms = this.platform.platforms().join(',');
}
当运行ionic cordova run android
时,this.platforms
的结果是安卓、平板手机、 cordova 、桌面、混合,但当安装我用上面的过程构建的APK时,结果只是安卓、平板手机、桌面。
你知道为什么吗?我对移动的开发还很陌生,所以你完全可以认为我犯了新手的错误。如果你觉得任何其他信息会有用,请告诉我,我很乐意添加它。
**EDIT:**为了支持preprod
配置,我在angular.json中添加了以下部分:
{
"projects": {
"app": {
"architect": {
"build": {
"configurations": {
"preprod": {
...
}}}}}}}
仅使用ionic cordova build android
进行建置会产生下列错误:
> ng run app:ionic-cordova-build:preprod --platform=android
An unhandled exception occurred: Configuration 'preprod' is not set in the workspace.
这就是为什么我分3个阶段构建,ionic build ... --configuration=preprod
,ionic cordova prepare ...
,ionic cordova build android --no-build
。我的目的是第一个阶段在正确的配置中构建应用,第二个阶段使用配置构建的Web文件更新Android项目,第三个阶段构建最终的APK。
1条答案
按热度按时间snvhrwxg1#
构建新的调试应用程序(apk)的简单常规方法就是调用
这个调用在内部准备,所以不需要另一个调用。它将产生一个apk文件,你可以用来在设备上测试(也可能是模拟器,取决于功能)。
考虑到这是一个新的应用程序,而且Google的要求也发生了变化,所以当需要发布到商店时,您需要构建一个
.aab
文件。至于签名,你需要提供密钥给Google,他们会通过提供的.aab为你签名。这里有更详细的解释:
https://ionicframework.com/blog/google-play-android-app-bundle-requirement-for-new-apps/
现在,如果您需要创建一个自定义配置(您所指的
preprod
),因为您有一些非常具体的 * Angular * 环境更改或要求,超出了默认值所能提供的范围,正如您在注解中所发现的,您将需要编辑angular.json
文件来添加它。默认情况下,Ionic为环境变量提供了一个结构,可以在
src/environments
中找到。有关其工作原理的更多详细信息,可以在此处找到:https://medium.com/swlh/environment-variables-in-angular-ionic-8aa1698f2cc5