Libgdx & RoboVM to app store - java

I can compile and run my game using LibGDX 0.9.9 and RoboVM 0.0.7
I have been able to build an ipa for app store submission. Uploading my app with Application Loader, I get an error saying: This bundle is invalid. Apple is currently not accepting applications built with this version of Xcode.
Adding
<key>DTXcode</key>
<string>0502</string>
<key>DTXcodeBuild</key>
<string>5A3005</string>
to my info.plist, I get the same app store submission error.
I have tried compiling my project with every combination of the following libraries
LibGDX 0.9.9
LibGDX Nightly - 02/13/14
RoboVM 0.0.8
RoboVM 0.0.9
RoboVM 0.0.10-SNAPSHOT
With any version of RoboVM greater than 0.0.7, I get the following error:
java.lang.IllegalArgumentException: No #Marshaler found for parameter 1 of #Callback method <com.badlogic.gdx.backends.iosrobovm.objectal.AVAudioPlayerDelegate$Callbacks: void didFinishPlaying(com.badlogic.gdx.backends.iosrobovm.objectal.AVAudioPlayerDelegate,org.robovm.objc.Selector,org.robovm.cocoatouch.foundation.NSObject,boolean)>
at org.robovm.compiler.MarshalerLookup.findMarshalerMethod(MarshalerLookup.java:167)
at org.robovm.compiler.BroMethodCompiler.getParameterType(BroMethodCompiler.java:492)
at org.robovm.compiler.BroMethodCompiler.getBridgeOrCallbackFunctionType(BroMethodCompiler.java:513)
at org.robovm.compiler.BroMethodCompiler.getCallbackFunctionType(BroMethodCompiler.java:505)
at org.robovm.compiler.CallbackMethodCompiler.callback(CallbackMethodCompiler.java:78)
at org.robovm.compiler.CallbackMethodCompiler.compileCallback(CallbackMethodCompiler.java:107)
at org.robovm.compiler.CallbackMethodCompiler.doCompile(CallbackMethodCompiler.java:74)
at org.robovm.compiler.AbstractMethodCompiler.compile(AbstractMethodCompiler.java:74)
at org.robovm.compiler.ClassCompiler.callbackMethod(ClassCompiler.java:1070)
at org.robovm.compiler.ClassCompiler.compile(ClassCompiler.java:566)
at org.robovm.compiler.ClassCompiler.compile(ClassCompiler.java:283)
at org.robovm.compiler.AppCompiler.compile(AppCompiler.java:198)
at org.robovm.compiler.AppCompiler.compile(AppCompiler.java:216)
at org.robovm.compiler.AppCompiler.main(AppCompiler.java:438)
I'm at a loss. I just want to submit my app to the Apple App Store. RoboVM 0.0.7 doesn't seem to work and I can't compile my project with any newer version of RoboVM. Let me know if you need any more information.
How can I submit my app using RoboVM 0.0.7 (emulate Xcode 5.2)?
or
How can I fix my error and compile with >0.0.7?

The bundle is invalid problem was fixed in RoboVM 0.0.9 so you must use at least that version. The cause of the No #Marshaler found error is probably because you have an old version of robovm-cocoatouch.jar in your classpath somewhere. Make sure you only have jars from RoboVM 0.0.9 in your Eclipse classpath.

Related

IntelliJ IDEA - GUI Designer - Cannot load Preview form

I have a real trubble for a beginner)
When I try to see Preview while working in GUIform (even when class is empty), I see an error:
Cannot preview form '.../SimpleG.form'
Reason: cannot load /com/intellij/uiDesigner/FormPreviewFrame.class
// I have installed plugin JFormDesigner and didn't find how/where to install UIDesigner plugin.
Project SDK 1.8;
Project language level SDK default (8)
Looks like IDEA-237293. Will be fixed in the next release (around May 26th).

How to fix "the App Engine SDK is out-of-date"?

