美文网首页
iOS修改包名、模拟包名

iOS修改包名、模拟包名

作者: 大师的书 | 来源:发表于2020-07-15 11:33 被阅读0次

    这是一个大胆的想法

    适用环境

    在调试的时候经常某些功能经常需要固定包名,但该包名又不能进行调试时。

    应用场景

    当我调试一个sdk,这个sdk指定的测试报名为com.test.a,而我的app包名com.test.b,我既想用com.test.b包名,又想调试这个sdk时,就可以使用我写的这个方法来临时改变包名,等用完再切换回来即可

    使用方式

    使用很简单,一句话即可切换包名,再使用完后再切换回来即可

    #import "NSBundle+changeBundleId.h"//引入文件
    
    //换成指定包名
    [[NSBundle mainBundle] changeBundleIdentifier:@"想修改成的包名(例如应用场景中的com.test.a)"];
    
    //换回正常包名
    [[NSBundle mainBundle] changeBundleIdentifier:nil];
    

    代码地址

    代码地址
    下载其中的NSBundle+changeBundleId.hNSBundle+changeBundleId.m即可

    对pod有偏执的小伙伴也可以使用pod来引入,在Podfile文件中加入以下行:
    pod 'WZZBaseTool/AOP'
    然后pod install即可

    原理

    1. 写一个NSBundle的分类,调用修改包名方法时,将NSBundle类的bundleIdentifier方法和交换为自己实现的方法,该操作每次打开app只会执行一次
    2. 在修改方法changeBundleIdentifier里如果传入了包名,则会将该包名保存起来,如果传入的是nil也会保存起来nil
    3. 在代码调用NSBundlebundleIdentifier方法获取包名时会调用到自己实现的方法,如果保存的包名不为空则返回保存的包名,如果为空则调用正常的bundleIdentifier方法,返回正常包名

    相关文章

      网友评论

          本文标题:iOS修改包名、模拟包名

          本文链接:https://www.haomeiwen.com/subject/thrdhktx.html