精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Titanium中Android模塊開發:移植到1.8版本上

移動開發 Android
伴隨著Titanium Mobile 1.8.0.1的發布, 對于Android的支持改變成支持多個Javascript引擎(V8和Rhino). 這個變化也影響了很多的APIs和第三方modules. 盡管平臺的變化, 大多數內部module需要修改的地方也就是簡單的方法標記,類型重命名, import 位置。

官方地址:Android Module Porting Guide for 1.8.0.1

概要

伴隨著Titanium Mobile 1.8.0.1的發布, 對于Android的支持改變成支持多個Javascript引擎(V8和Rhino). 這個變化也影響了很多的APIs和第三方modules. 盡管平臺的變化, 大多數內部module需要修改的地方也就是簡單的方法標記,類型重命名, import 位置。

Manifest變化

開發在Titanium Mobile 1.8.0.1 (或者更高)的第三方modules需要在module manifest中設置一個新的屬性:apiversion,值為2.

引用

apiversion: 2

如果你創建一個新的第三方module的話,Titanium Mobile 1.8.0.1會為你的工程自動生成這個屬性,但是,如果是已經有的工程的話,你需要手動的添加這個屬性,而且確保你重新編譯你的module(參照下邊的Build變化):

引用

$ ant clean && ant

Build變化

為了能使用新的V8引擎,所有的第三方Module都需要Android NDK來編譯V8,可以從Google下載獲取最新的NDK::

http://developer.android.com/sdk/ndk/index.html

編譯Module之前,需要設置環境變量ANDROID_NDK:

引用

$ export ANDROID_NDK=/path/to/android-ndk

$ ant

當然,你也可以在build.properties中設置android.ndk屬性:

引用

android.ndk=/path/to/android-ndk

你還得更新你的build.properties文件(如果使用Eclipse的話也要更新.classpath文件)來引用Titanium Mobile 1.8.0.1 和 API level 8 或者更高::

引用

titanium.sdk=/Library/Application\ Support/Titanium/

titanium.os=osx

titanium.version=1.8.0.1

android.sdk=/usr/android-sdk

titanium.platform=${titanium.sdk}/mobilesdk/${titanium.os}/${titanium.version}/android

android.platform=${android.sdk}/platforms/android-8

google.apis=${android.sdk}/add-ons/addon_google_apis_google_inc_8

基本變化

1. Remove TiContext.

TiContext is being replaced, and any implementation utilizing TiContext will take a performance / stability hit compared to using the desired API's directly.

In most of the places where TiContext is used as an argument, the TiContext argument can be removed entirely or replaced with an Activity reference.

Example:

Js代碼

  1. TiDrawableReference.fromUrl(proxy.getTiContext(), tiImage)

becomes:

Js代碼

  1. TiDrawableReference.fromUrl(proxy.getActivity(), tiImage)

In the specific case of fromUrl, the following form can also be used:

Js代碼

  1. TiDrawableReference.fromUrl(proxy, tiImage)

The specific alternative varies based on which API point is being modified, but generally there is a very simple alternative that can be used.

2. Use KrollFunction instead of KrollCallback

KrollFunction has been added, and KrollCallback has been removed; The dual runtime change required a common interface to be defined to replace KrollCallback.

In most cases, a direct replacement of KrollCallback with KrollFunction should suffice.

主要變化

Known compatibility points that need to be changed:

1. Remove KrollInvocation as a method argment.

Example:

Js代碼

  1. @Kroll.method
  2. public void myMethod(final KrollInvocation invocation, KrollDict args)

becomes:

Js代碼

  1. @Kroll.method
  2. public void myMethod(KrollDict args)

2. Remove TiContext from your module constructor. super(TiContext) will no longer work due to the previously mentioned TiContext change. In most if not all cases, simply removing the argument will address the problem.

Example:

Js代碼

  1. public BoxModule(TiContext context) {
  2. super(context);
  3. }

becomes:

Js代碼

  1. public BoxModule() {
  2. super();
  3. }

3. When replacing KrollCallback with KrollFunction, you need to to pass a KrollObject argument to the call and callAsync methods.

Example:

Js代碼

  1. KrollCallback success = (KrollCallback)args.get("success");
  2. ...
  3. success.callAsync(event);

becomes:

Js代碼

  1. KrollFunction success = (KrollFunction)args.get("success");
  2. ...
  3. success.callAsync(proxy.getKrollObject(), event);

4. Change getView() on a TiViewProxy to getOrCreateView()/

Example:

Js代碼

  1. View view = myViewProxy.getView();

becomes:

S代碼

  1. View view = myViewProxy.getOrCreateView();

5. Change TiDrawableReference.fromUrl(proxy.getTiContext(), tiImage) to TiDrawableReference.fromUrl(proxy.getActivity(), tiImage) due to the TiContext change. Same applies to all the "from<source>" methods in TiDrawableReference.

Example:

Js代碼

  1. TiDrawableReference ref = TiDrawableReference.fromBlob(context, blob);

becomes:

Js代碼

  1. TiDrawableReference ref = TiDrawableReference.fromBlob(getActivity(), blob);

6. <KrollInvocation>.getActivity() no longer exists. getActivity can be called on each proxy to get the activity for that proxy or TiApplication.getAppCurrentActivity() and TiApplication.getAppRootActivity() can be used for getting activity instances to work with. In general, system services, etc., can and should use the root activity if it exists. TiApplication.getRootOrCurrentActivity() will serve this purpose in the vast majority of situations.

Example:

Js代碼

  1. Activity activity = invocation.getActivity();

becomes:

Js代碼

  1. Activity activity = TiApplication.getAppRootOrCurrentActivity();

7. Calling addOnLifeCycleEvent on a module is no longer necessary. Modules are now automatically registered to receive the lifecycle events (onPause, onResume, onStart, onStop, and onDestroy).

8. <KrollEventManager>.addOnEventChangeListener() is no longer supported. The new mechanism for this is to override KrollProxy.eventListenerAdded, and move the code from the listenerAdded method into the overridden eventListenerAdded method after the call to super.eventListenerAdded.

Example:

Js代碼

  1. @Override
  2. public void eventListenerAdded(String type, int count, KrollProxy proxy)
  3. {
  4. super.eventListenerAdded(type, count, proxy);
  5.  
  6. // this is the logic that used to live inside the listenerAdded() method
  7. if (MY_CUSTOM_EVENT.equals(type)) {
  8. invokeMyCustomMethod();
  9. }
  10. }

9. resolveUrl has been moved to the proxy object.

Example:

Js代碼

  1. _proxy.getTiContext().resolveUrl(url);

becomes:

Js代碼

  1. _proxy.resolveUrl(url);

10. Change getModuleById to getModuleByName and specify the module name in the module constructor. By default the module cannot be found by calling getModuleByName. You must use the form of super() in the module constructor that allows you to specify the module name.

Example:

Js代碼

  1. public myModule(TiContext tiContext) {
  2. super(tiContext);
  3. }
  4. ...
  5. TiApplication appContext = TiApplication.getInstance();
  6. MyModule myModule =(MyModule)appContext.getModuleById("ti.mymodule");

becomes:

Js代碼

  1. public myModule() {
  2. super("mymodule");
  3. }
  4. ...
  5. TiApplication appContext = TiApplication.getInstance();
  6. MyModule myModule = (MyModule)appContext.getModuleByName("mymodule");

11. <TiContext>.getAndroidContext() no longer exists. If the ContextWrapper returned originally is being used to access system or app level resources, use TiApplication.getInstance() or TiApplication.getInstance().getApplicationContext() instead. To get the ContextWrapper for the top most Activity, use TiApplication.getAppCurrentActivity() instead.

Example:

Js代碼

  1. myFunction(context.getAndroidContext());

becomes:

Js代碼 <

  1. myFunction(TiApplication.getInstance().getApplicationContext());

12. getContext() on a TiProxy no longer exists because its purpose was to return a TiContext instance. This call should no longer be needed in module implementation once TiContext is no longer being passed in as an argument (the normal use case for this method).

Example:

Js代碼

  1. Context context = proxy.getContext();

becomes:

Js代碼

  1. Context context = TiApplication.getInstance().getApplicationContext();

13. Remove context from TiFileFactory.createTitaniumFile.

Example:

Js代碼

  1. TiBaseFile file = TiFileFactory.createTitaniumFile(context, fileURL, false);

becomes:

Js代碼

  1. TiBaseFile file = TiFileFactory.createTitaniumFile(fileURL, false);

