青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

專職C++

不能停止的腳步

  C++博客 :: 首頁(yè) :: 聯(lián)系 :: 聚合  :: 管理
  163 Posts :: 7 Stories :: 135 Comments :: 0 Trackbacks

常用鏈接

留言簿(28)

我參與的團(tuán)隊(duì)

搜索

  •  

最新評(píng)論

閱讀排行榜

評(píng)論排行榜

原文:http://www.cnblogs.com/zjoch/p/6018289.html
一.前言

iOS開(kāi)發(fā)更新APP我覺(jué)得是比較坑的就是審核時(shí)間比較長(zhǎng),審核比較嚴(yán),對(duì)于剛?cè)胄械男』锇閬?lái)說(shuō),雷區(qū)比較多;所以熱更新是比較重要的;
大家也許會(huì)發(fā)現(xiàn)我們常用的QQ現(xiàn)在下來(lái)也就一百多兆,但是用了幾個(gè)月后發(fā)現(xiàn)QQ在手機(jī)上占有一個(gè)多G的內(nèi)存,特別是手機(jī)內(nèi)存比較小的小伙伴,這是因?yàn)槟阍谑褂眠^(guò)程中,有一些功能是你下載下來(lái)的;

二.創(chuàng)建Framework

1.新建項(xiàng)目

新建一個(gè)Cocoa Touch Framework項(xiàng)目,然后在這個(gè)項(xiàng)目里面寫(xiě)你的新的功能,比如我創(chuàng)建了一個(gè)控制器,在控制器里面加載一張圖和一個(gè)label;
  1. <span style="font-size:18px;">- (void)uiConfig{  
  2.     self.title = @"這是功能2";  
  3.       
  4.     UIImageView *imageView = [[UIImageView alloc]init];  
  5.     imageView.frame = CGRectMake(0, 0, ScreenWidth, ScreenHeight);  
  6.     NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://img4.duitang.com/uploads/item/201405/31/20140531174207_hH5u4.thumb.700_0.jpeg"]];  
  7.     imageView.image = [UIImage imageWithData:data];  
  8.     [self.view addSubview:imageView];  
  9.       
  10.     UILabel *label = [[UILabel alloc]init];  
  11.     label.backgroundColor = [UIColor clearColor];  
  12.     label.frame = CGRectMake(0, (ScreenHeight - 100)/2, ScreenWidth, 100);  
  13.     label.numberOfLines = 0;  
  14.     label.text = @"這是功能2這是功能2這是功能2這是功能2這是功能2這是功能2這是功能2這是功能2這是功能2這是功能2這是功能2這是功能2這是功能2這是功能2這是功能2";  
  15.     [self.view addSubview:label];  
  16. }</span>  

2.添加Aggregate

在TARGETS里面新建一個(gè)Aggregate

3.添加Run Script腳本

4.腳本源碼

  1. <span style="font-size:18px;"># Sets the target folders and the final framework product.  
  2. # 如果工程名稱和Framework的Target名稱不一樣的話,要自定義FMKNAME  
  3. # 例如: FMK_NAME = "MyFramework"  
  4. FMK_NAME=${PROJECT_NAME}  
  5. # Install dir will be the final output to the framework.  
  6. # The following line create it in the root folder of the current project.  
  7. INSTALL_DIR=${SRCROOT}/Products/${FMK_NAME}.framework  
  8. # Working dir will be deleted after the framework creation.  
  9. WRK_DIR=build  
  10. DEVICE_DIR=${WRK_DIR}/Release-iphoneos/${FMK_NAME}.framework  
  11. SIMULATOR_DIR=${WRK_DIR}/Release-iphonesimulator/${FMK_NAME}.framework  
  12. # -configuration ${CONFIGURATION}  
  13. # Clean and Building both architectures.  
  14. xcodebuild -configuration "Release" -target "${FMK_NAME}" -sdk iphoneos clean build  
  15. xcodebuild -configuration "Release" -target "${FMK_NAME}" -sdk iphonesimulator clean build  
  16. # Cleaning the oldest.  
  17. if [ -d "${INSTALL_DIR}" ]  
  18. then  
  19. rm -rf "${INSTALL_DIR}"  
  20. fi  
  21. mkdir -p "${INSTALL_DIR}"  
  22. cp -R "${DEVICE_DIR}/" "${INSTALL_DIR}/"  
  23. # Uses the Lipo Tool to merge both binary files (i386 + armv6/armv7) into one Universal final product.  
  24. lipo -create "${DEVICE_DIR}/${FMK_NAME}" "${SIMULATOR_DIR}/${FMK_NAME}" -output "${INSTALL_DIR}/${FMK_NAME}"  
  25. rm -r "${WRK_DIR}"  
  26. open "${INSTALL_DIR}"  
  27. </span>  

5.運(yùn)行打包

運(yùn)行工程,將生成的framework包壓縮zip,然后上傳服務(wù)器;
例如:http://7xqdun.com1.z0.glb.clouddn.com/FunctionZFJ1.framework.zip
 

三.創(chuàng)建項(xiàng)目

在項(xiàng)目中我們主要是下載和讀取framework包;我們先要獲取功能列表,在此我在本地寫(xiě)了一個(gè)功能列表,大家如果用得到可以將功能列表存放在服務(wù)器上;

1.創(chuàng)建功能列表數(shù)據(jù)

我添加了四個(gè)功能模塊,存在NSUserDefaults里面;其中功能1和功能2有下載地址,其他的沒(méi)有;功能1是個(gè)NSObject,功能2直接是一個(gè)控制器;
isopen:1表示打開(kāi),0表示關(guān)閉;
  1. - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {  
  2.     // Override point for customization after application launch.  
  3.     self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];  
  4.     self.window.backgroundColor = [UIColor whiteColor];  
  5.     [self.window makeKeyAndVisible];  
  6.       
  7.     //添加假的功能列表  
  8.     NSArray *functionList = [USER_DEFAULT objectForKey:@"functionList"];  
  9.     if(functionList==nil || functionList.count==0){  
  10.         NSArray *titleArr  = @[@"功能1",@"功能2",@"功能3",@"功能4"];  
  11.         NSArray *className = @[@"HotUpdateControl",@"ZFJViewController",@"",@""];  
  12.         NSArray *classType = @[@"NSObject",@"UIViewController",@"",@""];  
  13.         NSArray *downUrl   = @[  
  14.                                @"http://7xqdun.com1.z0.glb.clouddn.com/HotMudel.framework.zip",  
  15.                                @"http://7xqdun.com1.z0.glb.clouddn.com/FunctionZFJ1.framework.zip",  
  16.                                @"",  
  17.                                @""];  
  18.         NSMutableArray *functionArr = [[NSMutableArray alloc]init];  
  19.         for (int i = 0; i<titleArr.count; i++) {  
  20.             NSMutableDictionary *dict = [[NSMutableDictionary alloc]init];  
  21.             [dict setObject:titleArr[i] forKey:@"name"];  
  22.             [dict setObject:className[i] forKey:@"classname"];  
  23.             [dict setObject:classType[i] forKey:@"classtype"];  
  24.             [dict setObject:@(i) forKey:@"mid"];  
  25.             [dict setObject:@"0" forKey:@"isopen"];//0 未開(kāi)啟  1開(kāi)啟了  
  26.             [dict setObject:downUrl[i] forKey:@"downurl"];  
  27.             [functionArr addObject:dict];  
  28.         }  
  29.         [USER_DEFAULT setObject:functionArr forKey:@"functionList"];  
  30.         [USER_DEFAULT synchronize];  
  31.     }  
  32.       
  33.     DynamicViewController *dvc = [[DynamicViewController alloc]init];  
  34.     UINavigationController *nvc = [[UINavigationController alloc]initWithRootViewController:dvc];  
  35.     self.window.rootViewController = nvc;  
  36.       
  37.     return YES;  
  38. }  

2.展示功能列表

在功能列表主要用于展示所有打開(kāi)過(guò)的功能,也就是isopen為1的所有功能;
a.獲取本地所有打開(kāi)的數(shù)據(jù),然后在tableview上顯示
  1. - (void)getDataBase{  
  2.     [self.dataArray removeAllObjects];  
  3.     NSArray *functionList = [USER_DEFAULT objectForKey:@"functionList"];  
  4.     for (NSDictionary *dict in functionList) {  
  5.         NSInteger isopen = [dict[@"isopen"] integerValue];  
  6.         if(isopen==1){  
  7.             [self.dataArray addObject:dict];  
  8.         }  
  9.     }  
  10.     [self.tableview reloadData];  
  11. }  

b.點(diǎn)擊對(duì)于的tableviewcell 的時(shí)候跳轉(zhuǎn)對(duì)應(yīng)的framework讀取出來(lái)的方法
注意,我將不同的framework存放在不同的文件夾下,以mid作為區(qū)分;
  1. - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{  
  2.     [tableView deselectRowAtIndexPath:indexPath animated:YES];  
  3.     NSDictionary *dict = self.dataArray[indexPath.row];  
  4.     //獲取framework的路徑名,我已mid區(qū)分  
  5.     NSString *destinationPath = [NSHomeDirectory() stringByAppendingString:[NSString stringWithFormat:@"/Documents/FunctionZFJ%@",dict[@"mid"]]];  
  6.     NSArray* arrFramework = [self getFilenamelistOfType:@"framework" fromDirPath:destinationPath];  
  7.     NSString *bundlePath = [NSString stringWithFormat:@"%@/%@",destinationPath,[arrFramework lastObject]];  
  8.     if (![[NSFileManager defaultManager] fileExistsAtPath:bundlePath]) {  
  9.         NSLog(@"文件不存在");  
  10.         return;  
  11.     }  
  12.       
  13.     NSBundle *bundle = [NSBundle bundleWithPath:bundlePath];  
  14.     if (!bundle || ![bundle load]) {  
  15.         NSLog(@"bundle加載出錯(cuò)");  
  16.     }  
  17.       
  18.     NSString *className = dict[@"classname"];  
  19.     NSString *classtype = dict[@"classtype"];  
  20.       
  21.     Class loadClass = [bundle classNamed:className];  
  22.     if (!loadClass) {  
  23.         NSLog(@"獲取失敗");  
  24.         return;  
  25.     }  
  26.       
  27.     if([classtype isEqualToString:@"NSObject"]){  
  28.         NSObject *bundleObj = [loadClass new];  
  29.         NSArray *arrVc = [bundleObj performSelector:@selector(getVcs)];  
  30.         TabController *tvc = [[TabController alloc]initwithVcArray:arrVc];  
  31.         [self.navigationController pushViewController:tvc animated:YES];  
  32.     }else if([classtype isEqualToString:@"UIViewController"]){  
  33.         UIViewController *uvc = (UIViewController *)[loadClass new];  
  34.         [self.navigationController pushViewController:uvc animated:YES];  
  35.     }  
  36. }  

c.效果圖
 

3.更多功能

在這里我們可以打開(kāi)或者關(guān)閉某個(gè)功能;
a.獲取所以功能,包括打開(kāi)或者關(guān)閉狀態(tài)的;然后在tableview上顯示;
  1. <span style="font-size:18px;">#pragma mark - 獲取全部數(shù)據(jù)  
  2. - (void)getDataBase{  
  3.     [self.dataArray removeAllObjects];  
  4.       
  5.     NSArray *functionList = [USER_DEFAULT objectForKey:@"functionList"];  
  6.     NSMutableArray *openYES = [[NSMutableArray alloc]init];  
  7.     NSMutableArray *openNO = [[NSMutableArray alloc]init];  
  8.     for (NSDictionary *dict in functionList) {  
  9.         NSMutableDictionary *muDict = [[NSMutableDictionary alloc]initWithDictionary:dict];  
  10.         NSInteger isopen = [muDict[@"isopen"] integerValue];  
  11.         if(isopen==1){  
  12.             //已經(jīng)打開(kāi)的功能  
  13.             [openYES addObject:muDict];  
  14.         }else{  
  15.             //沒(méi)有打開(kāi)的功能  
  16.             [openNO addObject:muDict];  
  17.         }  
  18.     }  
  19.       
  20.     [self.dataArray addObject:openNO];  
  21.     [self.dataArray addObject:openYES];  
  22.       
  23.     [self.tableview reloadData];  
  24. }</span>  

b.打開(kāi)功能
打開(kāi)某個(gè)功能就是下載對(duì)應(yīng)的framework,把下載下來(lái)的zip包進(jìn)行解壓一下然后獲取到framework,接著刪除zip包,把framework放在對(duì)于的目錄下;最后改變本地列表功能的狀態(tài);
  1. <span style="font-size:18px;">#pragma mark - 開(kāi)啟某個(gè)功能 先下載數(shù)據(jù)  
  2. - (void)SSZipArchiveDataBaseWithDict:(NSMutableDictionary *)dict{  
  3.     NSString *requestURL = dict[@"downurl"];  
  4.     if(requestURL==nil || requestURL.length==0){  
  5.         self.progresslabel.text = [NSString stringWithFormat:@"%@-沒(méi)有下載地址,不能開(kāi)啟!",dict[@"name"]];  
  6.         UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"提示" message:@"沒(méi)有下載地址,不能開(kāi)啟" preferredStyle:UIAlertControllerStyleAlert];  
  7.         UIAlertAction *sureBtn = [UIAlertAction actionWithTitle:@"確定" style:UIAlertActionStyleDefault handler:nil];  
  8.         [alertController addAction:sureBtn];  
  9.         [self presentViewController:alertController animated:YES completion:nil];  
  10.         return;  
  11.     }  
  12.     //下載保存的路徑  
  13.     NSString *savedPath = [NSHomeDirectory() stringByAppendingString:[NSString stringWithFormat:@"/Documents/FunctionZFJ%@.framework.zip",dict[@"mid"]]];  
  14.     AFHTTPRequestSerializer *serializer = [AFHTTPRequestSerializer serializer];  
  15.     NSMutableURLRequest *request = [serializer requestWithMethod:@"POST" URLString:requestURL parameters:nil error:nil];  
  16.     AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc]initWithRequest:request];  
  17.     [operation setOutputStream:[NSOutputStream outputStreamToFileAtPath:savedPath append:NO]];  
  18.     [operation setDownloadProgressBlock:^(NSUInteger bytesRead, long long totalBytesRead, long long totalBytesExpectedToRead) {  
  19.         float progress = (float)totalBytesRead / totalBytesExpectedToRead;  
  20.         self.progresslabel.text = [NSString stringWithFormat:@"%@下載進(jìn)度:%.2f",dict[@"name"],progress];  
  21.     }];  
  22.     [operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {  
  23.         NSLog(@"下載成功");  
  24.         NSString *destinationPath = [NSHomeDirectory() stringByAppendingString:[NSString stringWithFormat:@"/Documents/FunctionZFJ%@",dict[@"mid"]]];  
  25.         //對(duì)下載下來(lái)的ZIP包進(jìn)行解壓  
  26.         BOOL isScu = [SSZipArchive unzipFileAtPath:savedPath toDestination:destinationPath];  
  27.         if(isScu){  
  28.             NSLog(@"解壓成功");  
  29.             NSFileManager *fileMgr = [NSFileManager defaultManager];  
  30.             BOOL bRet = [fileMgr fileExistsAtPath:savedPath];  
  31.             if (bRet) {  
  32.                 [fileMgr removeItemAtPath:savedPath error:nil];//解壓成功后刪除壓縮包  
  33.             }  
  34.             [dict setValue:@"1" forKey:@"isopen"];  
  35.             [self updataBaseWithDict:dict];//解壓成功后更新本地功能列表狀態(tài)  
  36.         }else{  
  37.             NSLog(@"解壓失敗 --- 開(kāi)啟失敗");  
  38.         }  
  39.           
  40.     } failure:^(AFHTTPRequestOperation *operation, NSError *error) {  
  41.         NSLog(@"下載失敗 --- 開(kāi)啟失敗");  
  42.           
  43.     }];  
  44.     [operation start];  
  45. }  
  46. </span>  
更新本地?cái)?shù)據(jù)
  1. <span style="font-size:18px;">#pragma mark - 更新本地?cái)?shù)據(jù)  
  2. - (void)updataBaseWithDict:(NSMutableDictionary *)dict{  
  3.     NSInteger mid = [dict[@"mid"] integerValue];  
  4.     NSMutableArray *functionList = [USER_DEFAULT objectForKey:@"functionList"];  
  5.     NSMutableArray *dataArr = [[NSMutableArray alloc]initWithArray:functionList];  
  6.     [dataArr replaceObjectAtIndex:mid withObject:dict];  
  7.     [USER_DEFAULT setObject:dataArr forKey:@"functionList"];  
  8.     BOOL isScu = [USER_DEFAULT synchronize];  
  9.     if(isScu){  
  10.         [self getDataBase];//重新獲取數(shù)據(jù) 更新列表  
  11.         if(self.refreshData){  
  12.             self.refreshData();  
  13.         }  
  14.     }else{  
  15.         NSLog(@"c操作失敗");  
  16.     }  
  17. }  
  18. </span>  
