嵌入自定义framework到应用程序包中

原创 2011年01月24日 11:12:00

在实际开发过程中,我们常常要编写自定义的framework。

framework写好后会面对着这样一个问题,我的应用程序加载的时候如何能找到我自己写的framework呢?

 

首先要弄清楚,应用程序加载时寻找framework的路径顺序时怎样的:

1、首先从用户自定义路径中寻找

2、从/Library/Frameworks中寻找--------第三方framework一般放这里

3、从/System/Library/Frameworks中寻找----------苹果官方framework一般放这

 

 

补充一下,如果要让应用程序只给单用户使用,第三方的framework一般放入/Users/username/Library/Frameworks

 

 

如果我们的framework要放入上面第2个路径,则需要我们打包程序时将framework放入该路径。

本主题主要讨论如何嵌入自定义framework到应用程序中,这就涉及到第一点所说,我们必须给我们的自定义framework指定安装路径。

具体操作如下:

双击target下的自定义framework,在弹出窗口中选择build>>Deployment>>Installation Directory

我们主要是要在这里指定framework的安装路径,如果要让应用程序能在自己的包内找到该framework,则该framework的Installation Directory通常配置如下:

@executable_path/../Frameworks

 

在我们的应用程序中,我们可以通过选中添加目录,按住Ctrl键,选择添加Existing framework,找到我们自定义framework添加进来后,记得拖该framework到targets的Link Binary With Libraries文件夹下,保证编译后链接成功。

 

当做完这个工作后运行我们的应用程序的时候,会出现Image not found的错误,这个原因是应用程序没有找到我们添加的framework。

其原因就是我们没有将自定义framework放入系统标准存放framework的地方,也没有将我们的自定义framework放入应用程序包中。

具体解决方法就是:

选中Targets下的应用程序,右键Add>>New Build Phase>>New Copy Files Build Phase .

弹出对话框中默认Destination是Resources,我们需要改成Framewroks,对应@executable_path/../Frameworks,按照我们这里的做法Path可以不填,因为我们没有指定字路径。

 

大功告成!恭喜你!

Build Settings中的变量@rpath,@loader_path,@executable_path

Build Settings中的变量@rpath,@loader_path,@executable_path
  • chenyijun
  • chenyijun
  • 2015-09-10 13:59:39
  • 2091

@rpath, @loader_path, @executable_path

转载地址:http://nick.luckygarden.org/rpath-loader_path-executable_path/ 在 OSX 上初次接触到这些变量, 有些晕. 看了一些...
  • liangzhao_jay
  • liangzhao_jay
  • 2017-05-25 17:41:47
  • 848

Xcode中Build Settings中的变量@rpath,@loader_path,@executable_path

@executable_path 这个变量表示可执行程序所在的目录,比如
  • u012186949
  • u012186949
  • 2014-04-16 14:55:14
  • 3209

Android编译系统详解(二)

++++++++++++++++++++++++++++++++++++++++++ 本文系本站原创,欢迎转载! 转载请注明出处: http://blog.csdn.net/mr_rapt...
  • mr_raptor
  • mr_raptor
  • 2012-05-08 11:15:58
  • 23921

Android中framework层下添加aidl编译说程序包不存在

因为特殊要求,我在framework层下添加了一个aidl文件IBluetoothShp.aidl文件,但是在编译时却说程序包不存在,错误如下 frameworks/base/core/java/an...
  • zrf1335348191
  • zrf1335348191
  • 2016-06-15 12:12:02
  • 12010

在framework当中添加一个系统自定义服务,权限的问题

问题: 在framework当中添加一个系统自定义服务,操作打开与关闭GPS。普通APK调用服务来打开与关闭GPS, 会出现java.lang.SecurityException: Package...
  • px348402717
  • px348402717
  • 2016-11-09 20:46:49
  • 882

Cocos2dx之android版本的build.xml驯服记

--> ...
  • epeaktop
  • epeaktop
  • 2014-05-08 15:21:31
  • 1337

Android Build 系统详解

前言 Android Build 系统是 Android 源码的一部分。关于如何获取 Android 源码,请参照 Android Source 官方网站: http://source.andro...
  • wyh991131
  • wyh991131
  • 2014-07-15 14:16:53
  • 1104

libsvm-mat-2.89-3 和 LibSvm 使用说明 学习心得

  • 2009年11月13日 17:19
  • 106KB
  • 下载

在android framework中添加自定义系统服务

添加系统服务需要添加aidl,service,manager文件,需要修改SystemServer,Context,ContextImpl 下面举例进行说明,主要添加一个服务,用于获取系统时间和...
  • sgzy001
  • sgzy001
  • 2017-01-11 16:20:32
  • 3039
收藏助手
不良信息举报
您举报文章:嵌入自定义framework到应用程序包中
举报原因:
原因补充:

(最多只允许输入30个字)