亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > Android > 正文

深入AndroidManifest.xml文件解析詳解

2020-04-11 12:26:05
字體:
來源:轉載
供稿:網友

一、關于AndroidManifest.xml

AndroidManifest.xml 是每個android程序中必須的文件。它位于整個項目的根目錄,描述了package中暴露的組件(activities, services, 等等),他們各自的實現類,各種能被處理的數據和啟動位置。 除了能聲明程序中的Activities, ContentProviders, Services, 和Intent Receivers,還能指定permissions和instrumentation(安全控制和測試)

二、AndroidManifest.xml結構
<?xmlversion="1.0"encoding="utf-8"?>
<manifest>
    <application>
       <activity>
           <intent-filter>
               <action/>
               <category/>
           </intent-filter>
      </activity>
       <activity-alias>
           <intent-filter></intent-filter>
           <meta-data/>
      </activity-alias>
       <service>
           <intent-filter></intent-filter>
           <meta-data/>
       </service>
       <receiver>
           <intent-filter></intent-filter>
           <meta-data/>
       </receiver>
       <provider>
           <grant-uri-permission/>
           <meta-data/>
       </provider>
       <uses-library/>
    </application>
    <uses-permission/>
    <permission/>
    <permission-tree/>
    <permission-group/>
    <instrumentation/>
    <uses-sdk/>
    <uses-configuration/>
    <uses-feature/>
    <supports-screens/>
</manifest>

三、各個節點的詳細介紹

 上面就是整個am(androidManifest).xml的結構,下面以外向內開始闡述~~

1、第一層(<Manifest>):(屬性)
<manifest  xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.woody.test"
          android:sharedUserId="string"
          android:sharedUserLabel="string resource"
          android:versionCode="integer"
          android:versionName="string"
          android:installLocation=["auto" | "internalOnly" | "preferExternal"] >
</manifest>

A、xmlns:android
定義android命名空間,一般為http://schemas.android.com/apk/res/android,這樣使得Android中各種標準屬性能在文件中使用,提供了大部分元素中的數據。

B、package
指定本應用內java主程序包的包名,它也是一個應用進程的默認名稱

C、sharedUserId
表明數據權限,因為默認情況下,Android給每個APK分配一個唯一的UserID,所以是默認禁止不同APK訪問共享數據的。若要共享數據,第一可以采用Share Preference方法,第二種就可以采用sharedUserId了,將不同APK的sharedUserId都設為一樣,則這些APK之間就可以互相共享數據了。詳見:http://wallage.blog.163.com/blog/static/17389624201011010539408/

D、sharedUserLabel
一個共享的用戶名,它只有在設置了sharedUserId屬性的前提下才會有意義

E、versionCode
是給設備程序識別版本(升級)用的必須是一個interger值代表app更新過多少次,比如第一版一般為1,之后若要更新版本就設置為2,3等等。。。

F、versionName
這個名稱是給用戶看的,你可以將你的APP版本號設置為1.1版,后續更新版本設置為1.2、2.0版本等等。。。

G、installLocation
安裝參數,是Android2.2中的一個新特性,installLocation有三個值可以選擇:internalOnly、auto、preferExternal
選擇preferExternal,系統會優先考慮將APK安裝到SD卡上(當然最終用戶可以選擇為內部ROM存儲上,如果SD存儲已滿,也會安裝到內部存儲上)
選擇auto,系統將會根據存儲空間自己去適應
選擇internalOnly是指必須安裝到內部才能運行
(注:需要進行后臺類監控的APP最好安裝在內部,而一些較大的游戲APP最好安裝在SD卡上?,F默認為安裝在內部,如果把APP安裝在SD卡上,首先得設置你的level為8,并且要配置android:installLocation這個參數的屬性為preferExternal)

2、第二層(<Application>):屬性
一個AndroidManifest.xml中必須含有一個Application標簽,這個標簽聲明了每一個應用程序的組件及其屬性(如icon,label,permission等)
<application  android:allowClearUserData=["true" | "false"]
             android:allowTaskReparenting=["true" | "false"]
             android:backupAgent="string"
             android:debuggable=["true" | "false"]
             android:description="string resource"
             android:enabled=["true" | "false"]
             android:hasCode=["true" | "false"]
             android:icon="drawable resource"
             android:killAfterRestore=["true" | "false"]
             android:label="string resource"
             android:manageSpaceActivity="string"
             android:name="string"
             android:permission="string"
             android:persistent=["true" | "false"]
             android:process="string"
             android:restoreAnyVersion=["true" | "false"]
             android:taskAffinity="string"
             android:theme="resource or theme" >