Many years ago, I used "appengine-java-sdk-1.9.22" to build my webapp which uses some datastore
Now, I updated my app on eclipse & when deployed, it said:
Unable to update:
com.google.appengine.tools.admin.HttpIoException: Error posting to URL: https://appengine.google.com/api/appversion/deploy?app_id=speaklikewater&version=1&
401 Unauthorized
Your version of the App Engine SDK is out-of-date. Please update your SDK at https://cloud.google.com/appengine/docs/standard/java/download#appengine_sdk and your Maven plugin, if necessary, according to the instructions at https://cloud.google.com/appengine/docs/standard/java/tools/maven
at com.google.appengine.tools.admin.OAuth2ServerConnection.doHandleSendErrors(OAuth2ServerConnection.java:65)
at com.google.appengine.tools.admin.AbstractServerConnection.send1(AbstractServerConnection.java:373)
at com.google.appengine.tools.admin.AbstractServerConnection.send(AbstractServerConnection.java:317)
at com.google.appengine.tools.admin.AbstractServerConnection.post(AbstractServerConnection.java:296)
at com.google.appengine.tools.admin.LoggingClientDeploySender.send(LoggingClientDeploySender.java:47)
at com.google.appengine.tools.admin.AppVersionUpload.send(AppVersionUpload.java:1134)
at com.google.appengine.tools.admin.AppVersionUpload.deploy(AppVersionUpload.java:982)
at com.google.appengine.tools.admin.AppVersionUpload.commit(AppVersionUpload.java:865)
at com.google.appengine.tools.admin.AppVersionUpload.uploadFilesTransaction(AppVersionUpload.java:223)
at com.google.appengine.tools.admin.AppVersionUpload.doUpload(AppVersionUpload.java:197)
at com.google.appengine.tools.admin.AppAdminImpl.doUpdate(AppAdminImpl.java:580)
at com.google.appengine.tools.admin.AppAdminImpl.update(AppAdminImpl.java:65)
at com.google.appengine.eclipse.core.proxy.AppEngineBridgeImpl.deploy(AppEngineBridgeImpl.java:433)
at com.google.appengine.eclipse.core.deploy.DeployProjectJob.runInWorkspace(DeployProjectJob.java:158)
at org.eclipse.core.internal.resources.InternalWorkspaceJob.run(InternalWorkspaceJob.java:38)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53)
Now, I used the almost lastest "sdk appengine-java-sdk-1.9.54" (see the picture below), but still get the same error
Note:
I changed to new SDK by going to Window==> Preferences==> Google ===>App Engine & selected "appengine-java-sdk-1.9.54"
If I use "appengine-java-sdk-1.9.64", I get this error "Internal Error":
SO, I decided to use "appengine-java-sdk-1.9.54" because some people also have "Internal Error" & they tried using lower version & it worked.
I am not sure how to fix it.
As stated in the Public Issue [1], Google Plugin is deprecated, you need to migrate [2] to Google Tools.
Here you have the quickstart for you to have a better idea on how GAE currently works with Eclipse [3].

Smartwatch 2 - Cannot compile sample project even

I wanted to start developing for the Sony Smartwatch 2 I just got.
This is where the problems started. I found many official articles about downloading and setting up the Sony Add-on SDK.
But here's the dark side:
It is not available anymore from Sony's dev site, so I could not add it by using the Android SDK manager .
After lots of sweat I managed to find it only here.
Which is the 2.0 version.
I unzipped it into my /[SDK]/add-ons/sony_add-on_sdk_2_0 folder, and set up Eclipse (4.6.3) with the following SDK manager settings:
SDK settings
First it reported the Sony SDK broken, but I found in another topic that I should add a source.properties file, in order to make it work, which has the following header:
### Android Tool: Source of this archive.
#Wed Feb 28 14:14:39 CET 2018
Addon.NameDisplay=SONY ADD-On SDK
Addon.NameId=sony_add_on
Addon.VendorDisplay=SONY
Addon.VendorId=sony
AndroidVersion.ApiLevel=16
Pkg.Desc=Android + Google APIs
Then it became visible for the Eclipse
When I try to build the SamplePreferenceActivity it is imported with SmartExtensionsAPI and SmartExtensionsUtils but one after the other as I read this can make errors too, in the following order:
API
Utils
Sample
which has the following properties:
Properties for SmartExtensionAPI
Properties for SmartExtensionUtils
With these settings I still get error in:
/SmartExtensionUtils/src/com/sonyericsson/extras/liveware/extension/util/widget/NotificationWidgetExtension.java
saying
SmartWatchNotificationWidgetImage cannot be resolved to a type
and in
/SamplePreferenceActivity/res/layout/item_gallery.xml
saying:
Couldn't resolve resource #style/Widget.Holo.ActionMode Couldn't
resolve resource #dimen/smart_watch_2_control_width You must supply a
layout_width attribute. Couldn't resolve resource
#dimen/smart_watch_2_text_size_large
"#dimen/smart_watch_2_text_size_large" in attribute "textSize" is not
a valid format. Couldn't resolve resource
#dimen/smart_watch_2_text_size_medium
"#dimen/smart_watch_2_text_size_medium" in attribute "textSize" is not
a valid format.
What am I missing here? Should I use a completely different setup? Is this because I had to manually add the SDK to Eclipse? If you need anything else to understand the problem properly, feel free to ask me, thanks for helping me!

