Been reading about the FLEX Library for iOS, and I use it in my existing app. In the section "learning from other apps" it says the code injection exercise is left to the reader. Is it possible to go about doing this without jailbreaking the device?
To add to the other ways discussed in #joseph Duffy's answer/comments, you can also use a secondary device which is jailbroken to decrypt an app, package it back into an IPA, and then patch it by linking a libary to the IPA with your own code, finally re-signing it for your other device. Its a bit of a pain as a regular workflow, but works.
Check this out: https://medium.com/#kennethpoon/how-to-perform-ios-code-injection-on-ipa-files-1ba91d9438db
It won't be possible to use FLEX with an app that you are not compiling yourself. There is FLEXLoader, but that will require your device to be jailbroken.
Related
i have developed an iOS app and i'm using many 3rd party libraries suck as Google, Facebook, VLC ect, when i generate IPA i'm getting 92,5MB and when i upload it to appStore i get 200MB.
Is there a way to decrease it to arround 60MB ?
Make sure you have all optimisation switched on in Build Settings.
And yes, sometimes its easier to check library code on GitHub (if it open sourced) and implement necessary logic manually, that include whole library in the project. Swift projects quite bulky, need to keep all runtime libraries inside the app
I have some debugging code that I want to run when my app is either running in the simulator, or running on a development device (with or without debugger attached). I don't want this debugging code to run when the app is running on a device after being downloaded from the app store.
Is there any easy way to achieve this?
Note: The above-mentioned code will be in a library that will be used by other developers, so I would prefer to use some code that I can embed in this library, without requiring any further action from the developers using the library.
Although my library is a C# library (Xamarin.iOS), any Objective-C, Swift, or Xamarin.iOS answers would all be useful.
When you're running it on the simulator or in Xcode, you can set the Scheme to debug and just put if-statments in. When it runs from the store it won't be in debug mode unless you've hard coded that somewhere.
To answer your question directly: No you're not able to detect the apps source (App Store Vs Xcode deployment) as far as I know.
You can use DEBUG macro, it's defined in Objective-C projects for debug builds. But better way is to use your own macro to enable additional logging. Add information about this macro to docs and developer will decide to enable logging or not by defining it in his project. Also how to set preprocessor macros I described in this answer.
I read many articles about dynamic library usage including this page "Can you build dynamic library...".
As apple document said, "Frameworks for iOS. iOS developers can now create dynamic frameworks. Frameworks are a collection of code and resources to encapsulate functionality that is valuable across multiple projects. Frameworks work perfectly with extensions, sharing logic that can be used by both the main application and the bundled extensions.", see full page from here.
Taking the security issue as consideration, I got the reject reason of dynamic library before iOS8, see details from "DarkDust's answer". But, how does it "just work" in iOS8? #appstore_reviewers?
Anyway, currently I'm writing a sample demo app and try to upload it to Appstore for review, the main feature is downloading a framework from internet to client and dlopen it. Hope that really "just works"!
Besides, the deployment target is iOS7.0, not sure it could works well in it.
I didn't get a so clear understand on differences between "dynamic library" and "framework", I think they are the same and in this thread I mean "Cocoa-touch framework" which could create in Xcode 6.
Some background: I'm trying to build an iOS app which does't contain extension feature, my cocoa-touch framework is for easy expand without uploading a new version as it comes from internet....
UPDATE
I published a demo project GMDemo here, will try to upload to Appstore.
UPDATE2
I failed to dlopen my dynamic framework with invalid code signing error after many tries in iOS device. Sorry, no good news here. (Almost forgot to update this question, sorry! BTW)
App Store Review Guidelines explicitly prohibit that in 2.4.5 Apps that download code in any way or form will be rejected https://developer.apple.com/app-store/review/guidelines/
UPDATE3 just use the same code signing!!!
I have test it in ad-hoc environment!
when my dynamic library use the code signing with the same code signing,It works,
otherwise,crush!!
I am beginning to port an existing Flash project to an iPhone AIR app for a client. The client already has an iPhone app created by an Objective-C developer. My client would like me to be able to incorporate my Flash elements into the Objective-C developer's existing iPhone app.
I'm not sure if this can be accomplished in some way, and if so, how. I'm guessing that giving the Objective-C developer my .ipa file would be useless. I'm also guessing that they would be unable to use my .swf files, but I'm not sure.
Does anyone have an idea as to how I might proceed? If you are able to point me in the right direction, I will gladly declare that your kung fu is the best!
Thanks.
You cannot do that with regular tools. I would go the other way around: try to reuse some of the Objective-C code inside your Air app, incorporating it into a Native Extension. Of course, depending on what the Objective-C code does, and on what your Air code does, it may or may not make sense.
I am developing a bluetooth application for blackberry. I am getting some BluetoothStateException's whil running the app on the phone. I am wondering if there is any way to debug th application on the phone?
Thanks.
UDPATE: There is an option in JDE I found to debug on device, but it keeps asking me to install signing keys.But I have not used any BB API's AFAIK
You cant install a BB app on handset without signing it. Get a developer account on BlackBerry developer website, and you should be able to set up signing, it is almost trivial to do so.
You shouldn't have to sign if you haven't used the BlackBerry APIs that require signing keys. In particular, the basic UiApplication class and the BluetoothStateException don't require the keys.
Having said that, it sounds like you used a protected API in there somewhere (they're really all over the place, the PersistentStore for example, or the Display class in the system package). You can enable warnings within Eclipse for when you use protected APIs. Under Window->Preferences->BlackBerry Java Plug-In, check the Warnings sub-item and make sure all 3 checkboxes are unchecked. Then look at your Eclipse warnings/error view.
Also, I agree with #omermuhammed, it's really easy to get signing keys.