</application>

A、android:allowClearUserData('true' or 'false')
用戶是否能選擇自行清除數據,默認為true,程序管理器包含一個選擇允許用戶清除數據。當為true時,用戶可自己清理用戶數據,反之亦然

B、android:allowTaskReparenting('true' or 'false')
是否允許activity更換從屬的任務,比如從短信息任務切換到瀏覽器任務

C、android:backupAgent
這也是Android2.2中的一個新特性,設置該APP的備份,屬性值應該是一個完整的類名,如com.project.TestCase,此屬性并沒有默認值,并且類名必須得指定(就是個備份工具,將數據備份到云端的操作)

D、android:debuggable
這個從字面上就可以看出是什么作用的,當設置為true時,表明該APP在手機上可以被調試。默認為false,在false的情況下調試該APP,就會報以下錯誤:
Device XXX requires that applications explicitely declare themselves as debuggable in their manifest.
 Application XXX does not have the attribute 'debuggable' set to TRUE in its manifest and cannot be debugged.

E、android:description/android:label
此兩個屬性都是為許可提供的,均為字符串資源,當用戶去看許可列表(android:label)或者某個許可的詳細信息(android:description)時,這些字符串資源就可以顯示給用戶。label應當盡量簡短,之需要告知用戶該許可是在保護什么功能就行。而description可以用于具體描述獲取該許可的程序可以做哪些事情,實際上讓用戶可以知道如果他們同意程序獲取該權限的話,該程序可以做什么。我們通常用兩句話來描述許可,第一句描述該許可,第二句警告用戶如果批準該權限會可能有什么不好的事情發生

F、android:enabled
Android系統是否能夠實例化該應用程序的組件,如果為true,每個組件的enabled屬性決定那個組件是否可以被 enabled。如果為false,它覆蓋組件指定的值;所有組件都是disabled。

G、android:hasCode('true' or 'false')
表示此APP是否包含任何的代碼,默認為true,若為false,則系統在運行組件時,不會去嘗試加載任何的APP代碼
一個應用程序自身不會含有任何的代碼,除非內置組件類,比如Activity類,此類使用了AliasActivity類,當然這是個罕見的現象
(在Android2.3可以用標準C來開發應用程序,可在androidManifest.xml中將此屬性設置為false,因為這個APP本身已經不含有任何的JAVA代碼了)

H、android:icon
這個很簡單,就是聲明整個APP的圖標,圖片一般都放在drawable文件夾下

I、android:killAfterRestore

J、android:manageSpaceActivity

K、android:name
為應用程序所實現的Application子類的全名。當應用程序進程開始時,該類在所有應用程序組件之前被實例化。
若該類(比方androidMain類)是在聲明的package下,則可以直接聲明android:name="androidMain",但此類是在package下面的子包的話,就必須聲明為全路徑或android:name="package名稱.子包名成.androidMain"

L、android:permission
設置許可名,這個屬性若在<application>上定義的話,是一個給應用程序的所有組件設置許可的便捷方式,當然它是被各組件設置的許可名所覆蓋的

M、android:presistent
該應用程序是否應該在任何時候都保持運行狀態,默認為false。因為應用程序通常不應該設置本標識,持續模式僅僅應該設置給某些系統應用程序才是有意義的。

N、android:process
應用程序運行的進程名,它的默認值為<manifest>元素里設置的包名,當然每個組件都可以通過設置該屬性來覆蓋默認值。如果你想兩個應用程序共用一個進程的話,你可以設置他們的android:process相同,但前提條件是他們共享一個用戶ID及被賦予了相同證書的時候

O、android:restoreAnyVersion
同樣也是android2.2的一個新特性,用來表明應用是否準備嘗試恢復所有的備份,甚至該備份是比當前設備上更要新的版本,默認是false

P、android:taskAffinity
擁有相同的affinity的Activity理論上屬于相同的Task,應用程序默認的affinity的名字是<manifest>元素中設定的package名

Q、android:theme
是一個資源的風格,它定義了一個默認的主題風格給所有的activity,當然也可以在自己的theme里面去設置它,有點類似style。

3、第三層(<Activity>):屬性
<activity android:allowTaskReparenting=["true" | "false"]
          android:alwaysRetainTaskState=["true" | "false"]
          android:clearTaskOnLaunch=["true" | "false"]
          android:configChanges=["mcc", "mnc", "locale",
                                 "touchscreen", "keyboard", "keyboardHidden",
                                 "navigation", "orientation", "screenLayout",
                                 "fontScale", "uiMode"]
          android:enabled=["true" | "false"]
          android:excludeFromRecents=["true" | "false"]
          android:exported=["true" | "false"]
          android:finishOnTaskLaunch=["true" | "false"]
          android:icon="drawable resource"
          android:label="string resource"
          android:launchMode=["multiple" | "singleTop" |
                              "singleTask" | "singleInstance"]
          android:multiprocess=["true" | "false"]
          android:name="string"
          android:noHistory=["true" | "false"] 
          android:permission="string"
          android:process="string"
          android:screenOrientation=["unspecified" | "user" | "behind" |
                                     "landscape" | "portrait" |
                                     "sensor" | "nosensor"]
          android:stateNotNeeded=["true" | "false"]
          android:taskAffinity="string"
          android:theme="resource or theme"
          android:windowSoftInputMode=["stateUnspecified",
                                       "stateUnchanged", "stateHidden",
                                       "stateAlwaysHidden", "stateVisible",
                                       "stateAlwaysVisible", "adjustUnspecified",
                                       "adjustResize", "adjustPan"] >  
</activity>
(注:有些在application中重復的就不多闡述了)

1、android:alwaysRetainTaskState
 是否保留狀態不變, 比如切換回home, 再從新打開,activity處于最后的狀態。比如一個瀏覽器擁有很多狀態(當打開了多個TAB的時候),用戶并不希望丟失這些狀態時,此時可將此屬性設置為true

2、android:clearTaskOnLaunch
比如 P 是 activity, Q 是被P 觸發的 activity, 然后返回Home, 重新啟動 P,是否顯示 Q

3、android:configChanges
當配置list發生修改時, 是否調用 onConfigurationChanged() 方法  比如 "locale|navigation|orientation".
這個我用過,主要用來看手機方向改變的. android手機在旋轉后,layout會重新布局, 如何做到呢?
正常情況下. 如果手機旋轉了.當前Activity后殺掉,然后根據方向重新加載這個Activity. 就會從onCreate開始重新加載.
如果你設置了 這個選項, 當手機旋轉后,當前Activity之后調用onConfigurationChanged() 方法. 而不跑onCreate方法等.

4、android:excludeFromRecents
是否可被顯示在最近打開的activity列表里,默認是false

5、android:finishOnTaskLaunch
當用戶重新啟動這個任務的時候,是否關閉已打開的activity,默認是false
如果這個屬性和allowTaskReparenting都是true,這個屬性就是王牌。Activity的親和力將被忽略。該Activity已經被摧毀并非re-parented

6、android:launchMode(Activity加載模式)
在多Activity開發中,有可能是自己應用之間的Activity跳轉,或者夾帶其他應用的可復用Activity??赡軙MD到原來某個Activity實例,而不是產生大量重復的Activity。這需要為Activity配置特定的加載模式,而不是使用默認的加載模式

Activity有四種加載模式:
standard、singleTop、singleTask、singleInstance(其中前兩個是一組、后兩個是一組),默認為standard

standard:就是intent將發送給新的實例,所以每次跳轉都會生成新的activity。

singleTop:也是發送新的實例,但不同standard的一點是,在請求的Activity正好位于棧頂時(配置成singleTop的Activity),不會構造新的實例

singleTask:和后面的singleInstance都只創建一個實例,當intent到來,需要創建設置為singleTask的Activity的時候,系統會檢查棧里面是否已經有該Activity的實例。如果有直接將intent發送給它。

singleInstance:
首先說明一下task這個概念,Task可以認為是一個棧,可放入多個Activity。比如啟動一個應用,那么Android就創建了一個Task,然后啟動這個應用的入口Activity,那在它的界面上調用其他的Activity也只是在這個task里面。那如果在多個task中共享一個Activity的話怎么辦呢。舉個例來說,如果開啟一個導游服務類的應用程序,里面有個Activity是開啟GOOGLE地圖的,當按下home鍵退回到主菜單又啟動GOOGLE地圖的應用時,顯示的就是剛才的地圖,實際上是同一個Activity,實際上這就引入了singleInstance。singleInstance模式就是將該Activity單獨放入一個棧中,這樣這個棧中只有這一個Activity,不同應用的intent都由這個Activity接收和展示,這樣就做到了共享。當然前提是這些應用都沒有被銷毀,所以剛才是按下的HOME鍵,如果按下了返回鍵,則無效