Gradle cannot find com.google.android.gms:play-services:8.4.0

I cant connect Google Play Game Services to my libgdx project.
Gradle say that SDK does not have Google Repository :
but I do have it installed:
My SDK path is valid
# Location of the android SDK
sdk.dir=D\:\\Android\\ADT\\sdk
I have google-play-services.jar from
D:\Android\ADT\sdk\extras\google\google_play_services\libproject\google-play-services_lib\libs
but Gradle dont admit it.
Error:Could not find com.google.android.gms:play-services:8.4.0.
Searched in the following locations:
https://repo1.maven.org/maven2/com/google/android/gms/play-services/8.4.0/play-services-8.4.0.pom
https://repo1.maven.org/maven2/com/google/android/gms/play-services/8.4.0/play-services-8.4.0.jar
https://oss.sonatype.org/content/repositories/snapshots/com/google/android/gms/play-services/8.4.0/play-services-8.4.0.pom
https://oss.sonatype.org/content/repositories/snapshots/com/google/android/gms/play-services/8.4.0/play-services-8.4.0.jar
https://oss.sonatype.org/content/repositories/releases/com/google/android/gms/play-services/8.4.0/play-services-8.4.0.pom
https://oss.sonatype.org/content/repositories/releases/com/google/android/gms/play-services/8.4.0/play-services-8.4.0.jar
Required by:
BitMazes:android:1.0
I have cleaned,rebuilt, reloaded repositories, but nothing happend.
build.gradle : pastebin.com/RE9LRZjK
Stack say that >>it<< maybe help me, but not. It is not a my situation.

Using jackson-dataformat-xml on android

