封装qq分享静态库到cocopod
封装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的更多相关文章
- iOS开发之静态库(三)—— 图片、界面xib等资源文件封装到.a静态库
编译环境:Macbook Air + OS X 10.9.2 + XCode5.1 + iPhone5s(iOS7.0.3) 一.首先将资源文件打包成bundle 新建工程:File -> Ne ...
- iOS开发之静态库(五)—— 图片、界面xib等资源文件封装到静态框架framework
编译环境:Macbook Air + OS X 10.9.2 + XCode5.1 + iPhone5s(iOS7.0.3) 一.首先将资源文件打包成bundle 由于bundle是静态的,所以可以将 ...
- 自己在linux上编译、链接、动态库和静态库的学习笔记
在平常的项目中,我们都是使用公司要求的makefile.makedebug一类的文件,因此,在编译.链接.生成和链接动态库与静态库的时候,我们只是简单的使用一些已经设置的变量,只是简单的修改.添加一些 ...
- 封装ios静态库碰到的一些问题(三)
静态库封装好以后,就存在一个问题,静态库,模拟器的静态库何真机的静态库是分开的,那么能够合并,答案是肯定的,但是必须我们手工在终端工具下执行命令合并 lipo -create Release-ipho ...
- 封装ios静态库碰到的一些问题(一)
封装IOS动态库,碰到的第一个问题,就是资源文件的问题,如果将你的程序封装成为静态库,那么静态库中不会包含资源文件和xib文件,这个时候就需要自己封装bundle文件了,而笔者开发环境默认是xcode ...
- 经验分享:Xcode 创建.a和framework静态库【转】
作者:Haley_Wong 最近因为项目中的聊天SDK,需要封装成静态库,所以实践了一下创建静态库的步骤,做下记录. 库介绍 库从本质上来说是一种可执行代码的二进制格式,可以被载入内存中执行.库分静态 ...
- 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 ...
- 经验分享:Xcode 创建.a和framework静态库
最近因为项目中的聊天SDK,需要封装成静态库,所以实践了一下创建静态库的步骤,做下记录. 库介绍 库从本质上来说是一种可执行代码的二进制格式,可以被载入内存中执行.库分静态库和动态库两种. iOS中的 ...
- iOS xcode创建静态库封装自己的SDK及使用
https://www.cnblogs.com/JustForHappy/p/5773039.html 一,静态库和动态库的区别在这里就不说了,个人感觉如果是自己封装提供别人下载的话应该是静态库比较方 ...
随机推荐
- (04) springboot 下的springMVC和jsp和mybatis
1. springboot 和springmvc下的注解完全一样(新增了一些有用的) 常用的注解如下: @Controller @RestController= @Controller + @Resp ...
- Python3列表(list)比较操作教程
一.相等比较 1.1 同顺序列表比较 顺序相同直接用“==”进行比较即可 list1 = ["one","two","three"] lis ...
- CentOS 7上安装PGI 2017编译器
1. 安装PGI编译器 在PGI的官方网站的右上角,有一个社区免费版(Community Edition)的下载链接(GET PGI FOR FREE),根据操作系统选择合适的版本即可. 需要注意的是 ...
- 《Python量化交易教程》第一部分新手入门 第1天:谁来给我讲讲Python?
一.量化投资视频学习课程 二.Python手把手教学 第1天:谁来给我讲讲Python? PS: 1.注意使用方法,这个以后都有大用 2.注意符号的使用方式 3.尽量用英文表达 4.本日学习内容以及其 ...
- java打印系统时间
public class Time { public static void main(String[] args) { Date t = new Date(); DateFormat ti = ne ...
- Rhino学习教程——1.3
在主工具栏的工作视窗配置一栏中,有一个背景图工具. 展开是: . 功能是: 放置背景图 移除背景图 移动背景图 缩放背景图 对齐背景图 隐藏背景图/显示背景图 用“图框平面”工具 也可以导入一个图片 ...
- Java作业:第一次过程性考核 ——长春职业技术学院 16级网络工程
Java作业:第一次过程性考核 ••<结构化程序设计>•• 考核目标:初步了解Java基本语法规则,学习结构化程序设计思想. 码云链接:https://gitee.com/SoridoD/ ...
- CEPH集群操作入门--配置
参考文档:CEPH官网集群操作文档 概述 Ceph存储集群是所有Ceph部署的基础. 基于RADOS,Ceph存储集群由两种类型的守护进程组成:Ceph OSD守护进程(OSD)将数据作为对象 ...
- dev控件 xtraTabbedMdiManager 如何将关闭子窗体改为收回主窗体内
前言 本文主要讲解 xtraTabbedMdiManager 如何将关闭子窗体改为收回主窗体内,顺便附上Float(浮动)的时候使窗体最大化,及指定只能某一个子窗体能浮动放大. 下面进入正题. 一.首 ...
- 阿里规范学习总结-不要再foreach对元素进行add()/remove()操作,
在foreach循环中,对元素进行 remove()/add() 操作需要使用Iterator ,如果运行在多线程环境下,需要对Iterator对象枷锁. public class ForeachTe ...