7、android:multiprocess
是否允許多進程,默認是false
具體可看該篇文章:http://www.bangchui.org/simple/?t3181.html

8、android:noHistory
當用戶從Activity上離開并且它在屏幕上不再可見時,Activity是否從Activity stack中清除并結束。默認是false。Activity不會留下歷史痕跡

9、android:screenOrientation
activity顯示的模式
默認為unspecified:由系統自動判斷顯示方向
landscape橫屏模式,寬度比高度大
portrait豎屏模式, 高度比寬度大
user模式,用戶當前首選的方向
behind模式:和該Activity下面的那個Activity的方向一致(在Activity堆棧中的)
sensor模式:有物理的感應器來決定。如果用戶旋轉設備這屏幕會橫豎屏切換
nosensor模式:忽略物理感應器,這樣就不會隨著用戶旋轉設備而更改了

10、android:stateNotNeeded
activity被銷毀或者成功重啟時是否保存狀態

11、android:windowSoftInputMode
activity主窗口與軟鍵盤的交互模式,可以用來避免輸入法面板遮擋問題,Android1.5后的一個新特性。

這個屬性能影響兩件事情:
【A】當有焦點產生時,軟鍵盤是隱藏還是顯示
【B】是否減少活動主窗口大小以便騰出空間放軟鍵盤
各值的含義:
【A】stateUnspecified:軟鍵盤的狀態并沒有指定,系統將選擇一個合適的狀態或依賴于主題的設置
【B】stateUnchanged:當這個activity出現時,軟鍵盤將一直保持在上一個activity里的狀態,無論是隱藏還是顯示
【C】stateHidden:用戶選擇activity時,軟鍵盤總是被隱藏
【D】stateAlwaysHidden:當該Activity主窗口獲取焦點時,軟鍵盤也總是被隱藏的
【E】stateVisible:軟鍵盤通常是可見的
【F】stateAlwaysVisible:用戶選擇activity時,軟鍵盤總是顯示的狀態
【G】adjustUnspecified:默認設置,通常由系統自行決定是隱藏還是顯示
【H】adjustResize:該Activity總是調整屏幕的大小以便留出軟鍵盤的空間
【I】adjustPan:當前窗口的內容將自動移動以便當前焦點從不被鍵盤覆蓋和用戶能總是看到輸入內容的部分

4、第四層(<intent-filter>)
結構圖:
<intent-filter  android:icon="drawable resource"
               android:label="string resource"
               android:priority="integer" >
      <action />
      <category />
      <data />
</intent-filter>
 
intent-filter屬性
android:priority(解釋:有序廣播主要是按照聲明的優先級別,如A的級別高于B,那么,廣播先傳給A,再傳給B。優先級別就是用設置priority屬性來確定,范圍是從-1000~1000,數越大優先級別越高)
Intent filter內會設定的資料包括action,data與category三種。也就是說filter只會與intent里的這三種資料作對比動作
action屬性
action很簡單,只有android:name這個屬性。常見的android:name值為android.intent.action.MAIN,表明此activity是作為應用程序的入口。有關android:name具體有哪些值,可參照這個網址:http://hi.baidu.com/linghtway/blog/item/83713cc1c2d053170ff477a7.html
category屬性
category也只有android:name屬性。常見的android:name值為android.intent.category.LAUNCHER(決定應用程序是否顯示在程序列表里)
有關android:name具體有哪些值,可參照這個網址:http://chroya.javaeye.com/blog/685871
data屬性
<data  android:host="string"
      android:mimeType="string"
      android:path="string"
      android:pathPattern="string"
      android:pathPrefix="string"
      android:port="string"
      android:scheme="string"/>
【1】每個<data>元素指定一個URI和數據類型(MIME類型)。它有四個屬性scheme、host、port、path對應于URI的每個部分:
scheme://host:port/path
scheme的值一般為"http",host為包名,port為端口號,path為具體地址。如:http://com.test.project:200/folder/etc
其中host和port合起來構成URI的憑據(authority),如果host沒有指定,則port也會被忽略
要讓authority有意義,scheme也必須要指定。要讓path有意義,scheme+authority也必須要指定
【2】mimeType(指定數據類型),若mimeType為'Image',則會從content Provider的指定地址中獲取image類型的數據。還有'video'啥的,若設置為video/mp4,則表示在指定地址中獲取mp4格式的video文件
【3】而pathPattern和PathPrefix主要是為了格式化path所使用的

5、第四層<meta-data>
<meta-data android:name="string"
           android:resource="resource specification"
           android:value="string"/>
這是該元素的基本結構.可以包含在<activity> <activity-alias> <service> <receiver>四個元素中。
android:name(解釋:元數據項的名字,為了保證這個名字是唯一的,采用java風格的命名規范,如com.woody.project.fried)
android:resource(解釋:資源的一個引用,指定給這個項的值是該資源的id。該id可以通過方法Bundle.getInt()來從meta-data中找到。)
android:value(解釋:指定給這一項的值??梢宰鳛橹祦碇付ǖ臄祿愋筒⑶医M件用來找回那些值的Bundle方法:[getString],[getInt],[getFloat],[getString],[getBoolean])

6、第三層<activity-alias>屬性
<activity-alias android:enabled=["true" | "false"]
                android:exported=["true" | "false"]
                android:icon="drawable resource"
                android:label="string resource"
                android:name="string"
                android:permission="string"
                android:targetActivity="string">
<intent-filter/>
<meta-data/>
</activity-alias>
<activity-alias>是為activity創建快捷方式的,如下實例:
<activity android:name=".shortcut">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
            </intent-filter>
</activity>
 <activity-alias android:name=".CreateShortcuts" android:targetActivity=".shortcut" android:label="@string/shortcut">
    <intent-filter>
             <action android:name="android.intent.action.CREATE_SHORTCUT" />
             <category android:name="android.intent.category.DEFAULT" />
     </intent-filter>
 </activity-alias>
其中android.targetActivity是指向對應快捷方式的activity,如上述的shortcut(此Activity名)
android:label是指快捷方式的名稱,而快捷方式的圖標默認是給定的application圖標

7、第三層<service>
【1】service與activity同級,與activity不同的是,它不能自己啟動的,運行在后臺的程序,如果我們退出應用時,Service進程并沒有結束,它仍然在后臺運行。比如聽音樂,網絡下載數據等,都是由service運行的
【2】service生命周期:Service只繼承了onCreate(),onStart(),onDestroy()三個方法,第一次啟動Service時,先后調用了onCreate(),onStart()這兩個方法,當停止Service時,則執行onDestroy()方法,如果Service已經啟動了,當我們再次啟動Service時,不會在執行onCreate()方法,而是直接執行onStart()方法
【3】service與activity間的通信
Service后端的數據最終還是要呈現在前端Activity之上的,因為啟動Service時,系統會重新開啟一個新的進程,這就涉及到不同進程間通信的問題了(AIDL),Activity與service間的通信主要用IBinder負責。具體可參照:http://zhangyan1158.blog.51cto.com/2487362/491358
【4】
<service android:enabled=["true" | "false"]
         android:exported[="true" | "false"]
         android:icon="drawable resource"
         android:label="string resource"
         android:name="string"
         android:permission="string"
         android:process="string">
</service>
service標簽內的屬性之前已有描述,在此不重復了~

8、第三層<receiver>
receiver的屬性與service一樣,這里就不顯示了
BroadcastReceiver:用于發送廣播,broadcast是在應用程序之間傳輸信息的一種機制,而BroadcastReceiver是對發送出來的 Broadcast進行過濾接受并響應的一類組件,具體參照http://kevin2562.javaeye.com/blog/686787

9、第三層<provider>屬性
<provider android:authorities="list"
          android:enabled=["true" | "false"]
          android:exported=["true" | "false"]
          android:grantUriPermissions=["true" | "false"]
          android:icon="drawable resource"
          android:initOrder="integer"
          android:label="string resource"
          android:multiprocess=["true" | "false"]
          android:name="string"
          android:permission="string"
          android:process="string"
          android:readPermission="string"
          android:syncable=["true" | "false"]
          android:writePermission="string">
           <grant-uri-permission/>
           <meta-data/>
</provider>
contentProvider(數據存儲)
【1】android:authorities:
標識這個ContentProvider,調用者可以根據這個標識來找到它
【2】android:grantUriPermission:
對某個URI授予的權限
【3】android:initOrder

10、第三層<uses-library>
用戶庫,可自定義。所有android的包都可以引用

