I am trying to make an Android app. Everything was working fine until I tried to implement ads. Now when I try to publish my game to my phone it gives me the error message "Error creating files. Namespace is invalid in the application descriptor file". What I have tried is changing to and have been looking online for quite some time with no luck as to fixing this.
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<application xmlns="http://ns.adobe.com/air/application/20.0">
<id>keepmoving</id>
<versionNumber>1.0.2</versionNumber>
<versionLabel></versionLabel>
<filename>keep moving</filename>
<description/>
<!-- To localize the description, use the following format for the description element.<description><text xml:lang="en">English App description goes here</text><text xml:lang="fr">French App description goes here</text><text xml:lang="ja">Japanese App description goes here</text></description>-->
<name>keep moving</name>
<!-- To localize the name, use the following format for the name element.<name><text xml:lang="en">English App name goes here</text><text xml:lang="fr">French App name goes here</text><text xml:lang="ja">Japanese App name goes here</text></name>-->
<copyright/>
<initialWindow>
<content>keep%20moving.swf</content>
<systemChrome>standard</systemChrome>
<transparent>false</transparent>
<visible>true</visible>
<fullScreen>true</fullScreen>
<aspectRatio>portrait</aspectRatio>
<renderMode>direct</renderMode>
<autoOrients>false</autoOrients></initialWindow>
<icon/>
<customUpdateUI>false</customUpdateUI>
<allowBrowserInvocation>false</allowBrowserInvocation>
<android>
<manifestAdditions><![CDATA[
<manifest android:installLocation="auto">
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<application>
<meta-data android:name="com.google.android.gms.version"
android:value="#integer/google_play_services_version" />
<activity android:name="com.google.android.gms.ads.AdActivity" android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" android:theme="#android:style/Theme.Translucent"/>
</application>
</manifest>
]]></manifestAdditions>
</android>
<extensions>
<extensionID>so.cuo.platform.admob</extensionID>
</extensions>
</application>
I've had the same problem with Adobe Air 24. Upgrading to Adobe Air 31 fixed it for me.
Related
Hi I have added my Google map api key in Android. manifest in my Xamarin.forms app. By using SHA1 finger print I got the API key. I used Google map sdk for android. But my map is not loading. It is just a gray box. How can I solve this?
Please help me.
Thanks
This is my Android.menifest code
<?xml version="1.0" encoding="UTF-8"?>
<manifest android:installLocation="internalOnly" package="com.companyname.ABC" android:versionName="1.0" android:versionCode="1" xmlns:android="http://schemas.android.com/apk/res/android">
<uses-sdk android:minSdkVersion="15"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.FLASHLIGHT"/>
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"/>
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<application android:label="ABC.Android">
<meta-data android:name="com.google.android.geo.API_KEY" android:value="MY_API_KEY"/>
</application>
Is this on the emulator? Are the Google Play Services installed? For example, is there a store icon? If not, that is probably the problem. Those services are needed to show the map.
Please try on a physical device or install the Google Play Services on the emulator, there are some guides on internet that explain how depending on your emulator.
I followed these steps till now to integrate Google Map API:
1: I obtained the SHA-1
2: Created one project in google developer console
3: Obtained API Key by providing package name and SHA-1 key and restrict the key to mobile android app
4: Added necessary packages like xamarin.forms.map, xamarin.GooglePlayServices.Maps in to project
5: i added that key into android-manifest file as follow
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="1" android:versionName="1.0" package="com.companyname.webserviceappdemo">
<application android:label="WebServiceAppDemo">
<meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="AIzaSyB76kTIp0NbCsEXK_irDFG4NRpkK19YA1A"/>
<meta-data android:name="com.google.android.gms.version" android:value="#integer/google_play_services_version"/>
</application>
<uses-sdk android:minSdkVersion="15" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
</manifest>
Check this video. It's for Xamarin.Android but it's the same logic for Xamarin.Forms.
Xamarin Android Tutorial - Google Maps
I have made a native Android app with Eclipse which controls a RFID USB scanner.
These permissions are requested through the AndroidManifest.xml in the intent-filter and xml device filter tag. When I plug the usb device in the Android (minix), the permissions are given once and the scanner works perfectly.
Example of the manifest (in the native Android app):
<application
android:allowBackup="true"
android:icon="#drawable/ic_launcher"
android:label="#string/app_name"
android:theme="#style/AppTheme" >
<activity
android:name=".Main1Activity"
android:label="#string/title_activity_main1"
android:launchMode="singleTask"
android:theme="#android:style/Theme.Black.NoTitleBar.Fullscreen" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" />
<action android:name="android.hardware.usb.action.USB_DEVICE_DETACHED" />
</intent-filter>
<meta-data
android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED"
android:resource="#xml/device_filter" />
<meta-data
android:name="android.hardware.usb.action.USB_DEVICE_DETACHED"
android:resource="#xml/device_filter" />
</activity>
</application>
The problem is when I build the ANE and use this in an AIR Android app, these USB permissions are not requested and I don't have access to the device.
What should I place in the AIR Android manifest to access the USB device? I cannot use the intent-filters and meta-data because I don't have access to the XML.
Thanks for your help :-)
I m developing a push notification service for my app in android i came to some tutorials to achieve my goal. I struck to 2 things that i can't figure out. I need some help.
PushNotifications.init( "*DEV_KE*Y" );
<permission
android:name="*application ID*.permission.C2D_MESSAGE"
Now i want to know about this 2 things. Dev_key and application id.Secondly is PushNotifications.init(); necessary to call? what if i call it without dev_key param?
I'm guessing you're following the tutorials on distriqt's site about using the distriqt cross platform push notifications extension?
If so then the DEV_KEY is actually the developer key you get when you sign up to the distriqt extension package. It is necessary to call this function with a valid key if you are hoping to use the distriqt extensions. If you call it without the DEV_KEY param the extension will not work as documented.
The second line you have there containing the application ID is used in your application descriptor file. You need to add the following to your manifest additions on android replacing all the YOUR_APPLICATION_ID references with your applications id. This is normally of the form : com.company.name. The air prefixes are shown as these are your applications full id on the Android platform.
<android>
<manifestAdditions><![CDATA[
<manifest android:installLocation="auto">
<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="16"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.VIBRATE"/>
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<!-- Only this application can receive the messages and registration result -->
<permission android:name="air.YOUR_APPLICATION_ID.permission.C2D_MESSAGE" android:protectionLevel="signature" />
<uses-permission android:name="air.YOUR_APPLICATION_ID.permission.C2D_MESSAGE" />
<application>
<receiver android:enabled="true" android:exported="true" android:name="com.distriqt.extension.pushnotifications.PushNotificationsBroadcastReceiver" android:permission="com.google.android.c2dm.permission.SEND" >
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<action android:name="com.google.android.c2dm.intent.REGISTRATION" />
<category android:name="air.YOUR_APPLICATION_ID" />
</intent-filter>
</receiver>
<service android:enabled="true" android:exported="true" android:name="com.distriqt.extension.pushnotifications.gcm.GCMIntentService" />
</application>
</manifest>
]]></manifestAdditions>
</android>
I've been googling for something seemilgly simply, but I can't seem to find an answer: I am building some adobe native extension (ios/android). The native code is expecting to find a config.plist (ios) or .properties(android) file to work. The file is expected to be in the main res bundle (ios) or assets folder (android).
How should the adobe air app developer provide this file? Obviously I cannot package it inside the .ane file since it's app-specific...
Thanks!
I think you should be looking to the application descriptor for this sort of information. Eg info.plist additions can be added to the descriptor by adding the InfoAdditions node of the iphone section, for example:
<iPhone>
<InfoAdditions>
<![CDATA[
<key>UIRequiresPersistentWiFi</key>
<string>NO</string>
]]>
</InfoAdditions>
</iPhone>
http://help.adobe.com/en_US/as3/iphone/WS789ea67d3e73a8b2-48bca492124b39ac5e2-7ffb.html
And android has the manifest additions:
<android>
<manifestAdditions>
<![CDATA[
<manifest>
<uses-permission android:name="android.permission.INTERNET"/>
<application>
<receiver ... />
</application>
</manifest>
]]>
</manifestAdditions>
</android>