I'm strugling with using jackson-dataformat-xml on android
I have some very basic code that works fine on oracle jre
JacksonXmlModule module = new JacksonXmlModule();
module.setDefaultUseWrapper(false);
XmlMapper xmlMapper = new XmlMapper(module);
First I tried official documentation adapted for gradle (by me, not sure if done correctly):
compile 'com.fasterxml.jackson.core:jackson-core:2.5.4'
compile 'com.fasterxml.jackson.core:jackson-annotations:2.5.4'
compile 'com.fasterxml.jackson.core:jackson-databind:2.5.4'
compile 'com.fasterxml.jackson.dataformat:jackson-dataformat-xml:2.5.4'
compile 'org.codehaus.woodstox:woodstox-core-asl:4.4.1'
compile 'javax.xml.stream:stax-api:1.0-2'
Result: gradle fails build time about bundling corelibraries into an application
...
:app:preDexDebug
trouble processing "javax/xml/stream/EventFilter.class":
Ill-advised or mistaken usage of a core class (java.* or javax.*)
when not building a core library.
...
2nd attempt trying to follow Sean's answer
(Basicly he repackages corelibs with prefix names and rebuilds jackson-dataformat-xml to use the prefixed names)
compile 'com.fasterxml.jackson.core:jackson-core:2.1.2'
compile 'com.fasterxml.jackson.core:jackson-annotations:2.1.2'
compile 'com.fasterxml.jackson.core:jackson-databind:2.1.2'
// Repackaged XML-specific libraries
compile 'edu.usf.cutr.android.xml:jackson-dataformat-xml-android:2.1.2'
compile 'edu.usf.cutr.android.xml:stax2-api-android:3.1.1'
compile 'edu.usf.cutr.android.xml:stax-api-android:1.0-2'
compile 'edu.usf.cutr.android.xml:aalto-xml-android:0.9.8'
And build time failed on duplicates
Duplicate files copied in APK META-INF/services/com.fasterxml.jackson.core.ObjectCodec
so added:
packagingOptions {
...
exclude 'META-INF/services/com.fasterxml.jackson.core.JsonFactory'
exclude 'META-INF/services/com.fasterxml.jackson.core.ObjectCodec'
}
When adding the exclusions it builds and deploys, but fails runtime on below stackdump (AFAIK it cant find the SAX provider, even tho it is added to the classpath to my understanding)
edu.usf.cutr.javax.xml.stream.FactoryConfigurationError: Provider com.bea.xml.stream.MXParserFactory not found
at edu.usf.cutr.javax.xml.stream.FactoryFinder.newInstance(FactoryFinder.java:72)
at edu.usf.cutr.javax.xml.stream.FactoryFinder.find(FactoryFinder.java:176)
at edu.usf.cutr.javax.xml.stream.FactoryFinder.find(FactoryFinder.java:92)
at edu.usf.cutr.javax.xml.stream.XMLInputFactory.newInstance(XMLInputFactory.java:136)
at com.fasterxml.jackson.dataformat.xml.XmlFactory.<init>(XmlFactory.java:97)
at com.fasterxml.jackson.dataformat.xml.XmlFactory.<init>(XmlFactory.java:85)
at com.fasterxml.jackson.dataformat.xml.XmlFactory.<init>(XmlFactory.java:82)
at com.fasterxml.jackson.dataformat.xml.XmlMapper.<init>(XmlMapper.java:46)
What is the proper way to move forward on either #1 or #2?
Number 2 is the correct approach (Android doesn't like it when you include classes in the official Java package namespace - but then again, I wrote the original answer so I'm biased ;) ).
I believe the FactoryConfigurationError: Provider com.bea.xml.stream.MXParserFactory not found error is due to a bug in the Android build tools. In previous versions of ADT for Eclipse and Gradle plugin < 0.7.0 the /META-INF/* files are stripped from the JARs during the build process. It seems like >= v0.7.0 shouldn't have the problem according to Google, but from others' reports it sounds like it still may be problematic, and could potentially remove the META-INF/services/javax.xml.stream.XMLInputFactory file, which is required for the platform to register Aalto.
Try the workaround mentioned in AOSP issue 59658 comment 22:
right click on /src/main (where you have /java and /res folders),
select New > Folder > Java Resources Folder,
click Finish (do not change Folder Location),
right click on new /resources folder,
select New > Directory
enter "META-INF" (without quotes),
right click on /resources/META-INF folder,
select New > Directory
enter "services" (without quotes)
copy any file you need into /resources/META-INF/services
For you, in step 10 above you'd need to copy this file into /resources/META-INF/services. In case the file link is broken in the future, the name of the file is javax.xml.stream.XMLInputFactory and it consists of a single line:
com.fasterxml.aalto.stax.InputFactoryImpl
EDIT
If you get a "Error:duplicate files during packaging of APK... Path in archive: META-INF/services/javax.xml.stream.XMLInputFactory", you can try telling Gradle to keep the first occurrence with:
android {
packagingOptions {
pickFirst 'META-INF/services/javax.xml.stream.XMLInputFactory'
}
}
EDIT 2
This bug may be affecting "pickFirst". Please make sure you're running the latest version of Android Studio, and update your local tools and Android Gradle plugin to make sure you're running the most recent version of the tools. This may be fixed in Android Studio 1.3 RC1.
I have attempted to add XmlPull support to jackson xml. Find the forked project here:
https://github.com/finvu/jackson-dataformat-xml
Currently, only supported for version 2.9.6. (clone the branch jackson-dataformat-xml-2.9.6-XmlPull)
Sorry, I am not able to provide detailed documentation due to time constraints. If you have knowledge of git and maven to pull a specific branch and build the jar, then it should be relatively easy.
To those who will be in need of this in the future:
first integrate Jitpack in Your Android app, following their instructions:
https://jitpack.io/
Then paste teh GitHub url of jackson-dataformat-xml on Jitpack sites' corresponding text box. GitHub url is:
https://github.com/FasterXML/jackson-dataformat-xml.
That's it! Enjoy the result. :)

Categories

Resources