The file transfer plugin is deprecated. Can you not use Angular’s HttpClient
to achieve your goal instead?
Cordova FileTransfer doesn't download file
How to update message of LoadingController in ionic4?
Yes it’s an ugly way but as workaround it works.
I hope that the ionic team will improve this component.
Tanks for your answer.
Ionic 4 - Nested Tabs Relative Routes
I am facing the same issue here. I am currently on “/tabs/tab2” route and trying to click on “discover” tab which will lead to “tabs/tab2/discover” view
I am using following code
<ion-tabs>
<ion-tab-bar slot="top" color="dark">
<ion-tab-button *ngFor="let tab of subtabs" tab="tab2/{{tab.name}}">
<ion-label>{{tab.name|uppercase}}</ion-label>
</ion-tab-button>
</ion-tab-bar>
</ion-tabs>
const routes: Routes = [{
path: '',
component: Tab2Page,
children: [
{path: '', redirectTo: 'tab2', pathMatch: 'full'},
{path: 'discover', children: [{path: '', loadChildren: '../subtabs/discover/discover.module#DiscoverPageModule'}]},
{path: 'popular', children: [{path: '', loadChildren: '../subtabs/popular/popular.module#PopularPageModule'}]}
]
},
{path: '', redirectTo: 'tab2', pathMatch: 'full'},
];
also used the code suggested by @aharonDLis result was same error.
can someone suggest better option??
IONIC 4 - com.android.ide.common.process.ProcessException: Failed to execute aapt
Hello, I am having problems compiling the ionic application for android.
I’ve already been able to compile, but since the last change, I have not been able to compile. I tried everything, and when compiled, the application gets errors in the APK.
I’ve rolled over my package.json and config.xml and am having the error below.
The error:
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:processReleaseResources'.
> Failed to execute aapt
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
* Get more help at https://help.gradle.org
BUILD FAILED in 6s
:app:processReleaseResources FAILED
33 actionable tasks: 30 executed, 3 up-to-date
/Users/ademilsonmarsiglio/Documents/Workspace/ionic-apps/ionic4-tuaagenda/platforms/android/gradlew: Command failed with exit code 1 Error output:
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
/Users/ademilsonmarsiglio/.gradle/caches/transforms-1/files-1.1/core-1.0.0.aar/6a57aa5a00da3e6e0797de8dc7aa0646/res/values/values.xml:133:5-70: AAPT: error: resource android:attr/fontVariationSettings not found.
/Users/ademilsonmarsiglio/.gradle/caches/transforms-1/files-1.1/core-1.0.0.aar/6a57aa5a00da3e6e0797de8dc7aa0646/res/values/values.xml:133:5-70: AAPT: error: resource android:attr/ttcIndex not found.
/Users/ademilsonmarsiglio/Documents/Workspace/ionic-apps/ionic4-tuaagenda/platforms/android/app/build/intermediates/incremental/mergeReleaseResources/merged.dir/values/values.xml:95: error: resource android:attr/fontVariationSettings not found.
/Users/ademilsonmarsiglio/Documents/Workspace/ionic-apps/ionic4-tuaagenda/platforms/android/app/build/intermediates/incremental/mergeReleaseResources/merged.dir/values/values.xml:95: error: resource android:attr/ttcIndex not found.
error: failed linking references.
Failed to execute aapt
com.android.ide.common.process.ProcessException: Failed to execute aapt
at com.android.builder.core.AndroidBuilder.processResources(AndroidBuilder.java:796)
at com.android.build.gradle.tasks.ProcessAndroidResources.invokeAaptForSplit(ProcessAndroidResources.java:551)
at com.android.build.gradle.tasks.ProcessAndroidResources.doFullTaskAction(ProcessAndroidResources.java:285)
at com.android.build.gradle.internal.tasks.IncrementalTask.taskAction(IncrementalTask.java:109)
at sun.reflect.GeneratedMethodAccessor1047.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:73)
at org.gradle.api.internal.project.taskfactory.DefaultTaskClassInfoStore$IncrementalTaskAction.doExecute(DefaultTaskClassInfoStore.java:173)
at org.gradle.api.internal.project.taskfactory.DefaultTaskClassInfoStore$StandardTaskAction.execute(DefaultTaskClassInfoStore.java:134)
at org.gradle.api.internal.project.taskfactory.DefaultTaskClassInfoStore$StandardTaskAction.execute(DefaultTaskClassInfoStore.java:121)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$1.run(ExecuteActionsTaskExecuter.java:122)
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336)
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:197)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:107)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:111)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:92)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:70)
at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:63)
at org.gradle.api.internal.tasks.execution.ResolveTaskOutputCachingStateExecuter.execute(ResolveTaskOutputCachingStateExecuter.java:54)
at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:58)
at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:88)
at org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.java:52)
at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:52)
at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:54)
at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)
at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:34)
at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker$1.run(DefaultTaskGraphExecuter.java:248)
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336)
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:197)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:107)
at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:241)
at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:230)
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.processTask(DefaultTaskPlanExecutor.java:124)
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.access$200(DefaultTaskPlanExecutor.java:80)
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:105)
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:99)
at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.execute(DefaultTaskExecutionPlan.java:625)
at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.executeWithTask(DefaultTaskExecutionPlan.java:580)
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.run(DefaultTaskPlanExecutor.java:99)
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.util.concurrent.ExecutionException: java.util.concurrent.ExecutionException: com.android.tools.aapt2.Aapt2Exception: AAPT2 error: check logs for details
at com.google.common.util.concurrent.AbstractFuture.getDoneValue(AbstractFuture.java:503)
at com.google.common.util.concurrent.AbstractFuture.get(AbstractFuture.java:482)
at com.google.common.util.concurrent.AbstractFuture$TrustedFuture.get(AbstractFuture.java:79)
at com.android.builder.core.AndroidBuilder.processResources(AndroidBuilder.java:794)
... 47 more
Caused by: java.util.concurrent.ExecutionException: com.android.tools.aapt2.Aapt2Exception: AAPT2 error: check logs for details
at com.google.common.util.concurrent.AbstractFuture.getDoneValue(AbstractFuture.java:503)
at com.google.common.util.concurrent.AbstractFuture.get(AbstractFuture.java:462)
at com.google.common.util.concurrent.AbstractFuture$TrustedFuture.get(AbstractFuture.java:79)
at com.android.builder.internal.aapt.v2.QueueableAapt2.lambda$makeValidatedPackage$1(QueueableAapt2.java:179)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
... 1 more
Caused by: com.android.tools.aapt2.Aapt2Exception: AAPT2 error: check logs for details
at com.android.builder.png.AaptProcess$NotifierProcessOutput.handleOutput(AaptProcess.java:463)
at com.android.builder.png.AaptProcess$NotifierProcessOutput.err(AaptProcess.java:415)
at com.android.builder.png.AaptProcess$ProcessOutputFacade.err(AaptProcess.java:332)
at com.android.utils.GrabProcessOutput$1.run(GrabProcessOutput.java:104)
ionic info
Ionic:
Ionic CLI : 5.2.1 (/usr/local/lib/node_modules/ionic)
Ionic Framework : @ionic/angular 4.0.0-beta.16
@angular-devkit/build-angular : 0.12.4
@angular-devkit/schematics : 7.3.9
@angular/cli : 7.3.9
@ionic/angular-toolkit : 1.5.1
Cordova:
Cordova CLI : 9.0.0 (cordova-lib@9.0.1)
Cordova Platforms : android 7.1.4
Cordova Plugins : cordova-plugin-ionic-keyboard 2.1.3, cordova-plugin-ionic-webview 2.5.1, (and 11 other plugins)
Utility:
cordova-res : not installed
native-run : 0.2.7
System:
ios-deploy : 1.9.4
ios-sim : 7.0.0
NodeJS : v11.6.0 (/usr/local/Cellar/node/11.6.0/bin/node)
npm : 6.9.2
OS : macOS Mojave
Xcode : Xcode 10.2.1 Build version 10E1001
config.xml
<?xml version='1.0' encoding='utf-8'?>
<widget id="com.tuaagenda" version="1.1.32" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
<name>Tua Agenda</name>
<description>Aplicativo complemento do site https://tuaagenda.com</description>
<author email="ademilson.marsiglio@gmail.com" href="https://tuaagenda.com/">Tua Agenda</author>
<content src="index.html" />
<access origin="*" />
<allow-intent href="http://*/*" />
<allow-intent href="https://*/*" />
<allow-intent href="tel:*" />
<allow-intent href="whatsapp:*" />
<allow-intent href="sms:*" />
<allow-intent href="mailto:*" />
<allow-intent href="geo:*" />
<preference name="ScrollEnabled" value="false" />
<preference name="android-minSdkVersion" value="19" />
<preference name="BackupWebStorage" value="none" />
<preference name="SplashMaintainAspectRatio" value="true" />
<preference name="FadeSplashScreenDuration" value="300" />
<preference name="SplashShowOnlyFirstTime" value="false" />
<preference name="SplashScreen" value="screen" />
<preference name="SplashScreenDelay" value="2000" />
<platform name="android">
<allow-intent href="market:*" />
<icon density="ldpi" src="resources/android/icon/drawable-ldpi-icon.png" />
<icon density="mdpi" src="resources/android/icon/drawable-mdpi-icon.png" />
<icon density="hdpi" src="resources/android/icon/drawable-hdpi-icon.png" />
<icon density="xhdpi" src="resources/android/icon/drawable-xhdpi-icon.png" />
<icon density="xxhdpi" src="resources/android/icon/drawable-xxhdpi-icon.png" />
<icon density="xxxhdpi" src="resources/android/icon/drawable-xxxhdpi-icon.png" />
<splash density="land-ldpi" src="resources/android/splash/drawable-land-ldpi-screen.png" />
<splash density="land-mdpi" src="resources/android/splash/drawable-land-mdpi-screen.png" />
<splash density="land-hdpi" src="resources/android/splash/drawable-land-hdpi-screen.png" />
<splash density="land-xhdpi" src="resources/android/splash/drawable-land-xhdpi-screen.png" />
<splash density="land-xxhdpi" src="resources/android/splash/drawable-land-xxhdpi-screen.png" />
<splash density="land-xxxhdpi" src="resources/android/splash/drawable-land-xxxhdpi-screen.png" />
<splash density="port-ldpi" src="resources/android/splash/drawable-port-ldpi-screen.png" />
<splash density="port-mdpi" src="resources/android/splash/drawable-port-mdpi-screen.png" />
<splash density="port-hdpi" src="resources/android/splash/drawable-port-hdpi-screen.png" />
<splash density="port-xhdpi" src="resources/android/splash/drawable-port-xhdpi-screen.png" />
<splash density="port-xxhdpi" src="resources/android/splash/drawable-port-xxhdpi-screen.png" />
<splash density="port-xxxhdpi" src="resources/android/splash/drawable-port-xxxhdpi-screen.png" />
<resource-file src="google-services.json" target="app/google-services.json" />
</platform>
<platform name="ios">
<allow-intent href="itms:*" />
<allow-intent href="itms-apps:*" />
<icon height="57" src="resources/ios/icon/icon.png" width="57" />
<icon height="114" src="resources/ios/icon/icon@2x.png" width="114" />
<icon height="40" src="resources/ios/icon/icon-40.png" width="40" />
<icon height="80" src="resources/ios/icon/icon-40@2x.png" width="80" />
<icon height="120" src="resources/ios/icon/icon-40@3x.png" width="120" />
<icon height="50" src="resources/ios/icon/icon-50.png" width="50" />
<icon height="100" src="resources/ios/icon/icon-50@2x.png" width="100" />
<icon height="60" src="resources/ios/icon/icon-60.png" width="60" />
<icon height="120" src="resources/ios/icon/icon-60@2x.png" width="120" />
<icon height="180" src="resources/ios/icon/icon-60@3x.png" width="180" />
<icon height="72" src="resources/ios/icon/icon-72.png" width="72" />
<icon height="144" src="resources/ios/icon/icon-72@2x.png" width="144" />
<icon height="76" src="resources/ios/icon/icon-76.png" width="76" />
<icon height="152" src="resources/ios/icon/icon-76@2x.png" width="152" />
<icon height="167" src="resources/ios/icon/icon-83.5@2x.png" width="167" />
<icon height="29" src="resources/ios/icon/icon-small.png" width="29" />
<icon height="58" src="resources/ios/icon/icon-small@2x.png" width="58" />
<icon height="87" src="resources/ios/icon/icon-small@3x.png" width="87" />
<icon height="1024" src="resources/ios/icon/icon-1024.png" width="1024" />
<splash height="1136" src="resources/ios/splash/Default-568h@2x~iphone.png" width="640" />
<splash height="1334" src="resources/ios/splash/Default-667h.png" width="750" />
<splash height="2208" src="resources/ios/splash/Default-736h.png" width="1242" />
<splash height="1242" src="resources/ios/splash/Default-Landscape-736h.png" width="2208" />
<splash height="1536" src="resources/ios/splash/Default-Landscape@2x~ipad.png" width="2048" />
<splash height="2048" src="resources/ios/splash/Default-Landscape@~ipadpro.png" width="2732" />
<splash height="768" src="resources/ios/splash/Default-Landscape~ipad.png" width="1024" />
<splash height="2048" src="resources/ios/splash/Default-Portrait@2x~ipad.png" width="1536" />
<splash height="2732" src="resources/ios/splash/Default-Portrait@~ipadpro.png" width="2048" />
<splash height="1024" src="resources/ios/splash/Default-Portrait~ipad.png" width="768" />
<splash height="960" src="resources/ios/splash/Default@2x~iphone.png" width="640" />
<splash height="480" src="resources/ios/splash/Default~iphone.png" width="320" />
<splash height="2732" src="resources/ios/splash/Default@2x~universal~anyany.png" width="2732" />
</platform>
<plugin name="cordova-plugin-whitelist" spec="1.3.3" />
<plugin name="cordova-plugin-statusbar" spec="2.4.2" />
<plugin name="cordova-plugin-splashscreen" spec="5.0.2" />
<plugin name="cordova-plugin-ionic-webview" spec="^2.0.0" />
<plugin name="cordova-plugin-ionic-keyboard" spec="^2.0.5" />
<plugin name="mx.ferreyra.callnumber" spec="~0.0.2" />
<plugin name="cordova-plugin-camera" spec="4.0.3" />
<plugin name="cordova-plugin-device" spec="^2.0.2" />
<plugin name="cordova-plugin-x-socialsharing" spec="^5.4.3">
<variable name="ANDROID_SUPPORT_V4_VERSION" value="24.1.1+" />
</plugin>
<plugin name="cordova-plugin-inappbrowser" spec="3.0.0" />
<plugin name="cordova-clipboard" spec="1.2.1" />
<plugin name="cordova-plugin-app-version" spec="0.1.9" />
<engine name="ios" spec="4.5.5" />
<engine name="browser" spec="5.0.4" />
<plugin name="cordova-plugin-firebase" spec="https://github.com/dpa99c/cordova-plugin-firebase#GH-1057-April-05-android-build-issue" />
<engine name="android" spec="~7.1.4" />
</widget>
package.json
{
"name": "ionic4-tuaagenda",
"version": "0.0.1",
"author": "Ionic Framework",
"homepage": "http://ionicframework.com/",
"scripts": {
"ng": "ng",
"start": "ng serve",
"build": "ng build",
"test": "ng test",
"lint": "ng lint",
"e2e": "ng e2e"
},
"private": true,
"dependencies": {
"@angular/common": "~7.0.0",
"@angular/core": "~7.0.0",
"@angular/fire": "^5.1.1",
"@angular/forms": "~7.0.0",
"@angular/http": "~7.0.0",
"@angular/platform-browser": "~7.0.0",
"@angular/platform-browser-dynamic": "~7.0.0",
"@angular/pwa": "^0.13.0",
"@angular/router": "~7.0.0",
"@angular/service-worker": "~7.0.0",
"@ionic-native/app-version": "^5.0.0",
"@ionic-native/call-number": "^5.0.0",
"@ionic-native/camera": "^5.0.0",
"@ionic-native/clipboard": "^5.0.0",
"@ionic-native/core": "5.0.0-beta.21",
"@ionic-native/device": "^5.0.0",
"@ionic-native/firebase": "^5.0.0",
"@ionic-native/in-app-browser": "^5.0.0",
"@ionic-native/social-sharing": "^5.0.0",
"@ionic-native/splash-screen": "5.0.0-beta.21",
"@ionic-native/status-bar": "5.0.0-beta.21",
"@ionic/angular": "4.0.0-beta.16",
"@ionic/pro": "2.0.3",
"@ionic/storage": "^2.2.0",
"@logisticinfotech/ionic4-datepicker": "^1.1.0",
"@types/fullcalendar": "^3.8.0",
"@types/jquery": "^3.3.29",
"angularfire2": "^5.1.1",
"br-mask": "0.0.4",
"call-number": "1.0.1",
"cordova": "^9.0.0",
"cordova-android": "^7.1.4",
"cordova-browser": "5.0.4",
"cordova-clipboard": "1.2.1",
"cordova-ios": "4.5.5",
"cordova-plugin-app-version": "0.1.9",
"cordova-plugin-camera": "4.0.3",
"cordova-plugin-device": "^2.0.2",
"cordova-plugin-firebase": "git+https://github.com/dpa99c/cordova-plugin-firebase.git#GH-1057-April-05-android-build-issue",
"cordova-plugin-inappbrowser": "3.0.0",
"cordova-plugin-ionic-keyboard": "^2.1.3",
"cordova-plugin-ionic-webview": "^2.3.2",
"cordova-plugin-splashscreen": "^5.0.2",
"cordova-plugin-statusbar": "^2.4.2",
"cordova-plugin-whitelist": "^1.3.3",
"cordova-plugin-x-socialsharing": "^5.4.4",
"core-js": "^2.6.3",
"es6-promise-plugin": "^4.2.2",
"firebase": "^5.8.2",
"fullcalendar": "^3.10.0",
"jquery": "^3.3.1",
"moment": "^2.24.0",
"mx.ferreyra.callnumber": "0.0.2",
"ng-fullcalendar": "^1.7.1",
"rxjs": "~6.3.3",
"zone.js": "^0.8.29"
},
"devDependencies": {
"@angular-devkit/architect": "^0.10.7",
"@angular-devkit/build-angular": "^0.12.4",
"@angular-devkit/core": "^7.0.7",
"@angular-devkit/schematics": "^7.0.7",
"@angular/cli": "^7.0.7",
"@angular/compiler": "~7.0.0",
"@angular/compiler-cli": "~7.0.0",
"@angular/language-service": "~7.0.0",
"@ionic/angular-toolkit": "^1.2.3",
"@ionic/lab": "1.0.18",
"@types/jasmine": "^2.8.16",
"@types/jasminewd2": "~2.0.3",
"@types/node": "^10.12.21",
"codelyzer": "~4.5.0",
"jasmine-core": "~2.99.1",
"jasmine-spec-reporter": "~4.2.1",
"karma": "~3.0.0",
"karma-chrome-launcher": "~2.2.0",
"karma-coverage-istanbul-reporter": "~2.0.1",
"karma-jasmine": "~1.1.2",
"karma-jasmine-html-reporter": "^0.2.2",
"protractor": "^5.4.2",
"ts-node": "~7.0.0",
"tslint": "~5.11.0",
"typescript": "~3.1.6"
},
"description": "An Ionic project",
"cordova": {
"plugins": {
"cordova-plugin-whitelist": {},
"cordova-plugin-statusbar": {},
"cordova-plugin-device": {},
"cordova-plugin-splashscreen": {},
"cordova-plugin-ionic-webview": {
"ANDROID_SUPPORT_ANNOTATIONS_VERSION": "27.+"
},
"cordova-plugin-ionic-keyboard": {},
"cordova-plugin-x-socialsharing": {
"ANDROID_SUPPORT_V4_VERSION": "24.1.1+"
},
"mx.ferreyra.callnumber": {},
"call-number": {},
"cordova-plugin-camera": {},
"cordova-plugin-inappbrowser": {},
"cordova-clipboard": {},
"cordova-plugin-app-version": {},
"cordova-plugin-firebase": {}
},
"platforms": [
"ios",
"browser",
"android"
]
}
}
GPS Spoofing
Hi,
Are there any plugins available that can detect if mock location is enabled in the latest versions of Android/IOS? Or is there a simple way to check?
Cheers
Paul
How to update message of LoadingController in ionic4?
Might this be one of those FTSE problems? IOW, how about moving the dynamic capability into a custom component?
let loader = this.loadingCtrl.create({
content: '<my-loader-messager [message]="msg"></my-loader-messager>'
});
Changes to any properties referenced by the internal component (such as msg
in this example) should be reflected in the loading component (although perhaps manual change detection triggering might be needed).
Previous successful ionic appflow builds no longer building
Hi there
I have a number of successful builds on ionic appflow.
After an unsuccessful build (failed on gradle issues) I decided to go back to a previous build.
Instead of simply downloading the existing apk I created a new build from that package to make sure that the previous builds were still working.
I was expecting it to build another apk the same as it had done the previous time, but it now fails with the same gradle issues. I tried a few other previously successful builds and same problem.
What exactly has changed? Why does ionic appflow not use the exact same package to build again?
PS. If it helps the gradle issue is Failed to execute aapt
Styling ionic v4 scroll bar in ionic pwa
As anyone found a solution?
I am using the latest version of Ionic 4.6.0 and I am having difficulty applying styles to the scrollbar for the entire application in IonContent and other elements that may have scroll.
Ionic cordova run android (native run issue)
Apparently since Ionic 5.0.0 to run your app in a device requires a utility called native-run
It’s a “Utility for running native binaries on iOS and Android devices and simulators/emulators.”
File Chooser issue, Selecting files from "Downloads" Folder
I’m I the only one who face this issue?
After splash screen, display white screen long time
this is actually the right solution, --prod when used will disable debugging mode which cause the white screen delay.
How to split string in typescript ionic?
thanks for the answer. it works fine.
Response with status: 0 for URL: null -- getting this error when I run in simulator or web
I am developing a simple maid android based app using Ionic framework and I use laravel for my backend. I am getting ‘Response with status: 0 for URL: null’ this error when I run it in web or android simulator.
I could not be able to register a new user, when I used POSTMAN to check my restful API it works and I could be a able to register a new user. But when I run this app in simulator it keep on showing this ‘Response with status: 0 for URL: null’ error.
**auth-service.ts file**
import { Injectable } from '@angular/core';
import {Http, Headers} from '@angular/http'
import 'rxjs/add/operator/map';
let apiUrl = 'http://fypBackend.test/api/';
@Injectable({
providedIn: 'root'
})
export class AuthServiceService {
constructor(public http: Http) { }
register(data){
return new Promise((resolve, reject) => {
let headers = new Headers();
headers.append('Content-Type', 'application/json');
this.http.post(apiUrl+'users', JSON.stringify(data), {headers: headers})
.subscribe(res => {
resolve(res.json());
}, (err) => {
console.log('Not Working')
reject(err);
});
});
}
}
**register.ts file**
import { Component} from '@angular/core';
import { NavController,LoadingController, ToastController } from '@ionic/angular';
import {AuthServiceService} from '../auth-service.service';
@Component({
selector: 'page-register',
templateUrl: './register.page.html',
styleUrls: ['./register.page.scss'],
})
export class RegisterPage{
loading: any;
regData = {name: '', icNumber: '', email: '',
password: '', phone: '', address: '',
cityState: '', houseType: '', category:''};
constructor(public navCtrl: NavController, public authService: AuthServiceService, public loadingCtr: LoadingController, private toastCtrl: ToastController) { }
doSignup(){
this.authService.register(this.regData).then((result)=>{
this.loading.dismiss();
this.navCtrl.pop();
}, (err) => {
this.presentToast(err);
});
}
async presentToast(msg){
const toast = await this.toastCtrl.create({
message: msg,
duration: 3000,
position: 'top',
color: 'dark',
});
toast.present();
}
}
**register.html file**
<ion-content padding>
<h2>Register Here</h2>
<form (submit) = "doSignup()">
<ion-item>
<ion-label stacked>Username</ion-label>
<ion-input [(ngModel)] = "regData.name" name = "name" type="text" placeholder = "Your Name"></ion-input>
</ion-item>
<ion-item>
<ion-label stacked>IC-Number</ion-label>
<ion-input [(ngModel)] = "regData.icNumber" name = "icNumber" type="number" placeholder = "Your IC-Number"></ion-input>
</ion-item>
<ion-item>
<ion-label stacked>E-mail</ion-label>
<ion-input [(ngModel)] = "regData.email" name = "email" type="email" placeholder = "Your E-Mail"></ion-input>
</ion-item>
<ion-item>
<ion-label stacked>Password</ion-label>
<ion-input [(ngModel)] = "regData.password" name = "password" type="password" placeholder = "Your Password"></ion-input>
</ion-item>
<ion-item>
<ion-label stacked>Handphone Number</ion-label>
<ion-input [(ngModel)] = "regData.phone" name = "phone" type="tel" placeholder = "Your Phone Number"></ion-input>
</ion-item>
<ion-item>
<ion-label stacked>Address</ion-label>
<ion-input [(ngModel)] = "regData.address" name = "address" type="text" placeholder = "Your Address"></ion-input>
</ion-item>
<ion-item>
<ion-label stacked>City/State</ion-label>
<ion-input [(ngModel)] = "regData.cityState" name = "cityState" type="text" placeholder = "Your City/State"></ion-input>
</ion-item>
<ion-item>
<ion-label stacked>House Type</ion-label>
<ion-input [(ngModel)] = "regData.houseType" name = "houseType" type="text" placeholder = "Your House Type"></ion-input>
</ion-item>
<ion-item>
<ion-label stacked>Category</ion-label>
<ion-select [(ngModel)] = "regData.category" name = "category" type="text" placeholder = "Your Category">
<ion-select-option value="1" selected>Maid</ion-select-option>
<ion-select-option value="2" selected>Customer</ion-select-option>
</ion-select>
</ion-item>
<button ion-button block type = "submit">
SignUp
</button>
</form>
</ion-content>
NG2-Charts + Ionic4
Hello! I am facing the same issue. How did you solve it ? Till now, I can’t solve it . Thank you very much .
Simple ionic 3 star rating component
The package has been upgraded to support multiple usage of ionic3-star-rating component in the same parent page. Latest version supports the usage in component as well. You can also configure the font-size of the icons now.
Upgrade the component by running the command
npm install ionic3-star-rating@2.0.0
Ionic 4 & Angular 8
Is @ionic/angular 4.6.0 ready for Angular 8 ?
I’ve tried to upgrade my app but i’ve these warnings:
npm WARN @ionic/angular@4.6.0 requires a peer of @angular-devkit/core@^7.2.1 but none is installed. You must install peer dependencies yourself.
npm WARN @ionic/angular@4.6.0 requires a peer of @angular-devkit/schematics@^7.2.1 but none is installed. You must install peer dependencies yourself.
npm WARN @ionic/angular@4.6.0 requires a peer of @angular/core@^7.2.1 but none is installed. You must install peer dependencies yourself.
npm WARN @ionic/angular@4.6.0 requires a peer of @angular/common@^7.2.1 but none is installed. You must install peer dependencies yourself.
npm WARN @ionic/angular@4.6.0 requires a peer of @angular/forms@^7.2.1 but none is installed. You must install peer dependencies yourself.
npm WARN @ionic/angular@4.6.0 requires a peer of @angular/router@^7.2.1 but none is installed. You must install peer dependencies yourself.
npm WARN @ionic/angular@4.6.0 requires a peer of @angular/compiler@^7.2.1 but none is installed. You must install peer dependencies yourself.
npm WARN @ionic/angular@4.6.0 requires a peer of @angular/compiler-cli@^7.2.1 but none is installed. You must install peer dependencies yourself.
npm WARN @ionic/angular@4.6.0 requires a peer of @angular/platform-browser@^7.2.1 but none is installed. You must install peer dependencies yourself.
npm WARN @ionic/angular@4.6.0 requires a peer of @angular/platform-browser-dynamic@^7.2.1 but none is installed. You must install peer dependencies yourself.
npm WARN @ionic/angular@4.6.0 requires a peer of zone.js@^0.8.26 but none is installed. You must install peer dependencies yourself.
I’ve to wait a new @ionic/angular version ?
Ionic 4 & Angular 8
It looks like your angular needs to be updated to >=7.2.1, to support the 4.6.0 update
Ionic 4 & Angular 8
I’ve upgraded to Angular 8…
"dependencies": {
"@angular/common": "^8.0.3",
"@angular/core": "^8.0.3",
"@angular/forms": "^8.0.3",
"@angular/platform-browser": "^8.0.3",
"@angular/platform-browser-dynamic": "^8.0.3",
"@angular/router": "^8.0.3",
"@auth0/angular-jwt": "^2.1.0",
"@ionic-native/core": "^5.8.0",
"@ionic-native/device": "^5.8.0",
"@ionic-native/diagnostic": "^5.8.0",
"@ionic-native/geolocation": "^5.8.0",
"@ionic-native/local-notifications": "^5.8.0",
"@ionic-native/network": "^5.8.0",
"@ionic-native/splash-screen": "^5.8.0",
"@ionic-native/status-bar": "^5.8.0",
"@ionic/angular": "^4.6.0",
"@ionic/storage": "^2.2.0",
"@ngx-translate/core": "^11.0.1",
"@ngx-translate/http-loader": "^4.0.0",
"@types/cordova": "0.0.34",
"br-mask": "0.0.7",
"cordova-android": "8.0.0",
"cordova-ios": "5.0.1",
"cordova-plugin-badge": "^0.8.8",
"cordova-plugin-device": "2.0.2",
"cordova-plugin-geolocation": "4.0.1",
"cordova-plugin-ionic-webview": "^4.1.1",
"cordova-plugin-local-notification": "0.9.0-beta.2",
"cordova-plugin-network-information": "2.0.1",
"cordova-plugin-wifiwizard2": "^3.1.1",
"cordova-sqlite-storage": "3.2.0",
"cordova.plugins.diagnostic": "5.0.0",
"core-js": "3.1.4",
"dayjs": "^1.8.14",
"es6-promise-plugin": "^4.2.2",
"google-libphonenumber": "^3.2.3",
"moment": "^2.24.0",
"moment-duration-format": "^2.3.2",
"ngx-mask": "^8.0.0",
"rxjs": "^6.5.2",
"text-mask-addons": "^3.8.0",
"zone.js": "~0.9.1"
},
"devDependencies": {
"@angular-devkit/architect": "~0.800.6",
"@angular-devkit/build-angular": "~0.800.6",
"@angular-devkit/core": "~8.0.6",
"@angular-devkit/schematics": "~8.0.6",
"@angular/cli": "~8.0.6",
"@angular/compiler": "~8.0.3",
"@angular/compiler-cli": "~8.0.3",
"@angular/language-service": "~8.0.3",
"@ionic/angular-toolkit": "~2.0.0",
"@types/jasmine": "~3.3.13",
"@types/jasminewd2": "~2.0.6",
"@types/node": "~12.0.10",
"codelyzer": "~5.1.0",
"cordova-plugin-ionic-keyboard": "^2.1.3",
"cordova-plugin-statusbar": "^2.4.2",
"cordova-plugin-whitelist": "^1.3.3",
"jasmine-core": "~3.4.0",
"jasmine-spec-reporter": "~4.2.1",
"karma": "~4.1.0",
"karma-chrome-launcher": "~2.2.0",
"karma-coverage-istanbul-reporter": "~2.0.5",
"karma-jasmine": "~2.0.1",
"karma-jasmine-html-reporter": "^1.4.2",
"protractor": "6.0.0",
"ts-node": "~8.3.0",
"tslint": "^5.18.0",
"typescript": "3.4.5"
Apple rejected my app: UIRequiredDeviceCapabilities key
Hi, I added the “telephony” property to the “UIRequiredDeviceCapabilities” and this solved the issue with Apple because I used “href=‘tel:’” in the app.
But now I’m facing with another rejection because my app not comply with “Guideline 4.2.2 - Design - Minimum Functionality” rule, so I’m trying to add some features in my app in hope to be published on the App store.
Ionic 4 & Angular 8
After some fix my app start with angular 8 so maybe warnings about @ionic/angular@4.6.0 are not blockers…