11、第一層<supports-screens>
<supports-screens  android:smallScreens=["true" | "false"]
                  android:normalScreens=["true" | "false"]
                  android:largeScreens=["true" | "false"]
                  android:anyDensity=["true" | "false"] />
這是在android1.6以后的新特性,支持多屏幕機制
各屬性含義:這四個屬性,是否支持大屏,是否支持中屏,是否支持小屏,是否支持多種不同密度

12、第二層<uses-configuration />與<uses-feature>性能都差不多
<uses-configuration  android:reqFiveWayNav=["true" | "false"]
                    android:reqHardKeyboard=["true" | "false"]
                    android:reqKeyboardType=["undefined" | "nokeys" | "qwerty" |   "twelvekey"]
                    android:reqNavigation=["undefined" | "nonav" | "dpad" |  "trackball" | "wheel"]
                    android:reqTouchScreen=["undefined" | "notouch" | "stylus" | "finger"] />
<uses-feature android:glEsVersion="integer"
              android:name="string"
              android:required=["true" | "false"] />
這兩者都是在描述應用所需要的硬件和軟件特性,以便防止應用在沒有這些特性的設備上安裝。

13、第二層<uses-sdk />
<uses-sdk android:minSdkVersion="integer"
          android:targetSdkVersion="integer"
          android:maxSdkVersion="integer"/>
描述應用所需的api level,就是版本,目前是android 2.2 = 8,android2.1 = 7,android1.6 = 4,android1.5=3
在此屬性中可以指定支持的最小版本,目標版本以及最大版本

14、第二層<instrumentation />
<instrumentation android:functionalTest=["true" | "false"]
                 android:handleProfiling=["true" | "false"]
                 android:icon="drawable resource"
                 android:label="string resource"
                 android:name="string"
                 android:targetPackage="string"/>
 定義一些用于探測和分析應用性能等等相關的類,可以監控程序。在各個應用程序的組件之前instrumentation類被實例化
android:functionalTest(解釋:instrumentation類是否能運行一個功能測試,默認為false)

15、<permission>、<uses-permission>、<permission-tree />、<permission-group />區別~
最常用的當屬<uses-permission>,當我們需要獲取某個權限的時候就必須在我們的manifest文件中聲明,此<uses-permission>與<application>同級,具體權限列表請看此處
通常情況下我們不需要為自己的應用程序聲明某個權限,除非你提供了供其他應用程序調用的代碼或者數據。這個時候你才需要使用<permission> 這個標簽。很顯然這個標簽可以讓我們聲明自己的權限。比如:
<permission android:name="com.teleca.project.MY_SECURITY" . . . />
那么在activity中就可以聲明該自定義權限了,如:
<application . . .>
        <activity android:name="XXX" . . . >
                  android:permission="com.teleca.project.MY_SECURITY"> </activity>
 </application>
