簡體   English   中英

使用帶有cocoapods的AdobeMobileLibrary(適用於iOS)?

[英]Use AdobeMobileLibrary (for iOS) with cocoapods?

我們將使用Omniture-Tracking for iOS,這是AdobeMobileLibrary的一部分。 AdobeAdobeMobileLibrary不能通過cocoapods-repo(只有Omniture的舊版本)提供,但作為靜態庫,您可以從Adobe網站下載。

我想知道是否有可能用cocoapods維護這個靜態庫?

我創建了一個podspec文件:

Pod::Spec.new do |s|
  s.name           = 'AdobeMobileLibrary'
  s.version        = '4.0.2'
  s.license        = 'Commercial'
  s.summary        = 'Adobe Omniture SiteCatalyst analytics library for iOS.'
  s.homepage       = 'https://developer.omniture.com/en_US/content_page/mobile/c-measuring-mobile-applications'
  s.author         = { 'Adobe Omniture SiteCatalyst' => 'http://www.adobe.com/solutions/digital-marketing.html' }
  s.source_files   = 'AdobeMobileLibrary/*.{json,h}'
  s.ios.vendored_library = 'AdobeMobileLibrary/AdobeMobileLibrary.a'
  s.library        = 'AdobeMobileLibrary'
  s.xcconfig       = { 'LIBRARY_SEARCH_PATHS' => '"$(PODS_ROOT)/AdobeMobileLibrary"' }
end

在我的podfile中,我像這樣引用podspec文件:

pod 'AdobeMobileLibrary', :path => 'AdobeMobileLibrary.podspec'

在Pods項目中,我可以看到所有文件(AdobeMobileLibrary.a,ADBMobile.h,ADBMobileConfig.json)

http://i.stack.imgur.com/rnmp1.png

但是我無法構建項目並收到此錯誤消息:

ld: library not found for -lAdobeMobileLibrary

有誰有線索,這里的問題是什么?

使用帶有cocoapods的AdobeMobileLibrary有不同的解決方案嗎?

問題是由於cocoapods期望庫有一個lib前綴,在這種情況下是libAdobeMobileLibrary.a 解決此問題的最簡單方法是創建指向庫的符號鏈接:

ln -s AdobeMobileLibrary.a libAdobeMobileLibrary.a

值得注意的是,使用Adobe Mobile SDK時,.json文件應作為資源而不是源包含在內。 此外,您還需要添加對SystemConfiguration框架和libSqlite3.0.dylib的引用。 這是您的pod規范相應修改:

Pod::Spec.new do |s| 
  s.name           = 'AdobeMobileLibrary'
  s.version        = '4.0.2'
  s.license        = 'Commercial'
  s.summary        = 'Adobe Omniture SiteCatalyst analytics library for iOS.'
  s.homepage       = 'https://developer.omniture.com/en_US/content_page/mobile/c-measuring-   mobile-applications'
  s.author         = { 'Adobe Omniture SiteCatalyst' => 'http://www.adobe.com/solutions/digital-marketing.html' }
  s.source_files   = 'AdobeMobileLibrary/*.h'
  s.resource       = 'AdobeMobileLibrary/ADBMobileConfig.json'
  s.framework      = 'SystemConfiguration'
  s.ios.vendored_library = 'AdobeMobileLibrary/AdobeMobileLibrary.a'
  s.libraries      = 'sqlite3.0','AdobeMobileLibrary'
  s.xcconfig       = { 'LIBRARY_SEARCH_PATHS' => '"$(PODS_ROOT)/AdobeMobileLibrary"' }
end

為了更加通用@ fransen的解決方案,我使用了prepare_commandpreserve_paths

Pod::Spec.new do |s| 
  s.name           = 'AdobeMobileLibrary'
  s.version        = '4.0.2'
  s.license        = 'Commercial'
  s.summary        = 'Adobe Omniture SiteCatalyst analytics library for iOS.'
  s.homepage       = 'https://developer.omniture.com/en_US/content_page/mobile/c-measuring-   mobile-applications'
  s.author         = { 'Adobe Omniture SiteCatalyst' => 'http://www.adobe.com/solutions/digital-marketing.html' }
  s.source_files   = 'AdobeMobileLibrary/*.h'
  s.resource       = 'AdobeMobileLibrary/ADBMobileConfig.json'
  s.framework      = 'SystemConfiguration'
  s.preserve_paths = 'AdobeMobileLibrary/libAdobeMobileLibrary.a'
  s.ios.vendored_library = 'AdobeMobileLibrary/AdobeMobileLibrary.a'
  s.prepare_command  = <<-CMD
             if [ -f $PWD/AdobeMobileLibrary/libAdobeMobileLibrary.a ]
             then
                 rm -rf $PWD/AdobeMobileLibrary/libAdobeMobileLibrary.a
             fi
             ln -s $PWD/AdobeMobileLibrary/AdobeMobileLibrary.a $PWD/AdobeMobileLibrary/libAdobeMobileLibrary.a
                          CMD
  s.libraries      = 'sqlite3.0'
  s.xcconfig       = { 'LIBRARY_SEARCH_PATHS' => '"$(PODS_ROOT)/AdobeMobileLibrary"' }
end

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM