deploying kony app in iphone device - ios

I am facing some problem in kony platform. I can able to deploy the iphone app created using kony platform in simulator by using their guide. If i tried to deploy same app in iphone device i am getting some errors.
Undefined symbols:
"___divmodsi4", referenced from:
-[KonySlotView addImagesToGallery:urlString:userDataSize:userData:] in libkonylib.a(KonySlotView.o)
-[KonyImageGallery addImagesToGallery:urlString:userDataSize:userData:] in libkonylib.a(KonyImageGallery.o)
"_objc_terminate", referenced from:
-[KonyWebSQLTransaction performTransaction:SQLTransactionErrorCallback:SQLVoidCallback:IsReadTransaction:] in libkonylib.a(KonyWebSQL.o)
-[VMAppDelegate konyApplicationDidFinishLaunching:] in libkonylib.a(VMAppDelegate.o)
-[VMAppDelegate KonyExecute] in libkonylib.a(VMAppDelegate.o)
+[ClosureExecuter executeClosure:] in libkonylib.a(lglobals.o)
"___udivmodsi4", referenced from:
-[KonyImageGallery getPreferredHeight] in libkonylib.a(KonyImageGallery.o)
ld: symbol(s) not found
collect2: ld returned 1 exit status
error seems like some problem while linking library. can anyone help me to resolve this problem.
Thanks in Advance...

You will never resolve this, unless you contact Kony developer team, that I can tell you from experience. The issue is with the Kony API that is used to do the mappings with Lua code to objective-c code.

Related

Using iOS 11 NEHotspotConfiguration capability on a Simulated Device and not just a physical device

I'm using the NEHotspotConfiguration Class in iOS 11 to connect to a known wifi network. This React Native app works fine on a physical device, and I'm able to programatically connect to a network using the NEHotspotConfiguration class on iOS 11. However, when I try and build/run it in a simulator I get the following error that prevents me from even launching the app:
Undefined symbols for architecture x86_64:
"_OBJC_CLASS_$_NEHotspotConfiguration", referenced from:
objc-class-ref in IOSWifiManager.o
"_OBJC_CLASS_$_NEHotspotConfigurationManager", referenced from:
objc-class-ref in IOSWifiManager.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Is there a way to keep using the Simulator to test the rest of my app with this capability enabled, even though I wouldn't be able to use the capability to change the wifi in the Simulator?
There may be other options, but I found the following potential answer in the comments of a medium article that led me to one solution:
https://medium.com/#ercp42/i-got-this-error-ceacd08191b3
"For anyone who experiences the same issue, I fixed it by wrapping the NetworkExtension import and the code where it’s used with #if !TARGET_IPHONE_SIMULATOR to side step this issue."
It was a bit more than that, at least for me, though.
I did indeed wrap the #implementation IOSWifiManager implementation in the IOSWifiManager.m file with an #if TARGET_OS_IPHONE && !TARGET_OS_SIMULATOR and left a much simpler else statement to build it on the simulator:
#else
#implementation IOSWifiManager
RCT_EXPORT_MODULE();
#end
#endif
I also went into build settings and under Linking Other Linker Flags changed the values for the iOS Simulator and Any Architecture to the following:
"OTHER_LDFLAGS[arch=*]" = (
"$(inherited)",
"-ObjC",
"-lc++",
"-framework",
NetworkExtension,
);
"OTHER_LDFLAGS[sdk=iphonesimulator*]" = (
"$(inherited)",
"-ObjC",
"-lc++",
);
Finally, I changed the Network Extension Framework from being required to being optional and made sure that we were supporting the right build architectures. Hopefully that helps anyone who runs into the same issue!

dyld: Symbol not found: _UITransitionContextFromViewControllerKey

I've been getting reports of my app crashing on load in iOS 6. It's built with the iOS 8 SDK and works fine on 7 & 8.
I've just managed to get hold of an iOS 6 device to test and it does in fact crash on launch with the error:
dyld: Symbol not found: _UITransitionContextFromViewControllerKey
Referenced from:
/var/mobile/Applications/895BC1B3-A362-42C9-8560-5CF40A682A10/myapp.app/MyApp
Expected in: /System/Library/Frameworks/UIKit.framework/UIKit in
/var/mobile/Applications/895BC1B3-A362-42C9-8560-5CF40A682A10/myapp.app/MyApp
I understand that dyld is a linker problem, but have no idea where to start with this.
I've unlinked and re-added UIKit, but still doesn't work.
Thanks
This is because UITransitionContextFromViewControllerKey doesn't exist until iOS 7. Working around this probably isn't worth the effort--it means dropping all usage of UIViewControllerContextTransitioning, as the protocol is new in iOS 7, or creating a separate code path for iOS 6. If that's what you want, look into weak-linking UIKit, although this may result in slow startup.
Look like your using UIViewControllerContextTransitioning. It's available only on iOS 7+.
See this question for more details Restore pre-iOS7 UINavigationController pushViewController animation

Excluding framework from iOS Simulator build