當然自己聲明的permission也不能隨意的使用,還是需要使用<uses-permission>來聲明你需要該權限
<permission-group> 就是聲明一個標簽,該標簽代表了一組permissions,而<permission-tree>是為一組permissions聲明了一個namespace。這兩個標簽可以看之前的系列文章。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美大尺度激情区在线播放| 日韩av片免费在线观看| www.久久撸.com| 日韩成人中文字幕在线观看| 日本亚洲精品在线观看| 欧美极品在线播放| 疯狂做受xxxx欧美肥白少妇| 日本一本a高清免费不卡| 国产精品大陆在线观看| 亚洲va国产va天堂va久久| 久久香蕉国产线看观看网| 欧美日韩另类在线| 91成人天堂久久成人| 一区二区亚洲精品国产| 亚洲天堂av女优| 伊人成人开心激情综合网| 久久激情视频免费观看| 日韩视频免费看| 欧美性高潮床叫视频| 久久久成人精品视频| 亚洲美女av在线播放| 91在线精品视频| 亚洲免费人成在线视频观看| 欧美中文字幕在线播放| 欧洲午夜精品久久久| 国产成人欧美在线观看| 亚洲第一二三四五区| 久久久人成影片一区二区三区| 91精品国产91久久久久久不卡| 国产精品在线看| 欧美激情乱人伦| 国产一区香蕉久久| 疯狂欧美牲乱大交777| 国产视频精品久久久| 性色av一区二区咪爱| 海角国产乱辈乱精品视频| 91免费看片网站| 欧美电影《睫毛膏》| 国产一区二区丝袜高跟鞋图片| 日韩高清av一区二区三区| 国产噜噜噜噜久久久久久久久| 国产精品综合网站| 久久久久国产精品免费网站| 国产成人短视频| 欧美第一黄网免费网站| 久久久久国产精品免费| 中文字幕亚洲无线码在线一区| 久久综合亚洲社区| 久久久久久综合网天天| 国产欧美日韩亚洲精品| 欧美黑人性生活视频| 亚洲免费影视第一页| 亚洲欧美精品一区二区| 国语自产精品视频在线看抢先版图片| 亚洲国产精品yw在线观看| 九九热精品视频| 色吧影院999| 欧美专区在线视频| 日韩高清有码在线| 欧美老女人bb| 国产婷婷色综合av蜜臀av| 懂色av影视一区二区三区| 国内精品久久久久久| 亚洲欧美日韩另类| 久久久这里只有精品视频| 播播国产欧美激情| 亚洲欧美日韩精品| 国产一区二区欧美日韩| 68精品国产免费久久久久久婷婷| 97超级碰碰人国产在线观看| 国产精品普通话| 91综合免费在线| 深夜福利91大全| 久久福利视频网| 92看片淫黄大片看国产片| 色偷偷噜噜噜亚洲男人的天堂| 欧美精品18videos性欧美| 日本国产一区二区三区| 欧美在线性爱视频| 中文字幕日韩视频| 亚洲欧洲第一视频| 亚洲欧美精品在线| 在线精品国产成人综合| 欧美日韩亚洲天堂| 日本高清视频精品| 亚洲欧美激情一区| 欧美影院在线播放| 国产婷婷色综合av蜜臀av| 国产精品亚洲综合天堂夜夜| 亚洲精品电影在线| 久久777国产线看观看精品| 久久久国产91| 91亚洲午夜在线| 国产精品一久久香蕉国产线看观看| 国产精品爱久久久久久久| 色哟哟入口国产精品| 欧美激情欧美激情在线五月| 疯狂蹂躏欧美一区二区精品| 日韩亚洲一区二区| 日本午夜精品理论片a级appf发布| 狠狠久久五月精品中文字幕| 亚洲最新av在线网站| 欧美性猛交xxxx黑人猛交| 欧美资源在线观看| 91精品国产色综合久久不卡98口| 亚洲片国产一区一级在线观看| 亚洲国产一区二区三区四区| 欧美日韩成人免费| 久久视频免费在线播放| 日韩黄色高清视频| 蜜臀久久99精品久久久久久宅男| 午夜精品久久久久久久男人的天堂| 亚洲精品福利在线| 亚洲精品欧美极品| 亚洲美女又黄又爽在线观看| 欧美孕妇孕交黑巨大网站| 亚洲一区二区三区在线免费观看| 伊人久久久久久久久久| 国产精品白丝av嫩草影院| 91在线高清视频| 欧美成人免费视频| 亚洲第一区在线| 欧美一区二区三区图| 久久久久免费视频| 97视频在线播放| 欧美做受高潮电影o| 国产精品青青在线观看爽香蕉| 日韩va亚洲va欧洲va国产| 亚洲最大av在线| 欧美高清在线视频观看不卡| 中文字幕日韩在线观看| 久久久久久久国产精品视频| 国产成人综合精品| 欧美在线精品免播放器视频| 国产91在线播放| 成人国产精品一区| 亲爱的老师9免费观看全集电视剧| 久久精品一偷一偷国产| 亚洲欧美日韩国产成人| 欧美精品情趣视频| 高清一区二区三区四区五区| 日韩电影中文 亚洲精品乱码| 深夜精品寂寞黄网站在线观看| 欧美老肥婆性猛交视频| 国产精品入口免费视频一| 一个色综合导航| 中文国产成人精品| 亚洲第一天堂av| 精品视频久久久久久| 精品久久久久久久中文字幕| 亚洲黄页视频免费观看| 亚洲精品久久久久久下一站| 国产精品日韩欧美| 亚洲综合第一页| 亚洲精品www久久久久久广东| 亚洲精品美女久久久久| 在线观看久久久久久| 国产精品人成电影| 色综合天天狠天天透天天伊人| 欧美体内谢she精2性欧美| 日韩视频永久免费观看| 日韩动漫免费观看电视剧高清| 精品久久久在线观看| 久久99国产精品自在自在app|