14. getChangeDir is now called on the TiApplication instance.

Example:

Js代碼

  1. _proxy.getContext().getCacheDir()

becomes:

Js代碼

  1. TiApplication.getInstance().getCacheDir()

15. Overriding the fireEvent method requires a change to the method signature. The argument has changed from a KrollDict class to an Object.

Example:

Js代碼

  1. @Override
  2. public boolean fireEvent(String eventName, KrollDict data) {
  3. ...
  4. }

becomes:

Js代碼

  1. @Override
  2. public boolean fireEvent(String eventName, Object data) {
  3. ...
  4. }

16. <KrollInvocation>.getTiContext() no longer exists. TiContext is no longer needed. Some examples show this being used to get the TiApplication instance. TiApplication.getInstance() can be used instead.

17. Change usage of KrollDict in method signatures to HashMap. Dictionary values are now passed to methods as HashMap objects. If you need to access any of the KrollDict methods on the HashMap object you can create a KrollDict object from the HashMap object.

Example:

Js代碼

  1. public void myMethod(KrollInvocation invocation, KrollDict args)
  2. {
  3. TiBlob blob = (TiBlob) args.get("image");
  4. int myId = args.getInt("id);

becomes:

Js代碼

  1. public void myMethod(HashMap args) {
  2. KrollDict argsDict = new KrollDict(args);
  3. TiBlob blob = (TiBlob) args.get("image");
  4. int myID = argsDict.getInt("id");

18. runOnUiThread is no longer supported. You must explicitly manage and call your methods on the UI thread where necessary. Specifically, you can use the TiMessenger class to run code on the UI thread.

Example:

Js代碼

  1. @Kroll.method(runOnUiThread = true)
  2. public void refresh() {
  3. if (_view != null)
  4. _view.refresh();
  5. }

becomes:

Js代碼

  1. private static final int MSG_REFRESH = 50000;
  2. private final Handler handler = new Handler(TiMessenger.getMainMessenger().getLooper(), new Handler.Callback ()
  3. {
  4. public boolean handleMessage(Message msg)
  5. {
  6. switch (msg.what) {
  7. case MSG_REFRESH: {
  8. AsyncResult result = (AsyncResult) msg.obj;
  9. handleRefresh();
  10. result.setResult(null);
  11. return true;
  12. }
  13. }
  14. return false;
  15. }
  16. });
  17.  
  18. private void handleRefresh()
  19. {
  20. _view.refresh();
  21. }
  22.  
  23. @Kroll.method
  24. public void refresh() {
  25. if (_view != null) {
  26. if (!TiApplication.isUIThread()) {
  27. TiMessenger.sendBlockingMainMessage(handler.obtainMessage(MSG_REFRESH));
  28. } else {
  29. handleRefresh();
  30. }
  31. }
  32. }
責任編輯:佚名 來源: rensanning的博客
相關推薦

2012-05-18 11:12:09

TitaniumMetro UIiOS

2012-05-18 10:08:56

TitaniumAndroid

2012-05-18 11:16:42

@Kroll注解詳解TitaniumAndroid模塊

2012-05-18 10:52:20

TitaniumAndroid模塊自定義View模塊

2011-01-13 14:19:41

solarisLinux

2009-04-25 08:52:54

AndroidGoogle移動OS

2011-10-19 20:54:18

Linux MintGNOME 3

2010-03-03 16:31:42

Android SDK

2012-11-16 09:50:32

Windbg

2009-12-30 13:57:04

Ubuntu Moon

2012-04-20 11:07:12

Titanium

2019-09-18 18:26:05

2012-02-14 09:33:14

Titanium MoTitaniumUbuntu 10.0

2012-03-06 13:45:43

JavaJActor

2010-06-08 09:45:27

openSUSE 11

2012-05-07 23:45:54

FantomJavaJVM

2012-05-18 20:30:19

微軟 Android ap

2011-03-22 16:23:31

Firefox 4.0升級

2012-10-18 09:19:29

AppCan 2.0AppCan

2012-02-14 09:59:39

Titanium MoTitaniumMac
點贊
收藏

51CTO技術棧公眾號

亚洲人成免费电影| 成人看片毛片免费播放器| 国产麻豆精品在线观看| 欧美黑人一级爽快片淫片高清| 无码人妻一区二区三区免费n鬼沢| 后进极品白嫩翘臀在线播放| 91蜜桃视频在线| 国产精品主播视频| 欧美日韩中文视频| 日韩av有码| 亚洲国产欧美一区二区丝袜黑人 | 2019中文字幕在线观看| 中文字幕网站在线观看| 日本精品视频| 在线观看中文字幕不卡| 欧美这里只有精品| 国产黄色在线| 成人一区二区三区中文字幕| 国产精品中文字幕在线| 久久久久久久久久久久久久av| 日韩久久精品网| 亚洲黄页视频免费观看| 九九九九九九九九| 国偷自产一区二区免费视频| 亚洲精品日韩专区silk| 日本在线观看一区二区三区| 成人黄色免费视频| 六月丁香婷婷色狠狠久久| 午夜精品美女自拍福到在线| 一区二区国产精品精华液| 国产一区二区三区四区五区| 亚洲福利在线播放| 亚洲一区精品视频在线观看| 成人性教育av免费网址| 亚洲一区自拍偷拍| 强开小嫩苞一区二区三区网站 | 中文文字幕一区二区三三| 日韩视频精品在线观看| 美乳少妇欧美精品| 三级在线观看免费大全| 色综合狠狠操| 日韩中文字幕国产| 一级特黄曰皮片视频| 免费一区二区| 亚洲精品自在久久| 国产肉体xxxx裸体784大胆| 97se亚洲| 精品第一国产综合精品aⅴ| 亚欧精品在线视频| 精品入口麻豆88视频| 在线播放91灌醉迷j高跟美女| 小泽玛利亚视频在线观看| 日韩在线短视频| 欧洲一区在线电影| 91插插插插插插插插| 成人网ww555视频免费看| 色婷婷香蕉在线一区二区| 欧美私人情侣网站| 综合在线影院| 欧美午夜片在线看| 色天使在线观看| 电影一区二区三区久久免费观看| 欧美色视频在线| 一区二区xxx| 成年永久一区二区三区免费视频| 欧美欧美午夜aⅴ在线观看| av网站在线不卡| 国产精品毛片aⅴ一区二区三区| 91精品国产91热久久久做人人| 天天操夜夜操很很操| 亚洲高清999| 亚洲激情第一页| 日本xxx在线播放| 精品国产一区二区三区| 亚洲裸体xxxx| 中文字幕91视频| 欧美福利专区| 欧美一区二粉嫩精品国产一线天| 色老头在线视频| 国内成+人亚洲+欧美+综合在线 | 欧美日韩一区二区三区69堂| 伊人久久一区| 亚洲精品一区二区三区蜜桃下载| 日本japanese极品少妇| 成人羞羞网站入口免费| 欧美乱大交xxxxx| 亚洲黄色三级视频| 精品一区二区三区欧美| 动漫精品视频| 成年人视频网站在线| 亚洲视频香蕉人妖| 国产中文字幕免费观看| 素人啪啪色综合| 欧美精品一区视频| 99久久99久久精品免费| 国产精品v欧美精品v日本精品动漫| 97国产精品人人爽人人做| 中日精品一色哟哟| 高清免费成人av| 亚洲一区bb| 在线黄色的网站| 欧美一区二区三区人| 成人片黄网站色大片免费毛片| 91影院成人| 青青青国产精品一区二区| 国产一区二区三区三州| 91在线观看下载| 日本女人高潮视频| 欧美色网在线| 日韩经典中文字幕| 日本妇女毛茸茸| 奇米精品一区二区三区四区| 国产精品视频免费观看| 老司机精品视频在线观看6| 欧美性猛交丰臀xxxxx网站| 国产高清一区视频| 男人天堂综合| 一区二区三区四区不卡视频| 一级特黄性色生活片| 精品网站aaa| 欧美成人在线网站| 国产天堂第一区| 99国产精品久久久久久久久久| 91社在线播放| 丁香久久综合| 亚洲天堂av在线免费| 精品亚洲永久免费| 国产老肥熟一区二区三区| 日韩妆和欧美的一区二区| 91色在线看| 欧美不卡在线视频| 亚洲伦理一区二区三区| 日本不卡一二三区黄网| 明星裸体视频一区二区| rebdb初裸写真在线观看| 日韩一区二区三区免费观看| 男人av资源站| 久久国产剧场电影| 亚洲精品在线视频观看| 国模套图日韩精品一区二区| 精品无人区太爽高潮在线播放| 好吊色视频在线观看| 国产一区亚洲一区| 偷拍盗摄高潮叫床对白清晰| 国产成人精品一区二区三区在线| 国产亚洲精品久久久久久牛牛| 青青青国产在线| 久久嫩草精品久久久精品一| 国产亚洲综合视频| 亚洲品质自拍| 国产不卡av在线免费观看| 久久精品国产亚洲a∨麻豆| 欧美色道久久88综合亚洲精品| 国产性生活毛片| 亚洲一区二区网站| 欧美精品七区| 99精品在免费线偷拍| 在线播放日韩精品| 亚洲专区在线播放| 中文字幕日韩一区二区| 亚洲黄色av片| 欧美日韩视频一区二区三区| 国产精品一区二区av| www在线看| 亚洲欧美日韩国产中文| 波多野结衣电影在线播放| 国产精品免费丝袜| 网站在线你懂的| 欧美日韩精品免费观看视频完整| 国严精品久久久久久亚洲影视 | 亚洲自拍小视频免费观看| 污污网站在线观看| 日韩精品免费综合视频在线播放| 无码人妻精品一区二区三区蜜桃91 | 日韩福利视频一区| 国内揄拍国内精品少妇国语| 亚洲欧美日本在线观看| 色成年激情久久综合| 欧美自拍偷拍网| 国产精品一二三四| 波多野结衣家庭教师在线| 精品国精品国产自在久国产应用| 国产精品欧美日韩| 亚洲欧美成人影院| 国产视频久久久久| 91片黄在线观看喷潮| 亚洲午夜电影网| 欧美三级视频网站| 国产成人亚洲综合a∨猫咪| 成人毛片视频网站| 久久一区91| 精品产品国产在线不卡| 四虎影视国产精品| 亚洲91精品在线观看| 免费在线看a| 亚洲国产精品久久久久| 三级网站在线播放| 一区二区三区四区五区视频在线观看| 中文在线一区二区三区| 久久国产麻豆精品| 亚洲中文字幕无码专区| 婷婷综合网站| 欧美一区二区影视| 一区二区日韩| 国产日本欧美一区二区三区在线| 超碰99在线| 久久精品视频在线观看| 欧美大片aaa| 日韩一卡二卡三卡四卡| 久久影视中文字幕| 亚洲国产精品久久人人爱蜜臀| 欧美另类69xxxx| 91视频91自| 亚洲少妇一区二区| 久久99精品国产.久久久久| 成年人视频观看| 中文精品久久| 一区二区不卡在线观看| 在线日韩网站| 国产一级特黄a大片99| 韩国一区二区三区视频| 国产精品久久一区主播| av日韩电影| 97视频免费在线观看| av网址在线免费观看| 在线精品播放av| 加勒比一区二区三区在线| 亚洲高清不卡av| 亚洲高清视频网站| 欧美一区二区三区不卡| 91麻豆国产视频| 欧美久久久久久久久| 亚洲 小说区 图片区| 色老头久久综合| 成人午夜视频在线播放| 午夜精品福利一区二区三区av| 欧美日韩精品在线观看视频 | 日本精品人妻无码77777| 国产女同互慰高潮91漫画| 久久精品无码一区| 久久久高清一区二区三区| 免费无码一区二区三区| 91看片淫黄大片一级| 国产老熟女伦老熟妇露脸| www.爱久久.com| 中文字幕在线播放视频| 99精品视频在线免费观看| 奇米777第四色| 99久久精品国产导航| 久久无码人妻精品一区二区三区| 91丨九色丨黑人外教| 欧美一级片黄色| 91在线观看地址| 精品人妻无码一区二区三区换脸| 国产偷国产偷精品高清尤物| 波多野结衣av在线观看| 国产午夜精品美女毛片视频| 摸摸摸bbb毛毛毛片| 欧美经典一区二区| 看黄色录像一级片| 亚洲免费观看高清完整| 劲爆欧美第一页| 黄色精品一区二区| 波多野结衣家庭主妇| 欧美性猛片xxxx免费看久爱| 一二三四区视频| 91精品国产综合久久精品app | 好看的av在线| 色婷婷亚洲婷婷| 国产又大又长又粗| 精品成人私密视频| 人人九九精品| 日韩中文字幕在线免费观看| 中文字幕伦理免费在线视频| 欧美精品videos| 激情开心成人网| 91欧美精品午夜性色福利在线| 伊人久久影院| 欧洲亚洲一区| 一区二区三区四区在线观看国产日韩| 2019日韩中文字幕mv| 久久精品国产清高在天天线| 亚洲va综合va国产va中文| 成人小视频在线观看| 一区二区三区伦理片| 亚洲色图欧洲色图| 日韩久久中文字幕| 制服丝袜亚洲色图| 四虎影院在线播放| 俺去亚洲欧洲欧美日韩| 9765激情中文在线| 国产精品久久久久久久久久免费| 国产95亚洲| 欧美激情第六页| 欧美va天堂| 成年人免费大片| 成人国产亚洲欧美成人综合网| 亚洲av无码一区二区三区人| 亚洲精品成人精品456| 欧美一级淫片免费视频黄| 日韩一级成人av| bbbbbbbbbbb在线视频| 久久久噜噜噜久久中文字免| 国产极品嫩模在线观看91精品| 国产欧美韩日| 欧美精品九九| 狠狠操狠狠干视频| 久久久精品天堂| 国产小视频在线看| 欧美精品tushy高清| 欧美大片aaa| 97婷婷大伊香蕉精品视频| 99精品国产九九国产精品| 日本一区二区在线视频观看| 伊人久久婷婷| 亚洲欧美日韩中文字幕在线观看| 欧美激情一区二区三区蜜桃视频| 国内免费精品视频| 日韩精品专区在线影院重磅| 在线免费看黄| 国产精品久久久久影院日本| 欧美美女啪啪| 99在线免费视频观看| 国产福利不卡视频| 老熟妻内射精品一区| 欧美日韩mp4| 成人网视频在线观看| 日本久久久久久久久| 林ゆな中文字幕一区二区| 日本大片免费看| 国产成人精品亚洲日本在线桃色| 亚洲一二三在线观看| 91高清视频在线| 国产香蕉视频在线看| 国产91久久婷婷一区二区| 香蕉久久精品| 久草青青在线观看| 久久―日本道色综合久久| 日韩不卡在线播放| 亚洲欧美国产一区二区三区| 欧美三级网站| 欧美日韩在线观看一区二区三区| 日韩午夜av在线| 免费成人蒂法网站| 婷婷六月综合亚洲| 欧美18xxxxx| 国产精品久久电影观看| 欧美日韩精品一区二区视频| 亚洲 中文字幕 日韩 无码| 国产性色一区二区| 精品国产青草久久久久96| 一夜七次郎国产精品亚洲| 国产精品美女午夜爽爽| 一区二区三区国产福利| 国产中文一区二区三区| 国产成人无码aa精品一区| 欧美变态tickling挠脚心| 9999在线视频| 欧美日韩亚洲免费| 蜜臀av性久久久久蜜臀aⅴ | 亚洲精品一区二区妖精| 欧美性受xxxxxx黑人xyx性爽| 亚洲视频一二三区| 黄色av网站免费在线观看| 88xx成人精品| 欧美色婷婷久久99精品红桃| 最新免费av网址| 亚洲一区在线观看免费| 色视频精品视频在线观看| 国产精品久久久久9999| 天天插综合网| 成人在线电影网站| 色噜噜狠狠一区二区三区果冻| 日本免费中文字幕在线| 91亚洲精品丁香在线观看| 国产一区二区三区久久| 老头老太做爰xxx视频| 亚洲国产中文在线| 中文字幕免费高| av中文字幕在线不卡| 国产乡下妇女三片| 久久综合88中文色鬼| 欧美日韩另类图片| 亚洲精品手机在线观看| 亚洲成av人综合在线观看| 成人亚洲性情网站www在线观看| 成人欧美一区二区三区黑人| 影音先锋久久精品| 久久免费手机视频| 精品国产一区二区三区av性色 | 99re久久精品国产| 欧美视频一区在线| av免费不卡| 一区二区三区|亚洲午夜| av一区二区不卡| 国产精品-色哟哟| 国产激情综合五月久久| 欧美日韩国产高清| 手机免费观看av| 亚洲精品国产品国语在线|