I am using a third party framework in my app (metaioSDK) and it's not provided in i386 version. I was hoping to be able to exclude it from simulator builds so that I can test functionality unrelated to this framework on the simulator. I followed the answer in this question: How to exclude frameworks in simulator builds in Xcode and made sure to wrap any code that uses this framework in #if/#else/#endif like this:
// ARViewController.h
#import <UIKit/UIKit.h>
#if TARGET_IPHONE_SIMULATOR
#interface ARViewController : UIViewController {
}
#end
#else
#import <metaioSDK/MetaioCloudPlugin/MetaioCloudPluginViewController.h>
#interface ARViewController : MetaioCloudPluginViewController
{
bool m_useLocationAtStartup;
}
#end
#endif
Similarly, I've changed the related ARViewController.m file to have a blank implementation when running on simulator.
Yet, Xcode still appears to want to link some portions of this framework, and I get errors:
Undefined symbols for architecture i386:
"_fopen$UNIX2003", referenced from:
_BIO_new_file in metaioSDK(bss_file.o)
_file_ctrl in metaioSDK(bss_file.o)
_open_console in metaioSDK(ui_openssl.o)
"_fputs$UNIX2003", referenced from:
_write_string in metaioSDK(ui_openssl.o)
_read_string in metaioSDK(ui_openssl.o)
"_fwrite$UNIX2003", referenced from:
_XrAQWOpNWyNOaebKZvBRbL in metaioSDK(pngwio.o)
_file_write in metaioSDK(bss_file.o)
_int_rsa_verify in metaioSDK(rsa_sign.o)
_send_fp_chars in metaioSDK(a_strex.o)
_write_fp in metaioSDK(b_dump.o)
_read_string in metaioSDK(ui_openssl.o)
"_nanosleep$UNIX2003", referenced from:
boost::this_thread::hiden::sleep_for(timespec const&) in metaioSDK(thread.o)
boost::this_thread::hiden::sleep_until(timespec const&) in metaioSDK(thread.o)
"_strerror$UNIX2003", referenced from:
_build_SYS_str_reasons in metaioSDK(err.o)
"_strtod$UNIX2003", referenced from:
_WWOVfTQLpCQpcac in metaioSDK(pngrutil.o)
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
What else am I missing aside from marking this framework as optional?
The problem is that your third party framework DOES include an i386 version, but that i386 version was built against the wrong SDK. It was built against the OS X SDK and should have been built against the iOS Simulator SDK. File a bug report with the metaioSDK developers to get them to fix the bug.
If you duplicate your target and remove the framework from the linked frameworks list, you can use this new target to build for simulator. It's a little less "just know what I want and do the thing", but it'll definitely solve your issue and the relationship will be explicitly marked.

Lock screen on device programmatically

I have read the other questions regarding the same, but everyone is just saying 'Jailbreak', 'that'll never be approved by Apple', 'It's not possible' and 'private API, GraphicsServices.framework'.
Let me just clear something up, I am not doing this for a jailbroken phone, I am doing this because the lock-button on my phone is broken, and I simply want to not have to wait 1 minute for the screen to lock. So I figured I could have an app which called lockScreen in the beginning of AppDelegate.h. This is not going on AppStore, it's just for me.
I've seen people saying they can use GSEventLockDevice(); when importing GSEvent.h from GraphicsServices.framework, but when I try running it (both on device and simulator) I get this, and it won't build:
Undefined symbols for architecture armv7s:
"_GSEventLockDevice", referenced from:
-[AppDelegate application:didFinishLaunchingWithOptions:] in AppDelegate.o
ld: symbol(s) not found for architecture armv7s
clang: error: linker command failed with exit code 1 (use -v to see invocation)
I'm not completely sure what this means. If I remove the line GSEventLockDevice(); but still import GSEvent.h, everything is running fine.
Does my device need to be jailbroken for this to work or something?
This has already been resolved by somebody else. You can find it on Github: https://github.com/neuroo/LockMeNow
char *gsDylib = "/System/Library/PrivateFrameworks/GraphicsServices.framework/GraphicsServices";
void *handle = dlopen(gsDylib, RTLD_NOW);
if (handle) {
BOOL locked = FALSE;
void (*_GSEventLockDevice)() = dlsym(handle, "GSEventLockDevice");
if (_GSEventLockDevice) {
_GSEventLockDevice();
//...
}
dlclose(handle);
//...
}
There is no reason to code an app to lock your phone. Use Assistive Touch in Accessibility settings to accomplish hardware button tasks from a button on screen. This button is accessible on screen (but can be easily hidden) from anywhere on the phone, where as your "lock app" is only accessible from the home screen. Check out this support article. Trust me, my lock button is broken too.
You are getting the undefined symbol error because you are not linking to the private framework in your app. It needs to be included in your Build Phases Link Binary with Libraries step.
Since GraphicsServices.framework is not a public framework, it won't show up in the frameworks list. I found this answer that gives steps to link to a private framework. I haven't tried it, so YMMV.
How do I add the following private frameworks to my iPhone app?

After updating the app, user reports crash on iPad 1 running iOS 5.1.1

There is no crashalytics crash report that I get. And the user says that the app just hangs on the opening screen.
And this started happening only a few days ago. Would anyone know why this happens? And is there any reason why this started happening now?
When I run the app on my simulator with iOS 5.1 it works just fine.
I emailed you the crash logs & console logs. The immediate meat of it looks like you have a problem with ACFacebookAppIDKey...
Dyld Error Message:
Symbol not found: _ACFacebookAppIdKey
Referenced from: /var/mobile/Applications/<removed by D80buckeye>/BusinessPlan.app/BusinessPlan
Expected in: /System/Library/Frameworks/Accounts.framework/Accounts
in /var/mobile/Applications/<removed by D80buckeye>/BusinessPlan.app/BusinessPlan
Dyld Version: 199.6
EDIT:
With a little more research I think I found your problem. ACFacebookAppIDKey is only available in iOS6 and above. From ACAccountstore Class Reference
ACFacebookAppIdKey
The Facebook App ID, as it appears on the Facebook website.
Available in iOS 6.0 and later.
Declared in ACAccountStore.h.
Mark Social.framework, Accounts.framework as 'optional' in XCODE, NOT required, in Targets/Build Phases/Link Binary with Libraries.

Resources