Appcelerator Developer Blog

Update: Apple scanning process producing false positives for “private APIs”

Update, 7:37am PST, 11/15/11
According to community members on the original thread in Q&A, Titanium apps are now being accepted into the app store. While we have not yet confirmed this with an Appcelerator submitted app, it seems many people have had their apps accepted now. From these reports, it seemed some people had used our latest hot fix (below), but some had not. At this early juncture, it seems that Apple has rolled back their scanner changes that were triggering false positives for private APIs.

We will update when we have official word on the resolution, but once again, we are now starting to see reports of apps being accepted.

Original Post
Since it initially came to our attention on Friday, we have been attempting in our iOS SDK to work around an issue with common dictionary words, used innocuously in Objective-C code, registering false positives in Apple’s “private API” scanner during app store submission. This is a widespread problem introduced by recent changes in Apple’s scanning logic, affecting non-Titanium applications as well.

After a few attempts, we now have a fix checked in to our master, 1.7.x stable, and 1.8 “last known good” branches which we believe should resolve the problems we’ve seen. We are in the process of verifying this fix in the Apple App Store as we speak, and will update with any progess. To install and use this special build yourself, you can download and install it via the brief instructions below.

Thank you for your patience, and we will release any new information as soon as we have it.

To get the latest 1.7.x build, go here. After installing the new build (screenshots below), change the Titanium SDK version in the visual editor for tiapp.xml, and clean your project in Titanium Studio. You should then be able to rebuild with the latest Titanium version.

link


“Build Your Business on Mobile” at Mobile Monday

Mobile entrepreneurship is alive and well in Silicon Valley! This past Monday Appcelerator sponsored and hosted a Mobile Monday at UCSF’s awesome Mission Bay Conference Center, and about 300 people showed up to join in the conversation. Scott Schwarzhoff, our VP of Marketing, moderated the panel with some great guests: Sam Shank (CEO, Hotel Tonight), Ranjith Kumaran, (CEO, PunchTab), Ted Patrick (Chief Evangelist, Barnes & Noble), Ken Singer (CEO, AppCentral).

The topic of the conversation was: how does a company build their business on mobile? Hear from app developers like Hotel Tonight and PunchTab how they drive downloads and monetize mobile apps. Learn how the Barnes & Noble NOOK has become the “sleeper success story” for Android developers. Also, find out how to create and manage mobile apps for enterprise from AppCentral.

Mobile

Integrating an external library in an Android module

In my previous blog post I talked about the Module Development Guide reference modules available for iOS and Android and how you can use them to develop your own custom modules. That should provide you with a good foundation for your module development needs. But one of the primary motivations for developing a Titanium module is to expose the methods and properties of an external library. In this post we’re going to look at one way to incorporate an external library into your Android module.

Add External Library

For this discussion we’re going to look at integrating the Google AdMob library into our module. The complete source to the Admob module can be found in our public modules repository on GitHub. The first thing that must be done is to download the jar file for the external library. In this case, the external library file is GoogleAdMobAdsSdk-4.1.1.jar. Place this file into the ‘lib’ folder of your module project:

android/lib/googleadmobadssdk-4.1.1.jar

Add External Reference

Next we need to let the project know that we want this library packaged with the module. This requires that the .classpath file be updated with the path to the library. If you are using Eclipse for your development, then select project->properties from the menu, select “Java Build Path” in the left panel and then select the “Libraries” tab.

project-properties-libraries
Now click “Add External JARs…” and locate the GoogleAdMobAdsSdk-4.1.1.jar file in your project folder.

add-external-jars
Click “OK” to add the JAR file to your project. If you now look at your .classpath file in the project folder you should see an entry for your JAR file. If you are not using Eclipse then you can manually edit the .classpath file and add this entry.

Update timodule.xml

At this point you have added the external library to your module project. If your module requires entries in the application’s manifest file, you will need to update the timodule.xml file. The entries in the timodule.xml file are merged into the androidmanifest.xml file when an application that includes your module is built. In our example we do require an entry for the Admob activity and a couple of permission settings. The timodule.xml file should be updated as follows:

Import Classes

Your external library is now ready to be used in your module. All that is left to do is import the classes and implement your module classes, methods, properties, and notifications. To wrap up our example, we can import the required AdMob classes and begin defining our classes.

Resources

Module Development Guide Reference Modules blog post
Module Development Guide Reference Modules
Admob Module
Module Developer Guide for Android

Android,Mobile — Tags:

“Layout” keyword and Apple app analysis

Update: 2:42pm 11/13/11
Our new approach to working around the Apple scanning process is now available in all release branches on our continuous integration server. You may resubmit your applications using this build, as we believe this should address the issue – however, we are still in the process of testing this fix ourselves with a submitted app to verify that applications will no longer be flagged for “private API” usage.

