精华内容
下载资源
问答
  • ios 静态库和动态

    2018-10-12 16:31:06
    tbd肯定是动态库,.framework可能是静态库也可能是动态库,静态库在链接时,会被完整的复制到可执行文件中,如果多个App都使用了同一个静态库,那么每个App都会拷贝一份,缺点是浪费内存。类似于定义一个基本...

    ios的库有两种:
    静态库:.a和.framework
    动态库:.tbd和.framework
    framework 即使静态又是动态库

    静态库和动态库的区别
    .a文件肯定是静态库, . tbd肯定是动态库,.framework可能是静态库也可能是动态库,静态库在链接时,会被完整的复制到可执行文件中,如果多个App都使用了同一个静态库,那么每个App都会拷贝一份,缺点是浪费内存。类似于定义一个基本变量,使用该基本变量是是新复制了一份数据,而不是原来定义的;
    动态库不会复制,只有一份,程序运行时动态加载到内存中,系统只会加载一次,多个程序共用一份,节约了内存。类似于使用变量的内存地址一样,使用的是同一个变量;
    在iOS8.0以后苹果开放了动态加载. tbd的接口,用于挂载. tbd动态库,项目中也可以使用了自己定义的动态库。

    静态库的好处
    模块化,分工合作
    避免少量改动经常导致大量的重复编译连接
    也可以重用,注意不是共享使用

    动态库的好处
    使用动态库,可以将最终可执行文件体积缩小
    使用动态库,多个应用程序共享内存中得同一份库文件,节省资源
    使用动态库,可以不重新编译连接可执行程序的前提下,更新动态库文件达到更新应用程序的目的。
    静态库的使用场景

    保护自己的核心代码,自己不想别人看到的部分
    将MRC的项目打包成静态库,可以在ARC下直接使用,不需要在转换

    展开全文
  • iOS静态库和动态

    2017-12-07 15:55:24
    iOS静态库和动态静态库和动态库是什么,以及它们的区别,详细介绍可参考博文:iOS里的... 在App项目编译的时候会被拷贝一份编译到目标程序中,相当于将静态库嵌入了,所以得到的App二进制文件会大。 在使用的时

    iOS静态库和动态库

    静态库和动态库是什么,以及它们的区别,详细介绍可参考博文:iOS里的动态库和静态库,里面讲的很详细。

    静态库动态库的区别

    内容来源自:iOS动态库与静态库

    静态库和动态库是相对编译期和运行期的:静态库在程序编译时会被链接到目标代码中,程序运行时将不再需要改静态库;而动态库在程序编译时并不会被链接到目标代码中,只是在程序运行时才被载入,因为在程序运行期间还需要动态库的存在。
    静态库 好处

    1. 模块化,分工合作,提高了代码的复用及核心技术的保密程度
    2. 避免少量改动经常导致大量的重复编译连接
    3. 也可以重用,注意不是共享使用

    动态库 好处:

    1. 使用动态库,可以将最终可执行文件体积缩小,将整个应用程序分模块,团队合作,进行分工,影响比较小
    2. 使用动态库,多个应用程序共享内存中得同一份库文件,节省资源
    3. 使用动态库,可以不重新编译连接可执行程序的前提下,更新动态库文件达到更新应用程序的目的。
    4. 应用插件化
    5. 软件版本实时模块升级
    6. 在其它大部分平台上,动态库都可以用于不同应用间共享, 共享可执行文件,这就大大节省了内存。
      iOS平台 在 iOS8 之前,苹果不允许第三方框架使用动态方式加载,从 iOS8 开始允许开发者有条件地创建和使用动态框架,这种框架叫做 Cocoa Touch Framework。虽然同样是动态框架,但是和系统 framework 不同,app 中使用 Cocoa Touch Framework 制作的动态库 在打包和提交 app 时会被放到 app main bundle 的根目录 中,运行在沙盒里,而不是系统中。也就是说,不同的 app 就算使用了同样的 framework,但还是会有多份的框架被分别签名,打包和加载。不过 iOS8 上开放了 App Extension 功能,可以为一个应用创建插件,这样主app和插件之间共享动态库还是可行的。
      苹果系统专属的framework 是共享的(如UIKit), 但是我们自己使用 Cocoa Touch Framework 制作的动态库是放到 app bundle 中,运行在沙盒中的

    静态库和动态库的存在的形式

    1. 静态库:以.a 和 .framework为文件后缀名。
    2. 动态库:以.tbd(之前叫.dylib) 和 .framework 为文件后缀名。(系统直接提供给我们的framework都是动态库!)

    理解:.a是一个纯二进制文件,.framework中除了有二进制文件之外还有资源文件。 .a ,要有 .h 文件以及资源文件配合, .framework 文件可以直接使用。总的来说,.a + .h + sourceFile = .framework。所以创建静态库最好还是用.framework的形式

    静态库和动态库的区别 
    不同点:

    1. 静态库在链接时,会被完整的复制到可执行文件中,如果多个App都使用了同一个静态库,那么每个App都会拷贝一份,缺点是浪费内存。类似于定义一个基本变量,使用该基本变量是是新复制了一份数据,而不是原来定义的;
    2. 动态库不会复制,只有一份,程序运行时动态加载到内存中,系统只会加载一次,多个程序共用一份,节约了内存。类似于使用变量的内存地址一样,使用的是同一个变量;

    共同点:

    1. 静态库和动态库都是闭源库,只能拿来满足某个功能的使用,不会暴露内部具体的代码信息

    在文档Overview of Dynamic Libraries有如下的2张图:

    1.App using static libraries

    1
    2.App using dynamic libraries

    App using dynamic libraries

    在这里记录下学习的过程

    静态库

    参考iOS静态库SDK制作(包含第三方静态库)

    平时我们用的第三方SDK基本上都是静态库,静态库的几个特点:

    • 在App项目编译的时候会被拷贝一份编译到目标程序中,相当于将静态库嵌入了,所以得到的App二进制文件会变大。
    • 在使用的时候,需要手动导入静态库所依赖的其他类库。(比如说某个SDK中使用到了CoreMotion.framework,在使用的时候需要手动导入。有的SDK需要link十几个系统库,这个时候非常恶心,只能一个一个手动加,这是静态库一个很大的不便之处。)
    • 导入静态库的应用可以减少对外界的依赖,如果导入的是第三方动态库,动态库找不到的话应用就会崩掉,例如Linux上经常出现的lib not found
    • 静态库很大的一个优点是减少耦合性,因为静态库中是不可以包含其他静态库的,使用的时候要另外导入它的依赖库,最大限度的保证了每一个静态库都是独立的,不会重复引用。

    创建静态库

    选择如下的Cocoa Touch Static Library创建静态库

    1

    Build生成静态库,在Products文件夹中查看
    2

    如果在Edit Scheme中,Build Configuration中选择Debug(以下是我自己的试验)

    • 如果模拟器选择的是Generic iOS Device,会有Debug-iphoneos文件夹
      3

    • 如果模拟器选择的是其它的模拟器,会有Debug-iphonesimulator文件夹
      4

    Debug-iphonesimulator文件夹下对应的libWZLib.a是对应模拟器的,可使用lipo -info libWZLib.a来验证,如:
    验证1

    输出信息如下,其架构为x86_64

    input file libWZLib.a is not a fat file
    Non-fat file: libWZLib.a is architecture: x86_64
    

    同理可验证Debug-iphoneos文件夹下的libWZLib.a,其架构为armv7 arm64,表示对应真机


    如果在Edit Scheme中,Build Configuration中选择Release,可生成其它的2个版本的静态库。Release表示真实环境,会把日志和断言都去掉。


    上面生成的Debug-iphoneosDebug-iphonesimulator文件夹中,头文件WZLib.h是位于include/项目名下,如何让头文件,直接在include文件夹下呢?
    Build Phases中的Copy Files中,去掉Subpathinclude/$(PRODUCT_NAME),后面的/$(PRODUCT_NAME)(表示工程文件名)即可:
    5
    删除原来生成的文件,Clean之后,再Build,此时头文件就直接在include文件夹下了
    6

    如果想添加多个头文件,选择Copy Files下的+号,如下:

    7

    静态库使用

    如果把对应真机的静态库libWZLib.a和头文件,导入到项目中使用,则会提示错误:

    8

    所以要导入模拟器对应的版本

    如果想同时支持模拟器和真机,该怎么做呢?
    需要使用终端命令来合并
    如下合并命令,表示把libWZLibR.a(真机版)和libWZLib.a(模拟器版),合并为test.a

    lipo -create libWZLibR.a libWZLib.a -output test.a
    

    此时lipo -info test.a,显示信息为:

    Architectures in the fat file: test.a are: armv7 x86_64 arm64 
    

    表示其支持模拟器和真机

    要注意的问题

    1.如果静态库内有 category 分类,那么需要在添加 -ObjC 编译标识,否则可能会报:unrecognized selector sent to instance

    可参考:

    使用Bundle打包图片配合静态库使用

    可参考:

    由于静态库只能放代码不能带图片资源,有两种解决方案

    • 使用Framework<( ̄︶ ̄)>
    • 使用bundle打包图片文件和静态库分别打包拷贝给别人
    • 把图片素材传给别人

    第三种方法这么坑,万一哪个文件再搞混了….所以推荐用第二种

    新建工程:File -> New -> Project… -> OS X -> Framework & Library -> Bundle
    我们必须借助于OS X,因为iOS框架中没有创建Bundle的模板

    动态库

    参考iOS静态库SDK制作(包含第三方静态库)

    这个是我们最常用的一类库,使用频率最高的UIKit.framework和Fundation.framework都属于动态库,所有.dylib和.tbd结尾的都属于动态库。动态库的几个特点:

    • 平时使用的系统库都放在iOS系统中,在你打包应用程序的时候这些库不会拷贝到你的程序中,当需要使用的时候会动态从iOS系统中加载它们,因为这个原因,动态库也被称作共享库。编译时才载入的特性,也可以让我们随时对库进行替换,而不需要重新编译代码。
    • 这些库是所有应用公用的,换一种说法就是节省了应用安装包的体积,这是区别静态库很重要的一个特点,因为静态库使用一次就要拷贝一次,非常浪费资源。
    • 动态库在制作的时候可以直接包含静态库,也能自动link所需要的依赖库。
    • 使用动态库的时候不需要再次link依赖库,即导即用,这个就厉害了。唯一需要注意的是在导入自己制作的动态库时,需要在Embedded Binaries中导入,不然会报错:image not found。此时这个动态库会跟静态库一样被拷贝到目标程序中进行编译,苹果又把这种Framework叫做Embedded Framework

    关于动态库要搞清楚一点,我们自己制作的动态库与系统动态库的区别,我们自己制作的动态库引入App项目的时候需要embed进项目,也就是要拷贝到目标程序中,这就有点不像动态库的特性了,苹果这么做也是考虑安全问题吧!

    创建动态库

    9

    添加相应的类后,在Build Phases下的Headers中,把Project下的头文件移动到Public即可,如下:
    10

    此时build,在工程的的Products目录下,生成WZFrame.framework。与静态库一样,也对应真机和模拟器版本

    11

    合并真机和模拟器的Framework

    1.使用lipo -create,这种方式比较麻烦一点,生成后还需要替换,具体方式可参考:

    2.在工程的Build Phases里添加以下脚本,真机和模拟器都Build一遍之后就会在工程目录下生成Products文件夹,里面就是合并之后的Framework

    • 新建New Run Script Phase
      15

    • 添加脚本
      16

      if [ "${ACTION}" = "build" ]
      then
      INSTALL_DIR=${SRCROOT}/Products/${PROJECT_NAME}.framework
      
      DEVICE_DIR=${BUILD_ROOT}/${CONFIGURATION}-iphoneos/${PROJECT_NAME}.framework
      
      SIMULATOR_DIR=${BUILD_ROOT}/${CONFIGURATION}-iphonesimulator/${PROJECT_NAME}.framework
      
      
      if [ -d "${INSTALL_DIR}" ]
      then
      rm -rf "${INSTALL_DIR}"
      fi
      
      mkdir -p "${INSTALL_DIR}"
      
      cp -R "${DEVICE_DIR}/" "${INSTALL_DIR}/"
      #ditto "${DEVICE_DIR}/Headers" "${INSTALL_DIR}/Headers"
      
      lipo -create "${DEVICE_DIR}/${PROJECT_NAME}" "${SIMULATOR_DIR}/${PROJECT_NAME}" -output "${INSTALL_DIR}/${PROJECT_NAME}"
      
      #open "${DEVICE_DIR}"
      #open "${SRCROOT}/Products"
      fi
      
    • 上面的脚本要保证真机和模拟器的framework都要存在,否则生成的framework会为空。此时生成的framework,在项目目录下
      16

    此时使用lipo -info WZFrame,结果为:

    Architectures in the fat file: WZFrame are: x86_64 armv7 arm64 
    

    表示已合并成功

    动态库使用

    如果把刚才生成的动态库WZFrame.framework,导入并调用

    #import <WZFrame/WZObject.h>
    
    [WZObject testMethod];
    

    添加项目中来直接使用,会出现如下所示的错误

    12

    dyld: Library not loaded: @rpath/WZFrame.framework/WZFrame
      Referenced from: /Users/Miller/Library/Developer/CoreSimulator/Devices/15E3C2C6-797C-40CF-A0F5-8DCA6E472AF1/data/Containers/Bundle/Application/2F13129C-2F69-48BC-B100-00A2D478C4B3/iOSLibTest.app/iOSLibTest
      Reason: image not found
    

    如何解决呢?
    1.选择New Copy Files Phase
    13

    2.添加WZFrame.framework
    14

    展开全文
  • OC、Swift打包静态库,嵌入APP 演示项目地址:https://github.com/ySeasons/CustomFramework 1、场景: 介绍: 2、什么是库? 共享代码便是库,实现代码的复用,一般分为静态库和动态库 区别: 静态库:链接时完整的...

    一直在搞开发,也没好好捋捋思路,就抽空总结一下
    OC、Swift打包静态库,嵌入APP
    演示项目地址:https://github.com/ySeasons/CustomFramework

    1、场景:
    介绍:
    2、什么是库?
    共享代码便是库,实现代码的复用,一般分为静态库和动态库
    区别:
    静态库:链接时完整的拷贝到可执行文件,多次使用多次拷贝,造成冗余,使包变得更大
    动态库:链接时不复制,程序运行时由系统加载到内存中,不论系统加载次数,共用节省内存
    
    iOS静态库: .a 和 .framework 文件
    iOS动态库: .dylib 和 .framework 文件
    .framework 有动态/静态库?:系统的架构是动态的,自己创建的是静态的
    .a和.framework区别: 
       .a是单纯的二进制文件
       .framework是二进制文件+资源文件
       .a不能直接使用,需要.h文件配合 / .framework可以直接使用
       .framework = .a + .h + Resources(资源文件)
       
    为什么使用静态库?
      共享代码,方便使用;
      实现iOS程序的模块化,业务模块化,减少开发的重复劳动;
      与他人分享代码,但不想他人知道代码的具体实现;
      开发第三方SDK;
      其他项目集成调用
    
    3、注意点 
     打包.framework的项目(子项目)中:
     -AppDelegate、SceneDelegate 不要打包静态库中,文件中的操作要封装成接口暴露出去
     -项目中的三方库cocoapods管理,可以不用打包进静态库,(说明依赖哪些第三方库)
      :主工程与子工程公用,主工程集成三方库;
      :若子项目打包了某个第三方库,主项目也用到该三方库,那么子项目要把该三方库在header暴露出来供主项目调用,主项目不要再集成此库
     -.pch文件重新设置地址
     -资源文件:默认情况下,静态库只会打包代码文件,
              创建bundle文件夹,把图片、Images.xcassets、plist、xib、storyboard、文件等打包
     - 主工程和子工程 文件命名不要相同,会出现问题
              
    嵌入到主工程中:
    
    <下面会具体指出>
    

    本文以主工程(YYMain)和子工程(YYSub)来说明
    在这里插入图片描述

    过程:
    1、YYSub是一个可以运行的子项目
    2、新建YYSubFramework静态库工程,配置:
      :CocoaPods 同步子工程的三方库安装 pod install
      :YYSub文件拖入YYSubFramework
      :创建bundle文件,拖入资源文件
      :重新配置 .pch 文件路径
      :删除AppDelegate文件
      :新建继承与NSObject的类对外开放(YYSubOpen.h在拖入header中)
      (此类中把AppDelegate中的方法实现封装)
      :Mach-O Type 选择 Static Library (静态库)
      :Architectures 默然arm64、armv7,(若支持老版本,请查资料)
      :编译成功之后Products下的文件,就是打包成功的静态库
       (YYSubFramework.framework)
    
    注意:支持设备、版本号保持一致
    打包过程中可能遇到:
    .pch文件地址重新设置
    .plist、read.md 等文件重复
    Architectures 设置
    ...等问题,分别对应解决
    
    

    新建 **framework库工程
    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    YYSubOpen代码 如下:
    .h
    #import <Foundation/Foundation.h>
    #import <UIKit/UIKit.h>
    @interface YYSubOpen : NSObject
    //跳转视图
    - (UITabBarController *)openSubApp;
    //配置内容
    - (void)configSetting;
    @end
    
    .m
    #import "YYSubOpen.h"
    #import "YYTabBarViewController.h"
    @implementation YYSubOpen
    //跳转视图
    - (UITabBarController *)openSubApp {
        return (UITabBarController *)[[YYTabBarViewController alloc] init];
    }
    //配置内容
    - (void)configSetting {
        // 配置一些三方设置
        // 账号是否连通
        // 。。。。
    }
    @end
    
    

    YYMain主工程引入 YYSubFramework.framework静态库

    导入
    #import <YYSubFramework/YYSubOpen.h>
    
    // 调用跳转代码如下
    #import "YYMainViewController.h"
    @interface YYMainViewController ()
    @end
    @implementation YYMainViewController
    - (void)viewWillAppear:(BOOL)animated{
        [super viewWillAppear:animated];
        [self.navigationController setNavigationBarHidden:NO animated:YES];
        [self.tabBarController.tabBar setHidden:NO];
    }
    - (void)viewDidLoad {
        [super viewDidLoad];
        // Do any additional setup after loading the view.
        self.navigationItem.title = @"首页";
        UIButton *button = [[UIButton alloc] init];
        button.frame = CGRectMake(50, 150, 200, 50);
        [button setTitle:@"跳转sub-App" forState:UIControlStateNormal];
        [button setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
        [button addTarget:self action:@selector(goToSubApp) forControlEvents:UIControlEventTouchUpInside];
        [self.view addSubview:button];
    }
    - (void)goToSubApp{
        [self.tabBarController.tabBar setHidden:YES];
        [self.navigationController setNavigationBarHidden:YES animated:YES];
        YYSubOpen *subApp = [[YYSubOpen alloc] init];
        [subApp configSetting];
        UITabBarController *tabVC = [subApp openSubApp];
        [self.navigationController pushViewController:tabVC animated:YES];
    }
    @end
    
    // 子App 返回代码
    - (void)backClick{
        [self.tabBarController.navigationController popToRootViewControllerAnimated:YES];
    }
    
    

    演示项目地址:https://github.com/ySeasons/CustomFramework
    参考链接:
    https://www.jianshu.com/p/b1859dc04fbd
    https://www.jianshu.com/p/826c9af4323c
    https://www.jianshu.com/p/44f924a44b76
    https://www.jianshu.com/p/f6356a7bef25
    https://www.jianshu.com/p/6790fc295f48?appinstall=0

    展开全文
  • 静态页面性能最好

    2018-06-20 22:52:08
    仅作个人记录纯属胡扯一些Native和H5的区别Android的都是静态页面,数据才是核心,其实UI简陋点,直接给数据也是一样的,但是为了美观,所以有了这么多...可以动态修改,所以一些APP连界面都是H5。但是我说的思想...

    仅作个人记录


    纯属胡扯一些Native和H5的区别

    Android的都是静态页面,数据才是核心,其实UI简陋点,直接给数据也是一样的,但是为了美观,所以有了这么多花哨的UI。

    然而H5是把UI也动态化了,这也意味着我们不仅要从服务器获取数据,还需要获取UI,在我看来这是很恐怖的事。


    但是H5的优点也不言而喻,适合展示新闻类型页面,因为排版会经常变;可以动态修改,所以一些APP连界面都是H5。但是我说的思想一点也没错,让UI成为流量,缺点太多了。

    展开全文
  • 在实际开发过程中,我们或许会涉及到各种不同的协作开发形式,或许也有将自己封装的类运用到其它 app 的情况,在这个时候,如果单纯的使用 crtl+c、ctrl+v ,或许使得项目得不容易维护,整洁性,还有封装性大大...
  • iOS 静态库制作(Xcode9.0)

    千次阅读 2017-12-01 16:01:44
    在实际开发过程中,我们或许会涉及到各种不同的协作开发形式,或许也有将自己封装的类运用到其它 app 的情况,在这个时候,如果单纯的使用 crtl+c、ctrl+v ,或许使得项目得不容易维护,整洁性,还有封装性大大...
  • 链接管理和静态文件

    2016-05-11 14:11:00
    模板中的链接管理 模板中导航条可以包含不同页面的链接。虽然可以直接在模板中编写简单路由的链接,但是对于动态...假设app.route('/')改成了app.route('index'),虽然视图函数没,但是模板中'/'部分都要改成'inde...
  • (1)Android动态权限申请

    2019-08-26 23:36:41
    Android权限的申请有两种方式,静态获取和动态获取。 静态获取:是在APP安装的时候一次性获取App所...Android权限的申请由静态方法动态方式,体现了Google在手机安全机制上的努力。 androd中有各种各样的权...
  • 摘 要 随着Android系统移动设备的广泛使用安全问题也的越来越突出因此 针对Android应用程序的漏洞分析研究非常重要污点分析可以分为动态静态 和混合三种静态分析的优点是分析代码覆盖率高并且漏报率低但是由于没有...
  • 文章目录main之前1.加载可执行文件(App 的`.o `文件的集合)2.加载动态链接库,进行 rebase 指针调整和 ...4.初始化,包括了执行 +load() 方法、attribute((constructor)) 修饰的函数的调用、创建 C++ 静态全局...
  • 里面有一个暗的动态圆,中间环形是正常颜色,最外圈是暗的静态环,覆盖整个图标。那这里就需要有两个半径,一个是内圆半径R,一个是外环半径R1。 先绘制出两个 暗的区域出来。 下面展示一些 内联代码片。 vec2...
  • PHPAPP 支持 自定义 伪静态URL和生成HTML静态部属,与应用的SEO设定完善解决 SEO优化问题。 可以对URL进行改名,URL地址想怎么就怎么。 3.完美的 帐务管理 当时用户交易情况如 交易金额;交易对象;资金流向等...
  • 单纯的静态方法 可以直接在公共样式里添加css3滤镜属性 也可以动态的从彩色变成灰色 app不更新实现灰 这个一开始我也不知道,后来问安卓的朋友,安卓套h5可以实现不更新app,实现灰色, ...
  • 一、framework中有哪些内容 1. Headers 头文件 2. info.plist (动态库没有) ...2、静态库会在编译时被打包到app的二进制文件中 , 因为App尺寸大,启动时需要加载的内容多,所以可能会导致App...
  • react组件定义和分类

    2021-02-20 21:41:20
    函数组件时静态组件 性能消耗小 (第一次渲染完成后就不会了) function App(props) { return <div>{props.title}</div> } export default App; 类组件 动态组件 性能消耗大 class App extends React....
  • Android设备兼容

    2017-07-01 16:04:43
    设备兼容性 Android系统运行在许多不同类型的设备上,包括手机、平板以及机顶...为了一步步朝目标挺进,Android提供了一个动态app框架,开发者可以使用静态文件来配置app资源(不同的屏幕尺寸使用不同的XML布局),
  • 设备兼容性 -Device Compatibility

    千次阅读 2016-07-11 15:43:18
    设备兼容 Android 是被设计运行在多种类型设备上,如 手机,平板,电视。...为了帮助开发人员实现目标,Android 提供了一个动态app 框架,这个框架提供了静态文件用来配置指定类型的app 资源(例如: 不同的
  • live code,不是静态文件服务器,它通过典型的 Munki Apache 开发环境提供了独特的优势:Simian 能动态地产生基于客户端性能的软件越过静态清单管理的管理程序都被移除了通过修改服务器,使客户端定制化得可 ...
  • Android 手机被设计为运行在不同类型的设备上,从手机到平板再到android 电视。作为一个开发者,这广泛的设备为你的app...为了促进你实现这一目标,android 提供了一个动态app 框架,在这个框架中,你可以在静态...
  • 引言 ...所以作为开发App的第一步,UI尤为重要,构建UI有很多种方式:xml静态布局、java动态代码、HTML构建(借助WebView)和第三方开源框架等。 一、构成UI的基本元素——View和ViewGroup概
  • JavaScript语法简介:

    2019-08-07 16:07:42
    JavaScript由Netscape浏览器首次引入到Web文档中,JavaScript的出现使得web文档得更像动态App,而不是静态的文档,现在主流的浏览器都支持·JavaScript。JavaScript核心被标准化为ECMAScript. JavaScript中...
  • (002)linux开发经验

    2019-12-18 22:24:33
    文章目录gcc动态库和静态库 gcc 1、gcc编译的4个阶段: 2、gcc的一些其他参数 指定头文件路径($ gcc test.c -I ./include -o app) 编译时指定宏($ gcc test.c -o app -D DEBUG) 优化程序(-O0不优化...
  • iOS 图片切换效果

    2013-05-12 15:43:35
    这样的效果可以使每一张静态图片都有动态的感觉,类似的效果在电子相册中经常可见。 最初的原型是在code4app网站上找的,下载下来后发现满足不了自己的一些需求,就又重新写了一个,下面是我的demo。 支持ARC机制...
  • Go Web如何处理Web请求?

    2019-03-27 13:58:16
    就是接收来自客户端(一般是浏览器或APP)发起的请求,根据请求方法与类型返回静态HTML页面或动态生成客户端想要的数据,而Go语言中net/http已经在处理请求数据方面做了很好的封装,使得用Go代码处理Web请求的数据并...
  • 记一次项目整体改造

    2019-05-05 14:29:00
    背景:  公司项目需要推广部署到多个客户,每个客户独立数据库,但使用的项目前后台及app使用的同一套业务。在不改变原调用链接的...因负载而带来的,项目中可静态常量处理  5.因负载而带来的,项目中定时器...
  • 为了使你的app能够在所用的设备上面取得成功,它应该适应一些功能可性,并提供灵活的用户界面,以适应不同的屏幕配置。 为了促进您实现这一目标,Android提供了一个动态应用程序框架,您可以在其中提供静态文件中...
  • 数据库我们提供数据库文件和数据库备份文件(见App_Data),即*.mdf和*.bak文件。您可以随意选择还原或附加数据库完成对数据库的设置。 3.更改根目录下 web.config 里的数据连接为您的数据链接。 OK,就这么简单。 ...

空空如也

空空如也

1 2 3 4
收藏数 72
精华内容 28
关键字:

静态变动态app