Copy link to clipboard
Copied
I believe that the following will be needed:
- new placeholders in app xml for the new iPad retina icons
- a mode that will allow the content done in 'non-retina' iPad to be viewed on new IPad (like the tag that makes iPhone 4 to fill 4 pixels and be used as the iPhone 3)
- a simulator for all AIR environments, which allows the visualization of the iPad retina display (I guess it will have to have scrollbars for the first time in a mobile phone simulator, since the height is going to be 2048 pixels 😮 )
- anything left on the list?
To avoid breaking apps that are not designed for the iPad's new retina display, apple only enable the full retina resolution on apps built with the iOS 5.1 SDK or later. So, to enable the higher resolution on your air app, you have to use this version of the SDK when compiling your app. You can only so this on a Mac with Air 3.1 or later. Use the -platformsdk compiler setting to point to the iOS 5.1 SDK and set the requestedDisplayResolution to high. Then you'll get the higher resolution.
Copy link to clipboard
Copied
Uncool that images are clearly stretched when they should appear in all details...
May I ask what are the reasons you're sticking to 2.6?
I think the first thing that will come in the mind of Adobe people to fix this is that you use the latest player.
Thanks a lot for the info, it helps!
Copy link to clipboard
Copied
He need setup Air 3.2 RC al least there everything if fine
Copy link to clipboard
Copied
To avoid breaking apps that are not designed for the iPad's new retina display, apple only enable the full retina resolution on apps built with the iOS 5.1 SDK or later. So, to enable the higher resolution on your air app, you have to use this version of the SDK when compiling your app. You can only so this on a Mac with Air 3.1 or later. Use the -platformsdk compiler setting to point to the iOS 5.1 SDK and set the requestedDisplayResolution to high. Then you'll get the higher resolution.
Copy link to clipboard
Copied
If you want to complie 5.1 sdk - you need previusly install it. Right?
Looking on adt for compiling - it's use also on Windows files from xcode. Right? so we ca simple copy this files
Copy link to clipboard
Copied
I will overlay to 3.1 /3.2 SDK for windows and see results, if nothing good will do the same for mac.
To other posts, if you have your sample project then send me the file i will compile it or compile file and give me provisioning profile so we know you di it righ and dont relay on my curently 2.6 SDK system
and resolution was 2048*1536, and i use Flash 5.5
Copy link to clipboard
Copied
I've done some tests now and believe RichardLord has mapped a solution--but I'm curious the EXACT behavior. I can see using the current 3.1 out of the box (with CS5.5 or FlashBuilder) the 1024x768 is just stretching and certain pixel images can definitely look worse on iPad3 than iPad2--which is scaled at 1.0. For bitmap images the scaling with smoothing works fine. I guess my thought is some projects don't require you take full advantage of the new size. I'd like to know the answers to a couple concerns:
--if I wait at least until I have a mac to test on what is the EXACT behavior? Can you reliably grab the stage.stageWidth? Using the current tools it gives me 1024.
--I have projects where I'm recycling previously scaled graphics--as small as 800x600. I've been planning on scaling them myself using smoothing. I suppose if stage.stageWidth works as I expect it'll be easy.
I'm not ready to convert to mac but think I need to order at least a mac mini.
Copy link to clipboard
Copied
phillipkerman - I only built the project I am currently working on. The difference when compiling against iOS 5.1 was distinct with vector graphics clearly rendered at a higher resolution than when compiling against iOS 5.0 or when running on an iPad2. I didn't have time to do more and the iPad is at work so can't investigate further today.
Copy link to clipboard
Copied
what is Platform SDK and how you select witch iOS you wnat to use it for?
Copy link to clipboard
Copied
ok me back in here
I updated (overlayed AIR SDK to 3.1 v14 I hope? dont know how to confirm that but XML file changed) I seted HIGH settings for quolity and rebuild the test vector screen and still getting crappy results.
XML:
<iPhone>
<InfoAdditions>
<![CDATA[<key>UIDeviceFamily</key><array><string>2</string></array>]]>
</InfoAdditions>
<requestedDisplayResolution>high</requestedDisplayResolution>
</iPhone>
Canvas Size: 2048*1536
Can some one get something better?
Copy link to clipboard
Copied
I too have tried the high requestedDisplayResolution, latest AIR, -platformSDK linked to IOS 5.1, NO_SCALE setting, and high-res artwork, but it continues to resize my artwork as if I had a 1024x768 screen. And also, there is no support for the retina iPad icon (144px), although the retina iPhone icon (114px) seems to do pretty well.
Copy link to clipboard
Copied
RichardLord; I'd like to hear your exact process as I will go try this week on a mac. For whatever reason acrowne doesn't seem to have it working--so maybe there are more details. Do you use the SWF directive like: [SWF(width="1024", height="768")]?
Also--and this is probably a different topic--but wouldn't you get the best performance if you took your vector graphics and make bitmaps (scaled properly for the target)? Maybe that's just not worth the pain--but I'd think it'd improve performance.
Yes, I think we're stuck on the icon sizes. Hopefully Adobe can come up with a patch soon. The fact RichardLord can make it work makes me believe it's possible for adobe to update the magic stuff that makes it possible to deliver in the first place.
Copy link to clipboard
Copied
I am double posting at this point to two discussions on Adobe Forums, so apologies to followers of both.
Reading Adobe's support materials, I gather that in the Native Extensions dialog, setting the Apple iOS SDK is the equivalent of setting -platformsdk. So I set that value to point to my copy of the iPhoneOS5.1.sdk. Below is my sample project code. In the application descriptor file, the only thing I changed from the default is my project id to match the provisioning profile and adding <requestedDisplayResolution>high</requestedDisplayResolution> to the iPhone xml tag. I tested this out on my iPhone 4 and it worked great. On the new iPad only the top corner of the image appears on the screen because of the scale. I am using AIR 3.1, so unless the 3.2 beta includes a fix, it seems that Adobe needs to produce an update before AIR supports the new iPad's display. Please tell me if you find anything I missed.
package
{
import flash.display.Sprite;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.display.Bitmap;
public class RetinaTest extends Sprite
{
[Embed(source="bgd@2x~ipad.png")]
private var bgdImg:Class;
private var bgd:Bitmap;
public function RetinaTest()
{
super();
// support autoOrients
stage.align = StageAlign.TOP_LEFT;
stage.scaleMode = StageScaleMode.NO_SCALE;
bgd = new bgdImg();
addChild(bgd);
}
}
}
Copy link to clipboard
Copied
I confirmed my test this morning. Specifying the iOS 5.1. sdk in the platformsdk setting works. I wrote a blog post with details of the test - http://www.richardlord.net/blog/using-the-ipad-retina-display-with-adobe-air
acrowne - Don't know why yours doesn't work. All I can think is perhaps Flash Builder ignores the platform sdk if you don't have any native extensions that need it.
Copy link to clipboard
Copied
Thanks Richard, very good article.
Unfortunately, @acrowne's test shows that with Flash Builder things are not as easy.
However, this is very interesting.
As I said above, I initially used the public beta of Air 3.2 for this test. I reran the test using Air 3.1 and the results were the same, except building with iOS 5.1 gave the stageWidth as 1920px and stageHeight as 1280px. All other results were the same as for Air 3.2.
Apparently, we're not yet in a situation in which we can say that AIR is "device-independent" since a new device is described differently by two different versions of AIR.
Copy link to clipboard
Copied
"Apparently, we're not yet in a situation in which we can say that AIR is "device-independent" since a new device is described differently by two different versions of AIR."
Not exactly. The two different versions of Air describe the stageWidth and stageHeight differently for ALL devices. It seems to take Air a while to get the correct stageWidth and stageHeight. With Air 3.2 it's available after one frame, with Air 3.1 it takes longer (in the comments on my blog post, Richard Leggett says three frames is usually enough). And both versions give correct values for Capabilities.screenResolutionX/Y and for stage.fullScreenWidth/Height, which are the more reliable values.
The place where device independence does fail is that Capabilities.ScreenDPI is incorrect for the new iPad. I use this to adjust the size of user interface elements to be the same actual size on all displays. Because Air reports the wrong values for the new iPad, I have to treat this as a special case.
Copy link to clipboard
Copied
RichardLord, I can confirm that running the identical test I posted above using AIR 3.1 but using the command line instead of Flash Builder produces a retina version of the app. I am going to try out making a placeholder native extension and see if that will force Flash Builder to include the -platformsdk line, which I am presuming is being left out.
Thanks for the blog post. Great info.
Adrian
Copy link to clipboard
Copied
Success! So after including Adobe's sample vibration Native Extension (here) in the build and setting the requestedDisplayResolution to high, I am able to use Flash Builder 4.6 to build retina enabled iPad apps. Thanks RichardLord for the help.
Copy link to clipboard
Copied
Actually, with OS 10.7, FB 4.6, AIR 3.1, the thing works without having to "fake" the usage of ANE, you just have to include one in your package without using it in your code.
iPad goes to HD by simply choosing the "requestedDisplayResolution" (set to high) and by including any ANE in the package, but no need to instantiate it.
However, even with this trick, we cannot say AIR supports the new iPAD yet.
Things that are missing:
- Capabilities.screenDPI is still 132 (a mess for media-related CSS since ScreenX can only be used runtime, not in CSS - and for MultiDPI bitmaps).
- tabbedviewnavigator is NOT optimized for the ipad. top bar and bottom bar are not proportional to the new display...
- fonts are rendered proportionally (meaning a 16 font will render as an 8) whereas there should be a method to render the same font with more pixels on the iPad HD.
On the bright side:
- iPAD HD is faster than iPad 2 in all kinds of writing and drawing.
Copy link to clipboard
Copied
hi.. does anyone know what needs to go in the descriptor file to support high res on iphone but standard res on ipad?
Copy link to clipboard
Copied
There is no descriptor setting that will allow you to do what you ask. It would be a useful feature, but I suspect it wouldn't be possible.
But, you can achieve what you want in another way. Set the quality to high, so that the iPhone Retina works, and also include an ANE of any kind. When you have an ANE you are able to set the SDK that is used. Set the SDK to be iOS 5.0 instead of iOS 5.1. 5.0 doesn't know about the iPad Retina, and will therefore force the app to work at the standard iPad resolution.
Copy link to clipboard
Copied
hi Colin.. thanks for the reply, that solutions sounds good. i have the latest xcode and it has an sdk at this path..
Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.1.sdk
do you know if it also has 5.0 somewhere? or would i need to download that?
cheers
Copy link to clipboard
Copied
If you go into Xcode Preferences, Downloads, you can download other SDKs.
Copy link to clipboard
Copied
really? i've not found that option in Preferences > Downloads. i saw suggested on another forum to download an older version of xcode and use the sdk from that. is it likely that the descriptor file in a future release of AIR will allow for specifying reina for iphone, standard for ipad? it would be very helpful
Copy link to clipboard
Copied
Does anybody know if the feature requested by Bonsai is even available if you code directly in Xcode?
However, nice catch by Colin!
Copy link to clipboard
Copied
I have the need to be Retina on iPhone and standard on iPad, and the way I do it is to have the iOS SDK 5.0 folder in my downloads folder, not even in Xcode at all. Then, in Flash Pro CS6 I have an ANE (you could use any ANE, say the vibration one) and because my FLA has an ANE in it, I get to choose what SDK it should use, in the iOS settings. I point it to the 5.0 folder.
Doing this will override AIR 3.3's instance on using the 5.1 SDK!
I did just drag the 5.0 SDK out from an older version of Xcode.