封装qq分享静态库到cocopod 

1,创建framework库,到腾讯开放平台(open.qq.com)申请项目appid

2,将iOS SDK中的TencentOpenAPI.framework和TencentOpenApi_IOS_Bundle.bundle文件拷贝到应用开发的目录下并引用。

3,添加SDK依赖的系统库文件。分别是”Security.framework”, “libiconv.dylib”,“SystemConfiguration.framework”,“CoreGraphics.Framework”、“libsqlite3.dylib”、“CoreTelephony.framework”、“libstdc++.dylib”、“libz.dylib”。

4,创建一个继承与NSObject的类,例如:CHShareUtil,测试方法:- (void)share;

在Build Phases中把.h文件放进public里。在静态库头文件里引入#import “CHQQShare.h"

#import <TencentOpenAPI/QQApiInterface.h>

#import <TencentOpenAPI/QQApiInterfaceObject.h>

#import <TencentOpenAPI/TencentOAuth.h>

- (void)share

{

TencentOAuth*oauth = [[TencentOAuth alloc] initWithAppId:@“你的id,必须填写才能分享" andDelegate:self];

QQApiTextObject *txtObj = [QQApiTextObject objectWithText:@"text"];

SendMessageToQQReq *req = [SendMessageToQQReq reqWithContent:txtObj];

QQApiSendResultCode sent = [QQApiInterface sendReq:req];

}

5,创建一个项目,引用自己封装的framework,注意:在Build Rules里创建(如果没有)Copy Files,Destination选Frameworks,把自定义的framework拖过来。否则会出现崩溃:Reason: image not found。

6,在项目plist里面配置白名单

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">

<plist version="1.0">

<array>

<string>weixin</string>

<string>mqq</string>

<string>tim</string>

<string>wechat</string>

<string>mqqopensdkapiv2</string>

<string>mqqapi</string>

</array>

</plist>

7,  项目里调用:  [[[CHQQShare alloc]init] share]; 即可实现qq分享

8,最后根据我的pod博客即可发布到pod。http://www.cnblogs.com/huntaiji/p/6908982.html

遇到找不到头文件QQApiInterface.h的问题,pod配置文件的问题,参考我的这俩主要配置:

s.source_files = "CHShareUtil", "CHShareUtil/**/*.{h,m}"

s.public_header_files = "CHShareUtil/CHQQShare.h"

全配置文件:

Pod::Spec.new do |s|

s.name = "CHShareUtil"

s.version = "0.0.3"
s.summary = "封装QQ分享到cocoaPod,无需复杂配置即可方便的调用,基于:qq V3.2.1"

s.description = <<-DESC
封装QQ分享到cocoaPod,无需复杂配置即可方便的调用,基于:qq V3.2.1 后期会集成微信等分享功能
DESC

s.homepage = "https://github.com/lichanghong/CHShareUtil"

s.license = "MIT"
# s.license = { :type => "MIT", :file => "FILE_LICENSE" }

s.author = { "李长鸿" => "lichanghong@b.360.cn" }

s.platform = :ios, "8.0"

s.source = { :git => "https://github.com/lichanghong/CHShareUtil", :tag => "#{s.version}" }

s.source_files = "CHShareUtil", "CHShareUtil/**/*.{h,m}"

s.public_header_files = "CHShareUtil/CHQQShare.h"

s.resource = "CHShareUtil/TencentOpenApi_IOS_Bundle.bundle"

s.requires_arc = true
s.pod_target_xcconfig = { 'ENABLE_BITCODE' => 'NO' }
s.frameworks = 'Security','SystemConfiguration','CoreGraphics','CoreTelephony', 'UIKit', 'Foundation'
s.libraries = 'iconv','sqlite3','stdc++','z'
s.ios.vendored_frameworks = 'CHShareUtil/TencentOpenAPI.framework'

end

封装qq分享静态库到cocopod的更多相关文章

  1. iOS开发之静态库(三)—— 图片、界面xib等资源文件封装到.a静态库

    编译环境:Macbook Air + OS X 10.9.2 + XCode5.1 + iPhone5s(iOS7.0.3) 一.首先将资源文件打包成bundle 新建工程:File -> Ne ...

  2. iOS开发之静态库(五)—— 图片、界面xib等资源文件封装到静态框架framework

    编译环境:Macbook Air + OS X 10.9.2 + XCode5.1 + iPhone5s(iOS7.0.3) 一.首先将资源文件打包成bundle 由于bundle是静态的,所以可以将 ...

  3. 自己在linux上编译、链接、动态库和静态库的学习笔记

    在平常的项目中,我们都是使用公司要求的makefile.makedebug一类的文件,因此,在编译.链接.生成和链接动态库与静态库的时候,我们只是简单的使用一些已经设置的变量,只是简单的修改.添加一些 ...

  4. 封装ios静态库碰到的一些问题(三)

    静态库封装好以后,就存在一个问题,静态库,模拟器的静态库何真机的静态库是分开的,那么能够合并,答案是肯定的,但是必须我们手工在终端工具下执行命令合并 lipo -create Release-ipho ...

  5. 封装ios静态库碰到的一些问题(一)

    封装IOS动态库,碰到的第一个问题,就是资源文件的问题,如果将你的程序封装成为静态库,那么静态库中不会包含资源文件和xib文件,这个时候就需要自己封装bundle文件了,而笔者开发环境默认是xcode ...

  6. 经验分享:Xcode 创建.a和framework静态库【转】

    作者:Haley_Wong 最近因为项目中的聊天SDK,需要封装成静态库,所以实践了一下创建静态库的步骤,做下记录. 库介绍 库从本质上来说是一种可执行代码的二进制格式,可以被载入内存中执行.库分静态 ...

  7. VS2012(update3)编译Qt5.1.1 32位静态库debug-and-release版及结果分享

    1. 下载zip源码,我下载的是qt-everywhere-opensource-src-5.1.1.zip这个文件. 2.安装python 3.解压缩qt-everywhere-opensource ...

  8. 经验分享:Xcode 创建.a和framework静态库

    最近因为项目中的聊天SDK,需要封装成静态库,所以实践了一下创建静态库的步骤,做下记录. 库介绍 库从本质上来说是一种可执行代码的二进制格式,可以被载入内存中执行.库分静态库和动态库两种. iOS中的 ...

  9. iOS xcode创建静态库封装自己的SDK及使用

    https://www.cnblogs.com/JustForHappy/p/5773039.html 一,静态库和动态库的区别在这里就不说了,个人感觉如果是自己封装提供别人下载的话应该是静态库比较方 ...

随机推荐

  1. Vue+Element+Select获取选中的对象

              案例演示:获取select当前选中的所有内容 <el-select v-model="value8" filterable placeholder=&qu ...

  2. count性能

    表有主键列,count(1)的效率会稍微高于count(*),count(主键列)效率会高于count(1).表没有主键列,count(1)效率会高于count(*) count(1).count(* ...

  3. Spring教程笔记(3) Bean

    Bean配置项 id class必须项 如果根据id来获取bean,要写id:如果根据类型来配置bean,只写class就可以. scope作用域 constructor arguments prop ...

  4. 利用itext将html页面转成pdf(不模糊)

    1.maven项目进入依赖 <dependency> <groupId>org.xhtmlrenderer</groupId> <artifactId> ...

  5. Git - 生成 ssh key for Mac

    终端: cd ~/ .ssh 生成 SSH KEY ssh-keygen -t rsa -C 你的油箱 前往以下目录找到生成好的 SSH KEY /Users/wzz/.ssh/id_rsa.pub

  6. uva 10288 gailv

    Problem F Coupons Input: standard input Output: standard output Time Limit: seconds Memory Limit: MB ...

  7. 转: Qt信号槽实现原理 清晰明了

    转: https://blog.csdn.net/perfectguyipeng/article/details/78082360 本文使用 ISO C++ 一步一步实现了一个极度简化的信号与槽的系统 ...

  8. ng-packagr 不能全部打包文件

    1.没有在public_api.ts中导出 export * from './src/app/ngprime/components/tooltip/tooltip.module'; export * ...

  9. ClientDataSet使用locate或Filter定位到字段为空值的记录

    场景,程序想检查是否存在某个字段的值是空的,如果存在,则不允许增加记录,否则允许增加记录. 解决这个问题,我一开始用了两种错误的方法 if not clientdataset.locate('AFie ...

  10. 微信小程序开发学习(一):开发前准备

    开发前准备 Step1:注册 微信小程序开放平台: https://mp.weixin.qq.com/cgi-bin/wx 开发者注册: https://mp.weixin.qq.com/wxopen ...