Update 6:11pm 11/12/11:
We are aware that our first attempt at a fix did not succeed in addressing this issue. We have another attempt which we are going to test internally to see if it manages to avoid Apple’s ‘private API’ scanning. We apologize for this inconvenience, and it is most definitely our top priority to address this issue as soon as possible.

Original Post:
Recently, we have had some reports from the community about feedback from Apple that their recently submitted applications have contained the use of a private API, which is only identified as “layout”. While no Titanium applications make use of private APIs, we suspect that Apple has made changes to their application analysis tools which mistakenly flag this property in some Titanium applications.

To work around this flaw in Apple’s processing logic, we are making a new build available which avoids use of the “layout” keyword in Titanium’s own implementation logic. We are in the process of verifying this fix in the Apple App Store as we speak. To install and use this special build yourself, you can download and install it via the brief instructions below.

While in this instance the error is with Apple’s own processing logic, we want to make sure your app store submission process is as smooth as possible. If you have any additional questions or feedback on this issue, please contact me directly (kwhinnery at appcelerator dot com) and I will be happy to assist you.

To get the latest 1.7.x build, go here.

link


“Over The Air” Mobile Conference

laptop_cs.jpg

Appcelerator was one of the sponsors for this year’s 4th Annual Over The Air mobile conference in the UK. To put the event in the words of its creators, it is…

a unique tech-agnostic event for and by the developer community, featuring technical workshops where attendees can roll up their sleeves and tinker with new platforms, operating systems, APIs & SDKs; and tutorial sessions that feature real business cases, new insights and a healthy dollop of inspiration. Attendees are invited to stay overnight so that they can work on ideas, apps and hacks on the fly – to be entered into the various hack-athon competition categories and demo’ed on the second day. It’s a great vibe of bean bags, gadgets, knowledge sharing, hacking & lots of good geekery.

Fortunately for us, we had two terrific Titanium advocates in Ketan Majmudar and Liz Myers representing us at the event. Ketan and Liz are the co-organizers of the London Titanium User Group. Liz gave a great presentation on mobile UX/UI design, as well as an introduction to the Titanium architecture and how it can be used to get a jump start on your apps.

Ketan spent his time not only as a judge for the hackathon, but also fielding the constant barrage of Titanium technical questions from native developers. It was clear that although some of the attendees had prior knowledge of the platform, the majority of developers were unaware of the power it provided. Needless to say, a lot of Android and iOS developers were very curious what Titanium could do for them.

After a full day of interesting talks & workshops, nearly 600 developers had clambered through the mansion. By the evening came the ignite lightning rounds. This series of presentations allowed no talking about yourself or your job with slides automatically advancing. This made for some really interesting talks, including the keynote of the ignite sessions kicked off by Bill Thompson’s (from the BBC) talk on the philosophy of mobile.

bb.png   fuel.png

The hackathon kicked off with 200-300 geeks staking out territory in Bletchley Park’s 19th century mansion. Power sockets and beanbags were claimed as they all took on various challenges, seeing what they could produce for the following day. Hackathon entries ranged from solid, functional productivity apps to innovations using NFC, Bluetooth, and QR codes. Ketan stayed up through the night working on his own Titanium projects whilst going around and talking to the hackathon groups. There were a lot of talented teams and individuals competing, all more than willing to discuss their projects and code. The hacking went through the night fueled by coffee, beer, pizza and sugar!

In the end, we were extremely excited to see that one of the winning entries was in fact built on Titanium. Mutsaim Karim won himself a Samsung Galaxy S II courtesy of PayPal for his X.Commerce entry. His app allowed groups of friends to share and contribute to a single PayPal payment. In his own words…

PayPal has a very streamlined flow for making payments, which makes it perfect for mobile transactions. There are use-cases when payments need to be collected from multiple people (e.g. group bookings for trips, whip-round for birthday gifts) and in a mobile connected world, collecting these payments online could be a smoother experience than physically accumulating them. Using the PayPal Mobile APIs, Appcelerator’s Titanium platform, Facebook Connect and QR codes and nifty solution can be built which solves this predicament.

org3.png Over The Air was a great event of which Appcelerator was proud to be part. Thanks again to Ketan and Liz for their outstanding representation of Appcelerator and the Titanium platform. Also, thanks goes out to Dan Applequist, Matthew Cashmore, and Margaret Gold (Pictured on the right) for organizing such a successful event. This mobile mobile conference really stands out among the rest, and we look forward to its 5th anniversary next year!

Mobile
Page 39 of 92« First...102030...3738394041...506070...Last »