How to use sharpziplib in Monotouch? - ios

Hi I need to unzip a file in Monotouch for an iOS (and Andriod later) App and sharpziplib looks like a good choice (is it?). But how do I go about adding it in MonoDevelop (I have the latest version)?
I have downloaded ICSharpCode.SharpZipLib.dll, but how/where is it added to my project (solution)? Can anyone give me step-by-step instructions?
Also which .net version of the DLL should I be using? There are three: net-11, net-20, netcf-20 (i think it's the last one but would be good to have that confirmed).

You must create a MonoTouch class library project for ICSharpCode.SharpZipLib and add the corresponding source files to that project.
Then you can either reference the resulting assembly or the project itself in your solution.

Related

How to compile `.framework` file?

I searched through existing Stackoverflow questions related to this problem but didn't find any help to solve it.
So here's the problem:
I am trying to integrate .framework file into the project but it's giving me an error saying that module compiles with 4.0.3 can't be imported by swift 5.0 compiler.
I wanted to know how to compile that.framework file? so that it will become compilable to swift 5.0
Please help if you come across such a problem.
Note: .framework file is created by a third-party developer
If the framework you're trying to integrate is binary only, then your best option is to check with the 3rd party developer regarding their support for Swift 5.0.
In case there are sources available, you can try checking if there is any work being done in their repository (usually a separate branch), or you can try forking the sources yourself.
Note that with the source option, you'll have access to possibly unstable and untested code, and depending on the experience I'd be very careful in this case.

Using a modified PDFTron Tools Framework

I'm working on a iOS Framework (using CocoaPods) that, as of today, uses PDFNet.framework as its only dependency.
Everything works as expected when I use the resulting framework in another "top level" project.
Now I'm trying to make this same Framework use the Tools.framework, as I intend to use the annotations from the Tools library.
Is there a common approach in doing so?
I've tried building the Tools source code but it fails as the dependency isn't found.
Everything you need should be in the following guide.
https://blog.pdftron.com/2016/11/14/getting-started-with-pdfnet-for-ios/
If that guide does not help, then please answer my comment above.

xcode build settings for imported libraries (xcode 5)

I'm having a small issue with xcode (I'm assuming it's mostly due to being unfamiliar with xcode itself) and was hoping someone could lend me a hand.
I'm working with a group of people and we're using the GPUimage framework.
The problem is this:
For every person referencing GPUimage we get additional entries in the build settings for the xcode project.
For example build products path would be:
/Users/username/project/application_name/GPUImage-master/GPUimage.framework
I would rather it be:
/application_name/GPUImage-master/GPUimage.framework
The reason I want to fix this is because we need to package up our application and library together so that whoever wants to use it only needs to open the xcode project file to see what we've done (to mark it, school project).
Can anyone suggest what I should do or look for here?
Try adding the following to the beginning of the user path:
$(SRCROOT)/application_name/GPUImage-master/GPUimage.framework
That should instruct XCode to use the user path of whoever is using the library
Hope this helps!

Unable to use System.XML.Linq

I am working on a project using Mono for Android. After reading a cross-platform document with Xamarin. I had my data layer in a separate project and was going to move it to my Mono for Android project and then link those files to my Mono Touch project, and one day perhaps a Windows Phone 8 project.
When I moved the code, I am now unable to compile because of the System.Xml.Linq reference. The reference shows in the Mono for Android project, but I am unable to use it. I thought aiming for Froyo may be the problem, but upgrading the project to Gingerbread or Ice Cream Sandwich didn't help.
Does anybody know what I am doing wrong? I am a seasoned .NET developer and am well aware of how references work in project, but this one has me stumped.
The project the original code was working on was targeting the Mono/.NET 4 framework
Is your reference to System.Xml.Linq pointing to the .Net version or the Mono version? The one for Mono will have Version 2.0.5.0.
Also, is the reference to System.Xml.Linq in a Android Class Library/Application or in a regular .Net Class library. If it is a .Net Class library, I would try referencing the library in your Android application as a compiled (dll) reference and not a project reference. It is not a perfect solution, but I have found that this works when I needed to reference libraries that I use across multiple solutions. The reference will generally work out fine, but if there is anything that is not supported in the Mono version, then it can cause issues.
Assuming you have your code in a class library, your best bet may be to create a Mono specific version of your library project. You can import and use the same class files, but just add some Conditional compilation symbols to have it compile properly for Mono. If you are not familiar with this, take a look at how Json.Net or ServiceStack manages code for multiple platforms.

Is the AWS.net library compatible with MonoTouch?

I'm working on a new app using MonoTouch and I'd like to store data in AWS.
I saw there is an AWS.net library available from Amazon, but I don't know if I can use it with my MonoTouch app. Can I?
standard .NET binaries won't work, per FAQ: http://monotouch.net/FAQ (Can I use standard desktop Mono assemblies or .NET assemblies with MonoTouch?).
Edited: All you need to do is rebuild the source code with Mono's C# compiler
I think the better option is to use the AWS SDK for iOS and write bindings to the Obj-c library. There are examples out there of how to write bindings if you just do a search for it. It probably isn't the quick solution you were hoping for but you probably don't want to use the SDK for .NET anyway as it probably wasn't intended to be used on the iPhone.
If you do end up writing bindings for it, please post it on github for everyone else to use. Solve once for many, right? :)
For standard upload of files from monotouch to S3 I used this Library ,
recompiled in MonoDevelop using MonoTouch Library Template and done ( use System.Web.Services instead of System.Web ).
Recompile AWS for monotouch has to be really difficult because of the heavy use of System.Web and IOrderedDictionary ( ThirdParty Libraries ).
I just built the AWS SDK for Monotouch/Mono for Android. I had to modify some files and add some classes from the current Mono release.
GitHub repo is located here:
https://github.com/fr500/aws_sdk_monotouch_monodroid
It's my first attempt at this, and it's working but I don't know if my approach is correct. Any help will be appreciated

Resources