日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Android Studio,使用技巧,問題記錄和一些好用的插件

瀏覽:152日期:2022-09-27 10:49:23
使用技巧 根據不同 buildType 使用不同包名和資源

比如在 production,development,qa 不同階段使用不同的 packageName 和 authority,在 build.gradle 中配置如下:

productFlavors {production { applicationId = 'com.myapp.app' resValue 'string', 'authority', 'com.facebook.app.FacebookContentProvider5435651423234'}development { applicationId = 'com.myapp.development' resValue 'string', 'authority', 'com.facebook.app.FacebookContentProvider2134564533421'}qa { applicationId = 'com.myapp.qa' resValue 'string', 'authority', 'com.facebook.app.FacebookContentProvider29831237981287319'}}

通過 resValue 方法設置的資源會在 R 文件生成對應的 id。

在 AndroidManifest.xml 中使用 authority 字符串

<provider android:name='com.facebook.FacebookContentProvider' android:authorities='@string/authority' android:exported='true' /> 替換 AndroidManifest.xml 中的占位符

使用 manifestPlaceholders 可以定義相關字段替換 AndroidManifest.xml 中的占位符。

格式:manifestPlaceholders = [ key1:'value1', key2:'value2', ... ]

下面是一個示例:

android { defaultConfig {def authorityName = 'com.linchaolong.android.app.droidplugin_stub'manifestPlaceholders = [ authorityName:'${authorityName}', key:'value',] }}

說明:manifestPlaceholders 是一個 map。

在 AndroidManifest.xml 中通過 ${key} 引用相關字段。

自定義 BuildConfig 字段

通過 buildConfigField 可以添加自定義的字段到 BuildConfig 中。

格式:buildConfigField 'type', 'key', 'value'

android { defaultConfig{def authority = 'com.linchaolong.android.app'buildConfigField 'String', 'AUTHORITY', ''${authority }''buildConfigField 'int', 'FOO', '42'buildConfigField 'String', 'FOO_STRING', ''foo''buildConfigField 'boolean', 'LOG', 'true' }}

def 操作符可用于定義變量和函數。

在 java 代碼中你可以通過 BuildConfig.key 訪問對應的字段,比如: BuildConfig.AUTHORITY 訪問 AUTHORITY 常量。

統一管理不同 module 依賴庫的版本

新建一個 config.gradle 在工程根目錄下,并添加一些全局的配置:

allprojects {repositories { jcenter()}ext{ compileSdkVersion = 25 buildToolsVersion = '25.0.0' minSdkVersion = 14 targetSdkVersion = 25 support = ’25.0.0’ play_services = ’9.8.0’ rxjava = ’2.0.1’ // Json gson = ’2.8.0’ // HTTP okhttp = ’3.4.1’ retrofit = ’2.1.0’ glide = ’3.7.0’ // DEPS INJECTION dagger = ’2.6’ // VIEW INJECTION butterknife = ’8.4.0’ // DEBUG stetho = ’1.4.1’}}

然后在 project-level 下的 build.gradle 添加如下配置應用 config.gradle :

apply from: rootProject.file(’config.gradle’)

在各 module 的 build.gradle 引用 ext 中的字段

在 android 塊中引用 ext 中的字段

android {compileSdkVersion project.ext.compileSdkVersionbuildToolsVersion project.ext.buildToolsVersiondefaultConfig { applicationId 'linchaolong.demo' minSdkVersion project.ext.minSdkVersion targetSdkVersion project.ext.targetSdkVersion def QQ_APPID = rootProject.ext.QQ_APPID manifestPlaceholders = [QQ_APPID:'${QQ_APPID}']}}

在 dependencies 塊下引用 ext 中的字段

dependencies {compile 'com.android.support:appcompat-v7:$support'// Debugcompile 'com.facebook.stetho:stetho:$stetho'compile 'com.facebook.stetho:stetho-okhttp3:$stetho'debugCompile 'com.facebook.stetho:stetho-js-rhino:$stetho'// Jsoncompile 'com.google.code.gson:gson:$gson'// Butterknifecompile 'com.jakewharton:butterknife:$butterknife'annotationProcessor 'com.jakewharton:butterknife-compiler:$butterknife'// RxJavacompile 'io.reactivex.rxjava2:rxjava:$rxjava'compile 'io.reactivex.rxjava2:rxandroid:$rxjava'}

嚴重注意:引用 ext 中字段時要使用雙引號,不能是單引號。格式為 ${key} 或 $key

建立各 Module 共享的配置

比如,這里想統一設置各 Module 支持的 so 庫架構,可以在工程目錄下新建一個 module.gradle 存放共享的配置,配置如下:

// Module 共享的配置android { defaultConfig { ndk { //設置支持的SO庫架構 abiFilters ’armeabi-v7a’ //, ’armeabi’ , ’x86’, ’x86_64’, ’arm64-v8a’ } }}

然后,在各 Module 下的 build.gradle 配置中應用 module.gradle,示例如下:

apply plugin: ’com.android.application’apply from: rootProject.file(’module.gradle’) 自定義 release apk 名稱

修改 build.gradle 配置如下:

android { buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile(’proguard-android.txt’), ’proguard-rules.pro’ signingConfig signingConfigs.release // 自定義 release apk 名稱 applicationVariants.all { variant ->variant.outputs.each { output -> def releaseTime = new Date().format(’yyyyMMddHHmmss’) // 修改 release apk 名稱,app_1.0_20170108224145.apk def fileName = output.outputFile.name.replace('-release', '_${defaultConfig.versionName}_'+releaseTime) output.outputFile = new File(output.outputFile.parent, fileName)} } } }} 手動 build 工程

我們應該都或多或少遇到過這種情況,當我們第一次打開一個項目時,該項目會先下載相關的依賴項,如果很多的話,將會等很久,而且又不能做其他操作,這樣太浪費時間了。

Android Studio,使用技巧,問題記錄和一些好用的插件

Image

下面說說如何在命令行中手動 build 工程:

每個 android studio 工程下應該都會有 gradlew.bat (Windows) 和 gradlew (Mac) 兩個腳本文件,我們可以打開命令行,cd 到工程目錄下,通過執行 gradlew.bat build 命令,手動去構建工程。

Android Studio,使用技巧,問題記錄和一些好用的插件

Image

通過在命令行構建工程可以不影響當前工作,而且構建完成后再使用 android studio 打開該工程將會比較快。

手動下載和替換本地 gradle/jar

build 過程很慢?這個多數是由于個別依賴項下載速度過慢引起的,有時還會卡在某個點,但我們可以通過手動下載替換解決該問題。

這里分為兩個部分,一個是 gradle 的下載替換,一個是依賴庫的下載替換。

我們通過在命令行執行 gradlew.bat build 命令可以看到相關依賴的下載地址:

Android Studio,使用技巧,問題記錄和一些好用的插件

Paste_Image.png

正常下載速度可能只有幾十KB(可能更低...),但是如果我們把下載鏈接 copy 到迅雷下載,它是這樣的:

Android Studio,使用技巧,問題記錄和一些好用的插件

Paste_Image.png

在 windows 下,gradle 存放目錄就在 C:Users用戶名.gradlewrapperdists 下。下載完成后,把 *.lck 和 *.zip.part 文件刪掉,替換為我們剛下載的 .zip 。

Android Studio,使用技巧,問題記錄和一些好用的插件

Paste_Image.png

重新執行 gradlew.bat build 命令可以看到它將會自動解壓該 *.zip 文件。

Android Studio,使用技巧,問題記錄和一些好用的插件

Paste_Image.png

在 windows 下,依賴庫的存放目錄就在 C:Users用戶名.gradlecaches 。jar文件的下載替換也是同理,比如我這里下載一個 common-25.3.0-alpha2.jar ,下載完成后把它放在 common-25.3.0-alpha2.pom 同級目錄下,重新執行 build 命令即可。

Android Studio,使用技巧,問題記錄和一些好用的插件

Paste_Image.png

這里的目錄路徑可能和你的不太一樣,可以使用 Everything 搜索一下文件名。

構建一個aar文件

如果你的 module 聲明為 android library(即在 build.gradle 文件中使用 apply plugin:’com.android.library’ ),它將在構建時輸出 .aar 文件,在 module 的 build/outputs/aar 目錄下。

你可以選擇該 module ,然后 Build —> Make Module * 構建該 module。或者使用 gradlew.bat build 命令構建工程。然后就可以在輸出目錄下找到 .aar 文件了。

Android Studio,使用技巧,問題記錄和一些好用的插件

Paste_Image.png

引用 aar 文件

假設把 aar 文件放在 module 下的 libs 目錄。

Android Studio,使用技巧,問題記錄和一些好用的插件

Paste_Image.png

引用本 module 的 aar 文件 build.gradle 配置如下:

repositories{ flatDir{ dirs ’libs’ }}dependencies { compile(name:’stetho_realm-release’, ext:’aar’)}

如果是引用其他 module 的 aar 文件,還要在本 module 的 build.gradle 中配置被引用 module 的 aar 目錄,否則會找不到文件。

repositories { flatDir { dirs project(’:Library’).file(’libs’) }}

多個目錄使用 “,” 分隔

快捷鍵

由于 Android Studio 是基于 IDEA 的,所以很多快捷鍵是通用的。

全局替換

Edit —&gt; Find —&gt; Replace in Path

Android Studio,使用技巧,問題記錄和一些好用的插件

Replace in Path

動態調試app

1.在源碼先打斷點,點擊掛接 Android 進程按鈕。

Android Studio,使用技巧,問題記錄和一些好用的插件

Paste_Image.png

2.選擇 app 進程,點OK,開始調試。

Android Studio,使用技巧,問題記錄和一些好用的插件

Paste_Image.png

一些好用的插件

插件安裝說明:

在線安裝 打開 File ——> Settings ——> Plugins ——> Browse repositories... 搜索插件名,點 Install 下載安裝,安裝完成后重啟生效。 離線安裝 下載插件安裝包,打開 File ——> Settings ——> Plugins ——> Install plugin from disk... 選擇插件安裝包,安裝完成后重啟生效。 GsonFormat

GsonFormat 是一個可以快速將 JSON 字符串轉換為 Entity 類的插件。

Android Studio,使用技巧,問題記錄和一些好用的插件

GsonFormat

使用說明: Alt + S 調出 GsonFormat,或者 Alt Insert + GsonFormat 。

在 Settings 中選擇 filed(public) ,Enter 保存修改,可以只生成 public 字段,不生成一大堆的 getter 和 setter,代碼會更簡潔些。

插件地址: https://plugins.jetbrains.com/idea/plugin/7654-gsonformat

Github地址: https://github.com/zzz40500/GsonFormat

Android ButterKnife Zelezny

Android ButterKnife Zelezny 是 Android 下的注解框架 ButterKnife 的輔助插件,用于一鍵生成 Butterknife 視圖注入代碼。

Android Studio,使用技巧,問題記錄和一些好用的插件

Android ButterKnife Zelezny

使用說明:把光標停在 setContentView(R.layout.activity_settings) 那行中的 activity_settings 上右鍵選擇 Generate ( alt + insert )→ Generate Butterknife Injections

注意:需要把光標停在 layout 的名稱上才能調出 ButterKnife Zelezny 。

ButterKnife: https://github.com/JakeWharton/butterknife

插件地址: https://plugins.jetbrains.com/idea/plugin/7369-android-butterknife-zelezny

Github地址: https://github.com/avast/android-butterknife-zelezny

ECTranslation

Android Studio 翻譯插件,可以將英文翻譯為中文。

Android Studio,使用技巧,問題記錄和一些好用的插件

ECTranslation

使用說明:選中要翻譯的內容,選擇 Edit ——> Translate 或者按下 command + I (我這里設置為 Shift + I )。

修改快捷鍵: Preferences -> Keymap -> 搜索Translate - > 右鍵 add Keyboard Shortcut . 輸入你想要的快捷鍵即可。

插件地址: https://plugins.jetbrains.com/idea/plugin/8469-ectranslation

Github地址: https://github.com/Skykai521/ECTranslation

問題記錄 Error:The number of method references in a .dex file cannot exceed 64K.

這是錯誤是因為應用的方法數已經超過了64K了,在 class 轉換 dex 文件時報錯了。一個 dex 文件的最大方法數是65536,所以這時候要啟用 Multidex。

1.app 的 build.gradle 添加如下配置

android { defaultConfig {// 啟用 multidex 支持.multiDexEnabled true }}dependencies { compile ’com.android.support:multidex:1.0.1’}

2.在 AndroidManifest.xml 下配置 MultiDexApplication

<?xml version='1.0' encoding='utf-8'?><manifest xmlns:android='http://schemas.android.com/apk/res/android' package='com.example.android.multidex.myapplication'> <application...android:name='android.support.multidex.MultiDexApplication'>... </application></manifest>

如果是自定義了 Application 則讓其繼承 MultiDexApplication。

官方文檔: https://developer.android.com/tools/building/multidex.html

Error: '*' is not translated in 'en' (English) [MissingTranslation]

這種錯誤一般出現在打包的時候,表示 strings.xml 中缺失本地化的字符串資源。

這個錯誤有兩個解決方案:

在 valuesstrings.xml 或出問題的 strings.xml 中添加如下配置:

<resources xmlns:tools='http://schemas.android.com/tools' tools:locale='en'> 在 valuesstrings.xml 或出問題的 strings.xml 中添加如下配置:

<resources xmlns:tools='http://schemas.android.com/tools' tools:ignore='MissingTranslation' >

缺失的本地化字符串資源會使用默認字符串資源。

Could not find Library

日志如下:

Error:A problem occurred configuring project ’:app’.> Could not resolve all dependencies for configuration ’:app:_debugCompile’. > Could not find com.android.support:appcompat-v7:22.2.0. Searched in the following locations: https://jcenter.bintray.com/com/android/support/appcompat-v7/22.2.0/appcompat-v7-22.2.0.pom https://jcenter.bintray.com/com/android/support/appcompat-v7/22.2.0/appcompat-v7-22.2.0.jar file:/D:/AndroidDeveloper/adt-bundle-windows-x86-20130917/sdk/extras/google/m2repository/com/android/support/appcompat-v7/22.2.0/appcompat-v7-22.2.0.pom file:/D:/AndroidDeveloper/adt-bundle-windows-x86-20130917/sdk/extras/google/m2repository/com/android/support/appcompat-v7/22.2.0/appcompat-v7-22.2.0.jar Required by: HelloWorld:app:unspecified

解決辦法:更新你的 Android Support Library 和 Android Support Repository.

修改 applicationId 后啟動出現ClassNotFoundException

日志如下:

E/AndroidRuntime: FATAL EXCEPTION: main Process: com.linchaolong.android.app, PID: 10690 java.lang.RuntimeException: Unable to instantiate application com.android.tools.fd.runtime.BootstrapApplication: java.lang.IllegalStateException: java.lang.ClassNotFoundException: com.linchaolong.android.app.MyApplication at android.app.LoadedApk.makeApplication(LoadedApk.java:565) at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4545) at android.app.ActivityThread.access$1500(ActivityThread.java:154) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1369) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5275) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:909) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:704) Caused by: java.lang.IllegalStateException: java.lang.ClassNotFoundException: com.linchaolong.demo.App at com.android.tools.fd.runtime.BootstrapApplication.createRealApplication(BootstrapApplication.java:220) at com.android.tools.fd.runtime.BootstrapApplication.attachBaseContext(BootstrapApplication.java:239) at android.app.Application.attach(Application.java:185) at android.app.Instrumentation.newApplication(Instrumentation.java:996) at android.app.Instrumentation.newApplication(Instrumentation.java:980) at android.app.LoadedApk.makeApplication(LoadedApk.java:560) at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4545)at android.app.ActivityThread.access$1500(ActivityThread.java:154)at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1369)at android.os.Handler.dispatchMessage(Handler.java:102)at android.os.Looper.loop(Looper.java:135)at android.app.ActivityThread.main(ActivityThread.java:5275)at java.lang.reflect.Method.invoke(Native Method)at java.lang.reflect.Method.invoke(Method.java:372)at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:909)at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:704) Caused by: java.lang.ClassNotFoundException: com.linchaolong.android.app.MyApplication at java.lang.Class.classForName(Native Method) at java.lang.Class.forName(Class.java:306) at java.lang.Class.forName(Class.java:270) at com.android.tools.fd.runtime.BootstrapApplication.createRealApplication(BootstrapApplication.java:209) at com.android.tools.fd.runtime.BootstrapApplication.attachBaseContext(BootstrapApplication.java:239)at android.app.Application.attach(Application.java:185)at android.app.Instrumentation.newApplication(Instrumentation.java:996)at android.app.Instrumentation.newApplication(Instrumentation.java:980)at android.app.LoadedApk.makeApplication(LoadedApk.java:560)at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4545)at android.app.ActivityThread.access$1500(ActivityThread.java:154)at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1369)at android.os.Handler.dispatchMessage(Handler.java:102)at android.os.Looper.loop(Looper.java:135)at android.app.ActivityThread.main(ActivityThread.java:5275)at java.lang.reflect.Method.invoke(Native Method)at java.lang.reflect.Method.invoke(Method.java:372)at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:909)at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:704) Caused by: java.lang.ClassNotFoundException: Didn’t find class 'com.linchaolong.android.app.MyApplication' on path: DexPathList[[zip file

原因是 Android Studio 的 Instant Run 嘗試對你的代碼執行熱交換,導致 Application 類被移除所以出現 ClassNotFoundException。

停用 Instant Run, File --> Settings--> Build,Execution,Deployment -->Instant Run ---> 取消勾選 'Enable instant run'

相關文章 Intellij IDEA使用技巧整理 Android Studio各種快捷功能及好用的插件 tools 屬性參考文檔

來自:https://juejin.im/entry/58bfd80ea22b9d00588c3444

標簽: Android
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
亚洲黄页一区| 国产精品久久久久久模特| 久久中文在线| 粉嫩av一区二区三区四区五区| 国产极品一区| 成人在线视频区| 韩国一区二区三区视频| 一区二区视频欧美| 黄色精品视频| 99国产成+人+综合+亚洲欧美| 国产无遮挡裸体免费久久| 亚洲第一精品影视| 欧美精品观看| 激情欧美日韩一区| 亚洲日本免费电影| 久久99蜜桃| 麻豆久久久久久| 国产伊人久久| 色综合视频一区二区三区日韩 | 精品久久久网| 国产人成精品一区二区三| 日韩一区二区三区精品视频第3页 日韩一区二区三区免费视频 | 亚洲乱码一区| 欧美日一区二区在线观看| 国产精品综合色区在线观看| 精品一区av| 午夜国产精品视频免费体验区| 亚洲精品国模| 免费视频一区二区三区在线观看| 午夜一级在线看亚洲| 日韩专区视频网站| 精品女同一区二区三区在线观看| 欧美天堂视频| 久久国产生活片100| 久久不见久久见免费视频7| 综合国产精品| 美女性感视频久久| 综合激情一区| 精品一区二区三区视频在线播放 | 91精品精品| 日韩啪啪电影网| 四虎884aa成人精品最新| 国内精品美女在线观看| 亚洲精品国产嫩草在线观看 | 亚洲午夜天堂| 久久久蜜桃一区二区人| 免费视频亚洲| 亚洲狼人精品一区二区三区| 日韩欧美激情| 久久一区视频| 精品亚洲二区| 快she精品国产999| 亚洲精品在线a| 激情综合婷婷| 亚洲欧美日本国产专区一区| 吉吉日韩欧美| 亚洲日产av中文字幕| 亚洲专区视频| 欧美综合另类| 国户精品久久久久久久久久久不卡| 国产精品日韩| 日韩高清在线不卡| 国产精品久久久久久久久妇女| 亚洲大全视频| 日韩精品欧美成人高清一区二区| 麻豆久久一区二区| 午夜一级久久| 日韩av一区二区三区四区| 国产欧美一级| 老鸭窝毛片一区二区三区| 精品丝袜久久| 亚洲一区资源| 国产在线一区不卡| 欧美成人基地| 激情久久五月| 日韩精品一级中文字幕精品视频免费观看 | 国产亚洲一区二区三区啪| 久久精品99国产国产精| 亚洲一区日本| 麻豆成人91精品二区三区| 国产欧美自拍| 欧美片第1页综合| 亚洲少妇诱惑| 日本午夜免费一区二区| 最新中文字幕在线播放| 国产拍在线视频| 巨乳诱惑日韩免费av| 91成人精品视频| 欧美aa在线观看| 欧美伊人久久| 久久精品99久久久| 国产成人精品一区二区免费看京| 国产精品天天看天天狠| 成人片免费看| 日韩中文在线电影| 日韩中文字幕一区二区三区| 久久精品高清| 色综合五月天| а√在线中文在线新版| 综合色就爱涩涩涩综合婷婷| 亚洲男人在线| 亚洲精品无播放器在线播放| 欧美一区激情| 免费视频亚洲| 久久激情网站| 黄页网站一区| 亚洲精品中文字幕乱码| 欧美国产视频| 中文字幕在线官网| 久久亚洲电影| 欧美一级精品| 国产精品久久久久久av公交车| 亚洲精品观看| 日韩中出av| 欧美在线观看视频一区| 一区福利视频| 精品国产成人| 欧美日韩中出| 精品久久久久久久| 国产高潮在线| 欧美激情aⅴ一区二区三区| 日韩精品一级中文字幕精品视频免费观看| 福利片在线一区二区| 91日韩在线| 国产真实久久| 欧美经典一区| 视频一区二区三区入口| 亚洲精品少妇| 国产第一亚洲| 亚洲精品高潮| 精品九九在线| 激情综合自拍| 亚洲欧洲日韩| 亚洲精品a级片| 91精品1区| 亚洲免费中文| 蜜臀a∨国产成人精品| 中文不卡在线| 91久久精品无嫩草影院| 亚洲欧洲日韩精品在线| 奇米狠狠一区二区三区| 国产日韩一区| 91亚洲自偷观看高清| 久久男女视频| 香蕉久久夜色精品国产| 日本va欧美va欧美va精品| 亚洲1区在线观看| 国产精品99久久免费| 亚洲精品.com| 日本成人手机在线| av免费不卡国产观看| 久久午夜精品一区二区| 日韩中文影院| 免费亚洲一区| 欧美日韩国产探花| 麻豆91精品视频| 亚洲免费福利一区| 亚洲激情另类| 欧美sss在线视频| 蜜桃精品在线| 日韩av首页| 91精品日本| 奇米色欧美一区二区三区| 国产欧美日韩在线一区二区 | 久久国产免费看| 亚洲精品大全| 久久精品97| 裤袜国产欧美精品一区| 欧美天堂亚洲电影院在线观看| 日韩不卡一二三区| 在线天堂资源www在线污| 国产视频一区在线观看一区免费| 日韩av午夜在线观看| 色欧美自拍视频| 亚洲在线电影| 欧美aa在线视频| 天堂va在线高清一区| 亚洲不卡系列| 91精品国产自产在线观看永久∴ | 精品理论电影在线| 欧美日韩国产亚洲一区| 国产高清不卡| 成人精品天堂一区二区三区| 日韩不卡在线| 国产在线成人| 亚洲涩涩av| 日本不卡视频在线| 国产精品久久| 国产另类在线| 精品黄色一级片| 久久国产日韩| 蜜臀精品久久久久久蜜臀| 国产精品久久久久久久免费观看| 精品久久精品| 黄色在线一区| 久久亚洲精品中文字幕蜜潮电影| 日本久久一区| 国产精品成人自拍| 国产成人77亚洲精品www| 美女精品在线|