c.關(guān)閉功能
關(guān)閉某個(gè)功能,也就是刪除某個(gè)功能的framework,然后更改功能列表的狀態(tài);
  1. <span style="font-size:18px;">#pragma mark - 關(guān)閉某個(gè)功能  
  2. - (void)delectFunctionZFJWithDict:(NSMutableDictionary *)dict{  
  3.     NSFileManager *fileMgr = [NSFileManager defaultManager];  
  4.     NSString *savedPath = [NSHomeDirectory() stringByAppendingString:[NSString stringWithFormat:@"/Documents/FunctionZFJ%@",dict[@"mid"]]];  
  5.     BOOL bRet = [fileMgr fileExistsAtPath:savedPath];  
  6.     if (bRet) {  
  7.         NSError *err;  
  8.         //關(guān)閉某個(gè)功能 就是刪除本地的framework  然后修改本地功能狀態(tài)  
  9.         BOOL isScu = [fileMgr removeItemAtPath:savedPath error:&err];  
  10.         if(isScu){  
  11.             [dict setValue:@"0" forKey:@"isopen"];  
  12.             [self updataBaseWithDict:dict];  
  13.         }else{  
  14.             NSLog(@"關(guān)閉失敗");  
  15.         }  
  16.     }else{  
  17.         NSLog(@"關(guān)閉失敗");  
  18.     }  
  19. }  
  20. </span>  
 
d.效果圖

四.源代碼

在這里面有,兩個(gè)framework的源代碼,可項(xiàng)目的代碼;
注意,如果有多個(gè)功能的framework,記住多個(gè)framework的命名在同一個(gè)功能里面不能重復(fù),不然調(diào)取失敗;
 

五.效果圖

