MobileFirst 7.1 Progurd getting Error return code 1 (2641 duplicate class definitions) [duplicate] - ibm-mobilefirst

I'm using mobilefirst 7.1 environment in eclipse. I just create sample hybrid application and add android environment. then i take unsigned apk at the time i'm getting below error. kindly help me for this.
Thank you :)
Progurd-project.txt
# To enable ProGuard in your project, edit project.properties
# to define the proguard.config property as described in that file.
# Add project specific ProGuard rules here.
# By default, the flags in this file are appended to flags specified
# in ${sdk.dir}/tools/proguard/proguard-android.txt
# You can edit the include path and order by changing the ProGuard
# include property in project.properties.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html
# Add any project specific keep options here:
# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
# public *;
#}
-injars bin/classes
-injars libs
-outjars bin/classes-processed.jar
-injars libs/jmdns.jar
# Using Google's License Verification Library
-keep class com.android.vending.licensing.ILicensingService
# Specifies to write out some more information during processing.
# If the program terminates with an exception, this option will print out the entire stack trace, instead of just the exception message.
-verbose
####################################################################################################
############################## IBM MobileFirst Platform configuration ############################
####################################################################################################
# Annotations are represented by attributes that have no direct effect on the execution of the code.
-keepattributes *Annotation*
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
-keepattributes InnerClasses
-keep class **.R
-keep class **.R$* {
<fields>;
}
# These options let obfuscated applications or libraries produce stack traces that can still be deciphered later on
-renamesourcefileattribute SourceFile
-keepattributes SourceFile,LineNumberTable
# Enable proguard with Cordova
-keep class org.apache.cordova.** { *; }
-keep public class * extends org.apache.cordova.CordovaPlugin
-keep class com.worklight.androidgap.push.** { *; }
-keep class com.worklight.wlclient.push.** { *; }
-keep class com.worklight.common.security.AppAuthenticityToken { *; }
# Enable proguard with Google libs
-keep class com.google.** { *;}
-dontwarn com.google.common.**
-dontwarn com.google.ads.**
# apache.http
-keep class org.apache.http.** { *; }
-dontwarn org.apache.http.**
-optimizations !class/merging/vertical*,!class/merging/horizontal*,!code/simplification/arithmetic,!field/*,!code/allocation/variable
-keep class net.sqlcipher.** { *; }
-dontwarn net.sqlcipher.**
-keep class org.codehaus.** { *; }
-keepattributes *Annotation*,EnclosingMethod
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
# Remove debug logs in release build
-assumenosideeffects class android.util.Log {
public static *** d(...);
}
# These classes contain references to external jars which are not included in the default MobileFirst project.
-dontwarn com.worklight.common.internal.WLTrusteerInternal*
-dontwarn com.worklight.jsonstore.**
-dontwarn org.codehaus.jackson.map.ext.*
-dontwarn com.worklight.androidgap.push.GCMIntentService
-dontwarn com.worklight.androidgap.plugin.WLInitializationPlugin
-dontwarn com.worklight.wlclient.push.GCMIntentService
-dontwarn org.bouncycastle.**
-dontwarn com.worklight.androidgap.jsonstore.security.SecurityManager
-dontwarn com.worklight.wlclient.push.WLBroadcastReceiver
-dontwarn com.worklight.wlclient.push.common.*
-dontwarn com.worklight.wlclient.api.WLPush
-dontwarn com.worklight.wlclient.api.SecurityUtils
-dontwarn android.support.v4.**
-dontwarn android.net.SSLCertificateSocketFactory
-dontwarn android.net.http.*
-dontwarn okio.**
-dontwarn com.squareup.okhttp.**
################################################################################
Console Error
[2016-12-06 12:46:55 - progurdProgurdAndroid] Proguard returned with error code 1. See console
[2016-12-06 12:46:55 - progurdProgurdAndroid] Note: there were 3284 duplicate class definitions.
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: com.strangeberry.jmdns.tools.Browser: can't find superclass or interface javax.swing.JFrame
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: com.strangeberry.jmdns.tools.Browser: can't find superclass or interface javax.swing.event.ListSelectionListener
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: com.strangeberry.jmdns.tools.Browser$ServiceTableModel: can't find superclass or interface javax.swing.table.AbstractTableModel
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: com.strangeberry.jmdns.tools.Browser: can't find referenced class javax.swing.JFrame
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: com.strangeberry.jmdns.tools.Browser: can't find referenced class java.awt.Color
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: com.strangeberry.jmdns.tools.Browser: can't find referenced class java.awt.Color
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: com.strangeberry.jmdns.tools.Browser: can't find referenced class javax.swing.border.EmptyBorder
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: com.strangeberry.jmdns.tools.Browser: can't find referenced class javax.swing.border.EmptyBorder
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: com.strangeberry.jmdns.tools.Browser: can't find referenced method 'java.awt.Container getContentPane()' in class com.strangeberry.jmdns.tools.Browser
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: com.strangeberry.jmdns.tools.Browser: can't find referenced class java.awt.GridLayout
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: com.strangeberry.jmdns.tools.Browser: can't find referenced class java.awt.GridLayout
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: com.strangeberry.jmdns.tools.Browser: can't find referenced class java.awt.Container
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: com.strangeberry.jmdns.tools.Browser: can't find referenced class javax.swing.DefaultListModel
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: com.strangeberry.jmdns.tools.Browser: can't find referenced class javax.swing.DefaultListModel
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: com.strangeberry.jmdns.tools.Browser: can't find referenced class javax.swing.JList
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: com.strangeberry.jmdns.tools.Browser: can't find referenced class javax.swing.JList
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: com.strangeberry.jmdns.tools.Browser: can't find referenced class javax.swing.JList
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: com.strangeberry.jmdns.tools.Browser: can't find referenced class javax.swing.JList
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: com.strangeberry.jmdns.tools.Browser: can't find referenced class javax.swing.JList
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: com.strangeberry.jmdns.tools.Browser: can't find referenced class javax.swing.JList
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: com.strangeberry.jmdns.tools.Browser: can't find referenced class javax.swing.JPanel
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: com.strangeberry.jmdns.tools.Browser: can't find referenced class javax.swing.JPanel
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: com.strangeberry.jmdns.tools.Browser: can't find referenced class java.awt.BorderLayout
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: com.strangeberry.jmdns.tools.Browser: can't find referenced class java.awt.BorderLayout
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: com.strangeberry.jmdns.tools.Browser: can't find referenced class javax.swing.JPanel
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: com.strangeberry.jmdns.tools.Browser: can't find referenced class javax.swing.JLabel
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: com.strangeberry.jmdns.tools.Browser: can't find referenced class javax.swing.JLabel
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: com.strangeberry.jmdns.tools.Browser: can't find referenced class javax.swing.JPanel
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: com.strangeberry.jmdns.tools.Browser: can't find referenced class javax.swing.JScrollPane
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: com.strangeberry.jmdns.tools.Browser: can't find referenced class javax.swing.JScrollPane
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: com.strangeberry.jmdns.tools.Browser: can't find referenced class java.awt.Container
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: com.strangeberry.jmdns.tools.Browser: can't find referenced class javax.swing.JTextArea
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: com.strangeberry.jmdns.tools.Browser: can't find referenced class javax.swing.JTextArea
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: com.strangeberry.jmdns.tools.Browser: can't find referenced class javax.swing.JTextArea
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: com.strangeberry.jmdns.tools.Browser: can't find referenced class javax.swing.JTextArea
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: com.strangeberry.jmdns.tools.Browser: can't find referenced class javax.swing.JTextArea
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: com.strangeberry.jmdns.tools.Browser: can't find referenced class javax.swing.JTextArea
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: com.strangeberry.jmdns.tools.Browser: can't find referenced method 'void setDefaultCloseOperation(int)' in class com.strangeberry.jmdns.tools.Browser
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: com.strangeberry.jmdns.tools.Browser: can't find referenced method 'void setLocation(int,int)' in class com.strangeberry.jmdns.tools.Browser
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: com.strangeberry.jmdns.tools.Browser: can't find referenced method 'void setSize(int,int)' in class com.strangeberry.jmdns.tools.Browser
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: com.strangeberry.jmdns.tools.Browser: can't find referenced method 'void setVisible(boolean)' in class com.strangeberry.jmdns.tools.Browser
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: com.strangeberry.jmdns.tools.Browser: can't find referenced class javax.swing.SwingUtilities
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: com.strangeberry.jmdns.tools.Browser: can't find referenced class javax.swing.JList
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: com.strangeberry.jmdns.tools.Browser: can't find referenced class javax.swing.DefaultListModel
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: com.strangeberry.jmdns.tools.Browser: can't find referenced class javax.swing.DefaultListModel
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: com.strangeberry.jmdns.tools.Browser: can't find referenced class javax.swing.DefaultListModel
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: com.strangeberry.jmdns.tools.Browser: can't find referenced class javax.swing.DefaultListModel
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: com.strangeberry.jmdns.tools.Browser: can't find referenced class javax.swing.event.ListSelectionEvent
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: com.strangeberry.jmdns.tools.Browser: can't find referenced class javax.swing.event.ListSelectionEvent
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: com.strangeberry.jmdns.tools.Browser: can't find referenced class javax.swing.DefaultListModel
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: com.strangeberry.jmdns.tools.Browser: can't find referenced class javax.swing.JTextArea
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: com.strangeberry.jmdns.tools.Browser: can't find referenced class javax.swing.JFrame
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: com.strangeberry.jmdns.tools.Browser: can't find referenced class javax.swing.event.ListSelectionListener
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: com.strangeberry.jmdns.tools.Browser: can't find referenced class java.awt.Color
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: com.strangeberry.jmdns.tools.Browser: can't find referenced class javax.swing.border.EmptyBorder
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: com.strangeberry.jmdns.tools.Browser: can't find referenced class java.awt.Container
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: com.strangeberry.jmdns.tools.Browser: can't find referenced class javax.swing.JPanel
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: com.strangeberry.jmdns.tools.Browser: can't find referenced class java.awt.Container
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: com.strangeberry.jmdns.tools.Browser: can't find referenced class javax.swing.SwingUtilities
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: com.strangeberry.jmdns.tools.Browser: can't find referenced class javax.swing.event.ListSelectionEvent
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: com.strangeberry.jmdns.tools.Browser: can't find referenced class javax.swing.DefaultListModel
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: com.strangeberry.jmdns.tools.Browser: can't find referenced class javax.swing.JList
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: com.strangeberry.jmdns.tools.Browser: can't find referenced class javax.swing.DefaultListModel
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: com.strangeberry.jmdns.tools.Browser: can't find referenced class javax.swing.JList
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: com.strangeberry.jmdns.tools.Browser: can't find referenced class javax.swing.JTextArea
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: com.strangeberry.jmdns.tools.Browser: can't find referenced class javax.swing.DefaultListModel
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: com.strangeberry.jmdns.tools.Browser: can't find referenced class javax.swing.event.ListSelectionEvent
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: com.strangeberry.jmdns.tools.Browser$2: can't find referenced class javax.swing.DefaultListModel
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: com.strangeberry.jmdns.tools.Browser$2: can't find referenced class javax.swing.DefaultListModel
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: com.strangeberry.jmdns.tools.Browser$ServiceTableModel: can't find referenced class javax.swing.table.AbstractTableModel
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: com.strangeberry.jmdns.tools.Browser$ServiceTableModel: can't find referenced class javax.swing.DefaultListModel
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: com.strangeberry.jmdns.tools.Browser$ServiceTableModel: can't find referenced class javax.swing.DefaultListModel
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: com.strangeberry.jmdns.tools.Browser$ServiceTableModel: can't find referenced class javax.swing.table.AbstractTableModel
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: com.strangeberry.jmdns.tools.Browser$ServiceTableModel: can't find referenced class javax.swing.DefaultListModel
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: javax.jmdns.test.JmDNSTest: can't find referenced class org.easymock.EasyMock
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: javax.jmdns.test.JmDNSTest: can't find referenced class org.easymock.EasyMock
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: javax.jmdns.test.JmDNSTest: can't find referenced class org.easymock.Capture
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: javax.jmdns.test.JmDNSTest: can't find referenced class org.easymock.Capture
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: javax.jmdns.test.JmDNSTest: can't find referenced class org.easymock.EasyMock
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: javax.jmdns.test.JmDNSTest: can't find referenced class org.easymock.EasyMock
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: javax.jmdns.test.JmDNSTest: can't find referenced class org.easymock.Capture
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: javax.jmdns.test.JmDNSTest: can't find referenced class org.easymock.Capture
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: javax.jmdns.test.JmDNSTest: can't find referenced class org.easymock.EasyMock
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: javax.jmdns.test.JmDNSTest: can't find referenced class org.easymock.EasyMock
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: javax.jmdns.test.JmDNSTest: can't find referenced class org.junit.Before
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: javax.jmdns.test.JmDNSTest: can't find referenced class org.junit.Test
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: javax.jmdns.test.JmDNSTest: can't find referenced class org.junit.Test
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: javax.jmdns.test.JmDNSTest: can't find referenced class org.junit.Test
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: javax.jmdns.test.JmDNSTest: can't find referenced class org.junit.Test
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: javax.jmdns.test.JmDNSTest: can't find referenced class org.junit.Test
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: javax.jmdns.test.JmDNSTest: can't find referenced class org.junit.Test
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: javax.jmdns.test.JmDNSTest: can't find referenced class org.junit.Test
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: javax.jmdns.test.JmDNSTest: can't find referenced class org.junit.Test
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: javax.jmdns.test.JmDNSTest: can't find referenced class org.junit.Test
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: javax.jmdns.test.JmDNSTest: can't find referenced class org.junit.Test
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: javax.jmdns.test.JmDNSTest: can't find referenced class org.junit.Test
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: javax.jmdns.test.ServiceInfoTest: can't find referenced class org.junit.Before
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: javax.jmdns.test.ServiceInfoTest: can't find referenced class org.junit.Test
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: javax.jmdns.test.ServiceInfoTest: can't find referenced class org.junit.Test
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: javax.jmdns.test.ServiceInfoTest: can't find referenced class org.junit.Test
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: javax.jmdns.test.ServiceInfoTest: can't find referenced class org.junit.Test
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: javax.jmdns.test.ServiceInfoTest: can't find referenced class org.junit.Test
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: javax.jmdns.test.ServiceInfoTest: can't find referenced class org.junit.Test
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: javax.jmdns.test.ServiceInfoTest: can't find referenced class org.junit.Test
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: javax.jmdns.test.ServiceInfoTest: can't find referenced class org.junit.Test
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: javax.jmdns.test.ServiceInfoTest: can't find referenced class org.junit.Test
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: javax.jmdns.test.TextUpdateTest: can't find referenced class org.junit.Before
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: javax.jmdns.test.TextUpdateTest: can't find referenced class org.junit.Test
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: javax.jmdns.test.TextUpdateTest: can't find referenced class org.junit.Test
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: javax.jmdns.test.TextUpdateTest: can't find referenced class org.junit.Test
[2016-12-06 12:46:55 - progurdProgurdAndroid] You should check if you need to specify additional program jars.
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: there were 105 unresolved references to classes or interfaces.
[2016-12-06 12:46:55 - progurdProgurdAndroid] You may need to specify additional library jars (using '-libraryjars').
[2016-12-06 12:46:55 - progurdProgurdAndroid] Warning: there were 5 unresolved references to program class members.
[2016-12-06 12:46:55 - progurdProgurdAndroid] Your input classes appear to be inconsistent.
[2016-12-06 12:46:55 - progurdProgurdAndroid] You may need to recompile them and try again.
[2016-12-06 12:46:55 - progurdProgurdAndroid] Alternatively, you may have to specify the option
[2016-12-06 12:46:55 - progurdProgurdAndroid] '-dontskipnonpubliclibraryclassmembers'.
[2016-12-06 12:46:55 - progurdProgurdAndroid] java.io.IOException: Please correct the above warnings first.
[2016-12-06 12:46:55 - progurdProgurdAndroid] at proguard.Initializer.execute(Initializer.java:321)
[2016-12-06 12:46:55 - progurdProgurdAndroid] at proguard.ProGuard.initialize(ProGuard.java:211)
[2016-12-06 12:46:55 - progurdProgurdAndroid] at proguard.ProGuard.execute(ProGuard.java:86)
[2016-12-06 12:46:55 - progurdProgurdAndroid] at proguard.ProGuard.main(ProGuard.java:492)

Tried the same. It works perfectly fine. From the error logs it is clear that there are references to awt and swing API's which are not being found. MobileFirst does not bundle these dependencies in its project. Please check the libraries or dependencies added to your project.

Related

Undefined symbols "_OBJC_CLASS_$_" error

My project is written in ApplescriptObjC and Objective-C.
I have an NSTabViewDelegate, which must be written in ObjC:
#import <Cocoa/Cocoa.h>
#import "MSItems.h"
#interface MSTabView : NSTabView<NSTabViewDelegate>
- (void)tabView:(NSTabView *)tabView willSelectTabViewItem:(NSTabViewItem *)tabViewItem;
#end
#implementation MSTabView
- (void)tabView:(NSTabView *)tabView willSelectTabViewItem:(NSTabViewItem *)tabViewItem {
if ([[tabViewItem identifier] intValue] == 1) {
[MSItems myMethod];
}
}
#end
MSItems class is written in ApplescriptObjC, but I created a header file, which contains only the method I need to be called by other classes.
#import <Cocoa/Cocoa.h>
#class MSItems;
#interface MSItems : NSObject
+ (void) myMethod;
#end
In the ASObjC class i have:
script MSItems
property parent : class "NSObject"
on myMethod()
--stuff
end myMethod
end script
But the app doesn't compile and I get the error:
Undefined symbols for architecture x86_64:
"_OBJC_CLASS_$_MSItems", referenced from:
objc-class-ref in MSTabView.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

The title property of UIViewController subclass not accessible via iVar

In the initialiser of a UIViewSubClass I'm setting the title property, using the iVar (avoiding the setter as recommended in initialisers):
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
_title = #"Pen";
}
return self;
}
No error is displayed when I type it, but when I compile or analize, I get a linker error:
Undefined symbols for architecture i386:
"_OBJC_IVAR_$_UIViewController._title", referenced from:
-[PenViewController initWithNibName:bundle:] in PenViewController.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
What's going on? Is title not KVC compliant?

How to compile Objective-C code with GCC?

When I try to compile this code that I got form here with gcc:
#import <stdio.h>
#import <objc/Object.h>
#interface Hello: Object
- (void) init;
- (void) say;
#end
#implementation Hello
- (void) init {
[super init];
}
- (void) say {
printf("Hello, world!\n");
}
#end
int main() {
Hello *hello = [Hello new];
[hello say];
[hello free];
return 0;
}
with comand line: g++ -x objective-c++ test.mm -otest -lobjc
When compiling I get the following warnings:
test.mm:11:14: warning: ‘Object’ may not respond to ‘-init’ [enabled by default]
test.mm:11:14: warning: (Messages without a matching method signature
[enabled by default]
test.mm:11:14: warning: will be assumed to return ‘id’ and accept
[enabled by default]
test.mm:11:14: warning: ‘...’ as arguments.) [enabled by default]
test.mm: In function ‘int main()’:
test.mm:19:28: warning: ‘Hello’ may not respond to ‘+new’ [enabled by default]
test.mm:21:14: warning: ‘Hello’ may not respond to ‘-free’ [enabled by default]
and if I try to run - I get SIGSEGV:
$> ./test
$> Segmentation fault
What I am doing wrongly?
env: linux-x86_64, gcc-4.7.2
Thanks.
That code is wrong. And ancient. It would never have worked. Now it would have (fixed and added some additional examples).
First, check to see if you have GNUStep installed. If you do, switch to using NSObject and libFoundation (actually libgnustep-base, as Fred points out in the comments).
Secondly, [IIRC -- scratching old brain cells here] that init still returned (id) when Object was still the root class. Since you aren't doing anything useful in that init method, just delete it entirely.
The compiler errors indicate that your Hello subclass is not correctly inheriting from Object, which makes no sense.

[objective-c]How do I send one method a message from another .m file

I am trying to take a picture from my iPad app, using code I have found on the internet. I have this method:
- (BOOL) startCameraControllerFromViewController: (UIViewController*) controller
usingDelegate: (id <UIImagePickerControllerDelegate,
UINavigationControllerDelegate>) delegate {
in a file called CameraViewController.m.
In CameraViewController.h, I have this definition:
#interface CameraViewController : UIViewController
+ (BOOL) startCameraControllerFromViewController: (UIViewController*) controller
usingDelegate: (id <UIImagePickerControllerDelegate,
UINavigationControllerDelegate>) delegate;
#end
I am trying to call it from this method which is in ClientSetupViewController.m:
- (void) captureImage {
[startCameraControllerFromViewController: self usingDelegate: self];
}
I'm getting an error saying
Use of undeclared identifier startCameraControllerFromViewController
I have #import "CameraViewController.h" in CLientViewController.h
I'm totall lost! I thought I had everything defined correctly, but I guess not. What is wrong with my code?
UPDATE: getting this error now after changing code to call instance:
Undefined symbols for architecture armv7:
"_OBJC_CLASS_$_CameraViewController", referenced from:
objc-class-ref in ClientSetupViewController.o
anon in CameraViewController.o
l_OBJC_$_CATEGORY_CameraViewController_$_CameraDelegateMethods in CameraViewController.o ld: symbol(s) not found for architecture
armv7 clang: error: linker command failed with exit code 1 (use -v to
see invocation)
Please go through an Objective-C tutorial once more before making The Best iOS App Ever (TM) - you're missing fundamentals of the syntax.
One, you're using the - and + method prefixes inconsistently. Decide whether it should be a class (+) or instance (-) method and add the prefix accordingly - and use the same prefix both in the declaration in the header file and in the definition (in the implementation file).
Once you have fixed this, you have to send the message to the class itself if you defined a class method or to an instance if you have an instance method. Example using a class method:
[CameraViewController startCameraControllerFromViewController:self usingDelegate:self];
Example using an instance method:
[someOtherViewController startCameraControllerFromViewController:self usingDelegate:self];
assuming that someOtherViewController is a valid instance of CameraViewController.
If startCameraControllerFromViewController:usingDelegate: is indeed a class function (as indicated by the +), then the way to call the function would be:
[CameraViewController startCameraControllerFromViewController: self usingDelegate: self]
A message is sent to an object, or a class. In your code, you have just the message name in the message call [ ], with no indication of where this message should be sent to.

Objective-c subclassing gives linking error

I'm trying to port a game to iOS but I'm having a problem. I have a class called CKSprite with the following method:
- (id)initWithFile:(NSString *)fileName effect:(GLKBaseEffect *)effect
{
if ((self = [super init]))
{
//some stuff
}
return self;
}
I then have a subclass called CKPLayer (it has no other methods or properties at the moment other than what it inherits:
#property (strong) CKPlayer *player1;
But when I try to initialise it using the parent method:
self.player1 = [[CKPlayer alloc] initWithFile:#"Images/parrot.png" effect:self.effect];
I get this error:
Undefined symbols for architecture i386:
"_OBJC_CLASS_$_CKPlayer", referenced from:
objc-class-ref in CKViewController.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
This is my first time trying to do anything like this so I've probably done something stupid.
Any help will be greatly appreciated.
#import "CKSprite.h"
#interface CKPlayer : CKSprite
#end
The linker is missing the implementation for the class CKPlayer. Maybe you just forgot to implement it since it has "no other methods or properties at the moment", in that case just add a file which should look like:
#import "CKPlayer.h"
#implementation CKPlayer
#end
and ld should be happy