I've published my first app, builtup using Flutter, Dart and Android Studio.
Some functionalities working well in debug mode(even running app in "Release mode" on AS), after publishing doesn't work anymore.
This is my code:
import 'package:url_launcher/url_launcher.dart';
pubspec.yaml:
dependencies:
flutter:
sdk: flutter
image_picker: ^0.6.7+12
url_launcher : ^5.7.8
Manifest permissions:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.FLASHLIGHT" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
launch function:
_launchURL(url) async {
await launch(url);
}
Running the app in debug mode, they come out these messages:
E/flutter (13880): [ERROR:flutter/lib/ui/ui_dart_state.cc(177)]
Unhandled Exception: MissingPluginException(No implementation found
for method launch on channel plugins.flutter.io/url_launcher)
E/flutter (16247): [ERROR:flutter/lib/ui/ui_dart_state.cc(177)]
Unhandled Exception: MissingPluginException(No implementation found
for method pickImage on channel plugins.flutter.io/image_picker)
I've found out only post like "make flutter clean and rerun the IDE", but the problem is not on my IDE, but on the user after downloading the app.
Where am I going wrong?
Related
I am using Firebase Cloud Messaging for push notifications in a Flutter app using node.js + Typescript.
The FCM configurations for onLaunch and onResume were working fine, until I added Firebase dynamic links. Now, every time I receive a notification, the app crashes.
I have included click_action: 'FLUTTER_NOTIFICATION_CLICK' in the notification payload as well.
I do not have an Application.java file, I am using Flutter Android Embedding V2 (Flutter Version >= 1.12) and hence, no additional integration steps are required for Android.
Error:
D/AndroidRuntime(14785): Shutting down VM
E/AndroidRuntime(14785): FATAL EXCEPTION: main
E/AndroidRuntime(14785): Process: com.muffly, PID: 14785
E/AndroidRuntime(14785): java.lang.RuntimeException: Unable to create service io.flutter.plugins.firebasemessaging.FlutterFirebaseMessagingService: java.lang.RuntimeException: PluginRegistrantCallback is not set.
E/AndroidRuntime(14785): at android.app.ActivityThread.handleCreateService(ActivityThread.java:4043)
E/AndroidRuntime(14785): at android.app.ActivityThread.access$1600(ActivityThread.java:229)
E/AndroidRuntime(14785): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1917)
E/AndroidRuntime(14785): at android.os.Handler.dispatchMessage(Handler.java:107)
E/AndroidRuntime(14785): at android.os.Looper.loop(Looper.java:226)
E/AndroidRuntime(14785): at android.app.ActivityThread.main(ActivityThread.java:7592)
E/AndroidRuntime(14785): at java.lang.reflect.Method.invoke(Native Method)
E/AndroidRuntime(14785): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:539)
E/AndroidRuntime(14785): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950)
E/AndroidRuntime(14785): Caused by: java.lang.RuntimeException: PluginRegistrantCallback is not set.
E/AndroidRuntime(14785): at io.flutter.plugins.firebasemessaging.FlutterFirebaseMessagingService.startBackgroundIsolate(FlutterFirebaseMessagingService.java:157)
E/AndroidRuntime(14785): at io.flutter.plugins.firebasemessaging.FlutterFirebaseMessagingService.onCreate(FlutterFirebaseMessagingService.java:77)
E/AndroidRuntime(14785): at android.app.ActivityThread.handleCreateService(ActivityThread.java:4031)
E/AndroidRuntime(14785): ... 8 more
D/OOMEventManagerFK(14785): checkEventAndDumpForJE: 0
I/Process (14785): Sending signal. PID: 14785 SIG: 9
pubspec.yaml
firebase_core: ^0.5.0
firebase_auth: ^0.18.4+1
firebase_messaging: ^7.0.0-dev.15
firebase_dynamic_links: ^0.5.0+11
firebase_core: ^0.5.0
AndroidManifest.xml
<meta-data
android:name="com.google.firebase.messaging.default_notification_icon"
android:resource="#mipmap/ic_launcher" />
<meta-data
android:name="com.google.firebase.messaging.default_notification_channel_id"
android:value="high_importance_channel" />
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
<intent-filter>
<action android:name="FLUTTER_NOTIFICATION_CLICK" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<!-- Accepts URIs that begin with YOUR_SCHEME://YOUR_HOST -->
<data
android:scheme="https"
android:host="muffly.page.link" />
</intent-filter>
Create a separated file beside MainActivity.kt and name it Application.kt and type the following code inside it.
//Don't forget to change it to your app package name!!!
package com.your.packagename
import io.flutter.app.FlutterApplication
import io.flutter.plugin.common.PluginRegistry
import io.flutter.plugin.common.PluginRegistry.PluginRegistrantCallback
import io.flutter.plugins.firebasemessaging.FirebaseMessagingPlugin
import io.flutter.plugins.firebasemessaging.FlutterFirebaseMessagingService.setPluginRegistrant
class Application : FlutterApplication(), PluginRegistrantCallback {
override fun onCreate() {
super.onCreate()
setPluginRegistrant(this)
}
override fun registerWith(registry: PluginRegistry?) {
FirebaseMessagingPlugin.registerWith(registry?.registrarFor("io.flutter.plugins.firebasemessaging.FirebaseMessagingPlugin"));
}
}
Then, on your AndroidMainfest.xml add android:name=".Application" to your application tag
<application
...
android:name=".Application"
>
Finally, add firebase-messaging to your app/build.gradle.
dependencies {
...
implementation "com.google.firebase:firebase-messaging:20.1.0"
}
This error happened to me recently when I try to build any project,
Android resource compilation failed
E:\Android Projects\BarcodReader\app\src\main\res\drawable\ic_launcher_background.xml:12: error: not well-formed (invalid token).
E:\Android Projects\BarcodReader\app\src\main\res\drawable\ic_launcher_background.xml: error: file failed to compile.
and here's the file ic_launcher_background.xml
<component name="libraryTable">
<library name="Gradle: junit:junit:4.12#jar">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/junit/junit/4.12/2973d150c0dc1fefe998f834810d68f278ea58ec/junit-4.12.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/junit/junit/4.12/a6c32b40bf3d76eca54e3c601e5d1470c86fcdfa/junit-4.12-sources.jar!/" />
</SOURCES>
</library>
</component>
when I hover over the file it shows this error
Attribute is missing the Android namespace prefix,
Inspection info:Most Android views have attributes in the Android namespace. When referencing these attributes you must include the namespace prefix, or your attribute will be interpreted by aapt as just a custom attribute. Similarly, in manifest files, nearly all attributes should be in the android: namespace. Issue id: MissingPrefix
what might be causing this error?.
That ic_launcher_background.xml is a IDEA file and not an Android resource file.
Just replace it with whatever valid Android resource XML file and it should build.
I haven't touched my Android Studio for a loooong time, it still worked fine when I launched it, but then I updated to 3.3.0 and I get a 'gradle project sync failed'. I know this is not trivial to debug via SO, but I tried to find anything similar and I lack of knowledge about the entire studio didn't help.
So maybe you can guide me to a solution, I'm not sure what files are necessary, but here is the actual error:
ERROR: Failed to parse XML in C:\Users\roberts\AndroidProjects\LingoFlash\app\src\main\AndroidManifest.xml
ParseError at [row,col]:[27,9]
Message: expected start or end tag
Affected Modules: app
This is the AndroidManifest.xml file:
20 <application
21 android:allowBackup="true"
22 android:icon="#mipmap/ic_launcher"
23 android:label="#string/app_name"
24 android:supportsRtl="true"
25 android:theme="#style/MyMaterialTheme">
26 //------------------------------------------------------------------------------------------
27 <activity android:name=".MainActivity">
28 <intent-filter>
29 <action android:name="android.intent.action.MAIN" />
30 <category android:name="android.intent.category.LAUNCHER" />
31 </intent-filter>
32 </activity>
so what's wrong at line 27? seems to point to the MainActivity
before I paste a ton of data, what would help to debug this?
Comments in xml files do not start with Double slash // they work with <!--Your comments-->. Your manifest is having lines that start with // remove them and try to clean and build your project.
Check if you have some wrong character found in the [27,9] position of the AndroidManifest.xml.
Refs: https://stackoverflow.com/a/52932622/8034839
I found error in Blank app (Windows Universal) template in Visual Studio 2015 RC.
It is some mismatch inside schemas.
error 0xC00CE014: App manifest validation error: The app manifest must
be valid as per schema: Line 23, Column 4, Reason: Element
'{http:/schemas.microsoft.com/appx/manifest/foundation/windows10}TargetDeviceFamily'
is unexpected according to content model of parent element
'{http:/schemas.microsoft.com/appx/manifest/foundation/windows10}Dependencies'.
Expecting:
{http:/schemas.microsoft.com/appx/manifest/foundation/windows10}TargetPlatform.
Package.appxmanifest:
<?xml version="1.0" encoding="utf-8"?>
<Package
xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10"
xmlns:mp="http://schemas.microsoft.com/appx/2014/phone/manifest"
xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10"
IgnorableNamespaces="uap mp">
<Identity
Name="a29f94a4-dc5e-4558-9497-90c6190f49ef"
Publisher="CN=Petr"
Version="1.0.0.0" />
<mp:PhoneIdentity PhoneProductId="a29f94a4-dc5e-4558-9497-90c6190f49ef"
PhonePublisherId="00000000-0000-0000-0000-000000000000"/>
<Properties>
<DisplayName>App1</DisplayName>
<PublisherDisplayName>Petr</PublisherDisplayName>
<Logo>Assets\StoreLogo.png</Logo>
</Properties>
<Dependencies>
<TargetDeviceFamily Name="Windows.Universal"
MinVersion="10.0.10069.0"
MaxVersionTested="10.0.10069.0" />
</Dependencies>
<Resources>
<Resource Language="x-generate"/>
</Resources>
<Applications>
<Application Id="App"
Executable="$targetnametoken$.exe"
EntryPoint="App1.App">
<uap:VisualElements
DisplayName="App1"
Square150x150Logo="Assets\Logo.png"
Square44x44Logo="Assets\SmallLogo.png"
Description="App1"
BackgroundColor="#464646">
<!--ForegroundText="dark"-->
<uap:SplashScreen Image="Assets\SplashScreen.png" />
</uap:VisualElements>
</Application>
</Applications>
<Capabilities>
<Capability Name="internetClient" />
</Capabilities>
</Package>
If you are getting this error when deploying the app to your Windows system, it means that you are trying to deploy/install the app package on an older Windows 10 Preview system. Please ensure that you have the Windows 10 version that was publicly announced at //Build.
http://blogs.windows.com/bloggingwindows/2015/04/29/new-windows-10-insider-preview-build-10074-now-available/
i know there are many question about this but it's about 2 days i work on this and i was unable to find a correct solution (i'm new to android). I need to create an app that can handle a map and draw some markers. I can't even show a map on my device :( Nexus4
This is what i have done :
i copy the google-play-services.jar into my libs dir and change the gradle.build to handle the new library :
dependencies {
compile files('libs/android-support-v4.jar' , 'libs/gcm.jar', 'libs/google-play-services.jar')
}
i already signed my app and enabled the mapv2 api and change the android manifest like this :
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="16" />
...
<uses-feature
android:glEsVersion="0x00020000"
android:required="true"/>
<permission
android:name="com.metu.xxx.permission.MAPS_RECEIVE"
android:protectionLevel="signature"/>
<uses-permission android:name="com.metu.xxx.permission.MAPS_RECEIVE"/>
<application
android:allowBackup="true"
android:icon="#drawable/ic_launcher"
android:label="#string/app_name"
android:theme="#style/AppTheme" >
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="SIGNATURE_HERE -> ^_^"/>
...
my java class looks like this :
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
public class AtmActivity extends FragmentActivity {
#Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_atm);
}
}
my xml layout looks like this :
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<fragment
android:name="com.google.android.gms.maps.SupportMapFragment"
xmlns:map="http://schemas.android.com/apk/res-auto"
android:id="#+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
compiling this code is ok but when i tap on the button to show the activity the app crash :(
This is the error log :
06-16 13:34:30.957 523-535/? E/qcom_sensors_hal: hal_process_time_resp: Resetting rollover count from 0 to 0
06-16 13:34:39.716 28726-28726/com.metu.xxx E/AndroidRuntime: FATAL EXCEPTION: main
java.lang.NoClassDefFoundError: com.google.android.gms.R$styleable
at com.google.android.gms.maps.GoogleMapOptions.createFromAttributes(Unknown Source)
at com.google.android.gms.maps.SupportMapFragment.onInflate(Unknown Source)
at android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:279)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:676)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:746)
at android.view.LayoutInflater.inflate(LayoutInflater.java:489)
at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
at android.view.LayoutInflater.inflate(LayoutInflater.java:352)
at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:270)
at android.app.Activity.setContentView(Activity.java:1881)
at com.metu.xxx.AtmActivity.onCreate(AtmActivity.java:11)
at android.app.Activity.performCreate(Activity.java:5104)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
at android.app.ActivityThread.access$600(ActivityThread.java:141)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5041)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
at dalvik.system.NativeStart.main(Native Method)
Somebody can help me ?
or maybe can link a good how to to solve this ?
Thanks and sorry for my poor english :)
UPDATE :
it seems i completly wrong with this.
following this tutorial and everything went fine : http://android.rzeszow.net/?p=79
(there is a part missing in the copy files, you need to copy the jar and the settings to the libs file of the module)
You need to reference google play services project and not only the jar.