posted on 2016-11-29 12:37 冬瓜 閱讀(555) 評(píng)論(0)  編輯 收藏 引用 所屬分類: 轉(zhuǎn)貼
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲调教视频在线观看| 免费成人性网站| 亚洲精品在线视频观看| 久久精品日产第一区二区| 久久夜色精品国产噜噜av| 亚洲精品国产精品国产自| 久久精品视频在线免费观看| 欧美一区二区视频97| 欧美中文在线免费| 亚洲国产精品毛片| 日韩亚洲精品视频| 国内精品久久久久影院优| 另类国产ts人妖高潮视频| 国产精品视频成人| 欧美日本久久| 亚洲精品九九| 欧美大片91| 亚洲另类自拍| 妖精成人www高清在线观看| 一本色道**综合亚洲精品蜜桃冫 | 欧美精选在线| 欧美日韩亚洲激情| 国产精品久久久久一区二区| 欧美亚州一区二区三区| 国产色婷婷国产综合在线理论片a| 久久久青草婷婷精品综合日韩 | 日韩一级欧洲| 久久一本综合频道| 亚洲美女淫视频| 久久久久久婷| 国产一区二区三区在线观看免费 | 久久噜噜亚洲综合| 欧美日精品一区视频| 狠狠操狠狠色综合网| 先锋影院在线亚洲| 日韩午夜激情电影| 欧美日韩免费观看一区=区三区| 国外成人在线视频| 欧美主播一区二区三区| 亚洲久久在线| 欧美精品一区二区蜜臀亚洲| 在线观看精品| 久久综合图片| 久久人人97超碰人人澡爱香蕉| 国产精品免费在线| 亚洲一区二区精品| 亚洲午夜在线观看| 国产精品一区视频| 久久中文久久字幕| 老司机久久99久久精品播放免费| 国产日韩精品入口| 久久在线免费观看| 欧美大香线蕉线伊人久久国产精品| 亚洲国产精品精华液网站| 亚洲人成人99网站| 国产精品午夜在线观看| 欧美视频手机在线| 欧美呦呦网站| 欧美jizz19hd性欧美| 夜夜躁日日躁狠狠久久88av| 亚洲无玛一区| 伊人一区二区三区久久精品| 亚洲精品乱码视频| 国产女主播一区二区| 亚洲国产视频a| 国产欧美一区二区精品秋霞影院| 老牛影视一区二区三区| 国产精品久久7| 亚洲午夜久久久久久尤物| 欧美一区二区在线视频| 国产欧美精品一区二区色综合| 欧美色图麻豆| 亚洲精品影院在线观看| 亚洲影院在线观看| 国产亚洲精品久久久久动| 久久综合久久久久88| 99精品欧美一区二区三区综合在线| 亚洲天堂av在线免费观看| 国产一区二区三区在线观看视频| 亚洲中字黄色| 麻豆国产精品va在线观看不卡| 亚洲第一主播视频| 欧美精品亚洲一区二区在线播放| 99热这里只有成人精品国产| 亚洲一区二区三区乱码aⅴ| 国产精品家庭影院| 久久婷婷蜜乳一本欲蜜臀| 亚洲激情在线视频| 欧美一区二区三区播放老司机| 国产精品麻豆欧美日韩ww| 亚洲欧美区自拍先锋| 另类尿喷潮videofree| 亚洲精选久久| 欧美在线免费观看视频| 久久久999精品| 亚洲精品日韩一| 国产一区二区在线免费观看| 欧美日韩直播| 欧美日韩免费高清| 狼人天天伊人久久| 亚洲淫性视频| 欧美不卡视频一区发布| 在线亚洲+欧美+日本专区| 国产美女精品视频免费观看| 欧美激情中文不卡| 老鸭窝亚洲一区二区三区| 欧美在线日韩| 一区二区三区四区五区视频| 欧美黑人一区二区三区| 久久米奇亚洲| 久久久福利视频| 午夜精品视频网站| 亚洲永久免费av| 亚洲一区日韩| 久久国内精品视频| 男女激情视频一区| 亚洲日本理论电影| 久久久久久久精| 欧美日韩精品系列| 91久久线看在观草草青青| 午夜精品久久久99热福利| 亚洲宅男天堂在线观看无病毒| 在线一区欧美| 欧美a级片网| 在线视频你懂得一区| 欧美成人精品不卡视频在线观看| 欧美成人乱码一区二区三区| 国产精品日本精品| 亚洲国产mv| 久久久久久久一区| 亚洲国产视频a| 欧美一区亚洲一区| 欧美激情免费在线| 国产一区二区三区黄视频| 久久久精品网| 国产麻豆综合| 99精品国产在热久久婷婷| 午夜视频一区二区| 一区二区三区日韩精品视频| 欧美激情亚洲| 在线亚洲精品| 国产精品私拍pans大尺度在线| 午夜激情久久久| 亚洲视频在线一区观看| 国产精品久久久久久久久久妞妞 | 欧美日韩国产首页| 一个色综合导航| 久久精品国产亚洲aⅴ| 99精品视频免费观看| 亚洲国产高清aⅴ视频| 欧美一区二区免费视频| 一区二区三区精品国产| 欧美成人午夜激情视频| 国产精品国产福利国产秒拍| 国内久久婷婷综合| 99精品久久久| 亚洲精品国产精品乱码不99| 久久精品人人做人人爽电影蜜月| 国产日韩精品在线| 亚洲男人第一av网站| 一本综合久久| 欧美精品一区二区三| 亚洲欧洲av一区二区| 另类春色校园亚洲| 国内精品免费在线观看| 久久国产天堂福利天堂| 亚洲另类在线视频| 久久精品中文字幕免费mv| 免费成人黄色av| 亚洲一区二区精品在线| 亚洲缚视频在线观看| 国产精品久久久久久久久| 久久亚洲综合色| 亚洲欧美日韩中文视频| 亚洲欧美另类中文字幕| 亚洲电影免费观看高清| 国产女优一区| 久久久久欧美精品| 亚洲网站视频福利| 欧美视频在线一区| 亚洲天堂av在线免费观看| 亚洲第一黄网| 欧美一区亚洲| 国产一区二区三区日韩| 欧美jizz19性欧美| 日韩视频永久免费观看| 国产精品色一区二区三区| 久久精品国产一区二区三区免费看| 亚洲国产精品免费| 欧美亚洲在线播放| 亚洲精品乱码久久久久久黑人 | 亚洲成色www8888| 亚洲一区日韩| 亚洲人成在线观看一区二区 | 久久久欧美一区二区| 一本久久知道综合久久| 91久久精品一区二区别| 久久久综合精品| 香蕉成人啪国产精品视频综合网| 1024亚洲|