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

牽著老婆滿街逛

嚴以律己,寬以待人. 三思而后行.
GMail/GTalk: yanglinbo#google.com;
MSN/Email: tx7do#yahoo.com.cn;
QQ: 3 0 3 3 9 6 9 2 0 .

Android Studio實戰技巧

轉載自:http://www.cnblogs.com/qianxudetianxia/p/3987395.html


使用android studio開發項目的一些問題,功能和技巧。

1. 環境

Mac OSX 10.9.5 + Android Studio 0.8.9

2. gradle項目加載超慢

這是因為gradle官方下載地址特別慢導致,解決方案有2個:

  • VPN,干凈利索。

    推薦VPN

  • 拷貝一個gradle的已下載的壓縮包到gradle目錄的wrapper路徑下,然后關閉Android Studio在打開,它會自動識別并解壓好。

第二種方案,具體以Mac為例子,Android Studio 0.8.9默認使用的gradle版本還是gradle-1.12。

  • 下載gradle-1.12-all.zip,放到~/.gradle/wrapper/dists/gradle-1.12-all/2apkk7d25miauqf1pdjp1bm0uo,這個2apkk7d25miauqf1pdjp1bm0uo是隨機生成的標識碼,各人可能不一樣。

  • 效果圖。
    1

  • gradle-1.12-all.zip我上傳了一個到百度云盤。

    下載gradle-1.12-all.zip

  • linux的gradle的目錄和mac上一樣,Windows是在你的用戶目錄下。

3. Android Studio添加引用第三方Library

右鍵Module - Open Module Settings - Dependencies, 找到"+"按鈕,選擇Library dependency,彈出對話框,

選中support-annotations,

它會在Module下的build.gradle中的dependencies添加一行:

compile 'com.android.support:support-annotations:20.0.0'

4. 默認編譯的應用版本選擇

當你點擊那個右三角運行按鈕的時候,它默認是會運行debug版本,其實這里可以調整為默認編譯release版本,當然這點上可能對你不是很重要。

但是當你定義了各種版本,并且想區別開發,這就很有用了。

在左下角 - Build Variants - 選擇默認版本。

5. 顯示行號

Setings - Editor - Appearance - 勾選Show line numbers

6. 快捷鍵

這個網上有很多資料,而且在設置里面可以選擇自己習慣的Keymap,比如eclipse,這里點到為止。

列舉幾個參考鏈接:

http://www.developerphil.com/android-studio-tips-of-the-day-roundup-1/

http://www.developerphil.com/android-studio-tips-of-the-day-roundup-2/

7. 插件

Settings - Plugins - Browser repositories - 彈出對話框 - 選中某一插件 - 右邊Install plugin。

比如,安裝.gigignore support,提示需要重啟,重啟后查看.gitigore由之前的黑白變的有高亮效果了,還有其他功能,在插件介紹中都有詳細說明。

關于一些好的插件的推薦,可以單開一篇博客了,在此不贅述。

8. 多版本編譯

原理

采用動態替換渠道字符串的方式,生成各渠道的AndroidManifest.xml文件并打包。

說明:參考自友盟umeng-muti-channel-build-tool/Gradle,并實際項目驗證OK。

關鍵代碼
//替換AndroidManifest.xml的REPLACE_KEY字符串為渠道名稱 android.applicationVariants.all{ variant -> variant.processManifest.doLast{         //v1.11之前這里用的copy{},我換成了文件操作,這樣可以在v1.11版本正常運行,并保持文件夾整潔 //${buildDir}是指build文件夾 //${variant.dirName}是flavor/buildtype,例如GooglePlay/release,運行時會自動生成 //下面的路徑是類似這樣:build/intermediates/manifests/GooglePlay/release/AndroidManifest.xml def manifestFile = "${buildDir}/intermediates/manifests/${variant.dirName}/AndroidManifest.xml" //將字符串REPLACE_KEY替換成flavor的名字 def updatedContent = new File(manifestFile).getText('UTF-8').replaceAll("REPLACE_KEY", "${variant.productFlavors[0].name}") new File(manifestFile).write(updatedContent, 'UTF-8') //將此次flavor的AndroidManifest.xml文件指定為我們修改過的這個文件 variant.processResources.manifestFile = file("${buildDir}/intermediates/manifests/${variant.dirName}/AndroidManifest.xml") } }
具體步驟
  • AndroidManifest.xml中添加渠道meta
<application android:label="@string/app_name"> <meta-data android:name="APP_PID" android:value="default" /> <activity android:name="com.jayfeng.xxx" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application>
  • 完整的build.gradle
apply plugin: 'android' android { compileSdkVersion 19 buildToolsVersion '19.1' defaultConfig { applicationId 'com.jayfeng.app.test' minSdkVersion 15 targetSdkVersion 19 versionCode 1 versionName 'V1.0' } signingConfigs { myConfig { storeFile file("xxxxxx.keystore") storePassword "xxxxxxx" keyAlias "xxxxx" keyPassword "xxxxxx" } } buildTypes { release { signingConfig signingConfigs.myConfig runProguard false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } productFlavors { "default" {} google {} "91" {} hiapk {} gfan {} goapk {} appChina {} mumayi {} eoe {} nduo {} feiliu {} crossmo {} huawei {} QQ {} "3G" {} "360" {} baidu {} sohu {} "163" {} UC {} dangle {} samsung {} mmw {} xiaomi {} lenovo {} nearme {} } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile project(':mblog') } tasks.withType(Compile) { options.encoding = "UTF-8" } //替換AndroidManifest.xml的default字符串為渠道名稱 android.applicationVariants.all{ variant -> variant.processManifest.doLast{ //之前這里用的copy{},我換成了文件操作,這樣可以在v1.11版本正常運行,并保持文件夾整潔 //${buildDir}是指build文件夾 //${variant.dirName}是flavor/buildtype,例如GooglePlay/release,運行時會自動生成 //下面的路徑是類似這樣:build/manifests/GooglePlay/release/AndroidManifest.xml def manifestFile = "${buildDir}/intermediates/manifests/${variant.dirName}/AndroidManifest.xml" //將字符串default替換成flavor的名字 def updatedContent = new File(manifestFile).getText('UTF-8').replaceAll("default", "${variant.productFlavors[0].name}") new File(manifestFile).write(updatedContent, 'UTF-8') //將此次flavor的AndroidManifest.xml文件指定為我們修改過的這個文件 variant.processResources.manifestFile = file("${buildDir}/intermediates/manifests/${variant.dirName}/AndroidManifest.xml") } }

9. 小結

Android Studio作為新的開發工具,需要不斷的探索才能更好的使用,才能發揮出它遠勝eclipse的強大!

posted on 2015-06-12 15:44 楊粼波 閱讀(741) 評論(0)  編輯 收藏 引用


只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            欧美视频一区二区| 亚洲精品久久久久久久久久久久久 | 国产精品午夜在线| 国产精品日韩| 国产农村妇女毛片精品久久麻豆| 国产精品一区二区三区久久| 国产一区美女| 亚洲国产美女精品久久久久∴| 亚洲黑丝在线| 亚洲永久精品大片| 久久久久久久尹人综合网亚洲 | 国产精品久久久久77777| 国产精品vvv| 国产揄拍国内精品对白| 最新亚洲一区| 午夜免费日韩视频| 麻豆国产精品va在线观看不卡| 亚洲国产专区| 欧美一区二区高清| 欧美极品一区二区三区| 国产精品专区第二| 亚洲毛片播放| 久久久久国产精品www| 亚洲精品免费一二三区| 欧美一级黄色录像| 欧美日韩1234| 在线免费观看日本欧美| 亚洲一级网站| 欧美成人中文字幕| 亚洲在线观看免费| 欧美成人综合网站| 国产真实久久| 午夜精品成人在线视频| 亚洲精品一区二区三区蜜桃久| 久久精品国产91精品亚洲| 欧美日韩一区二区在线| 亚洲精品123区| 久久这里只有精品视频首页| 一区二区三区不卡视频在线观看 | 亚洲深夜福利视频| 老色鬼久久亚洲一区二区| 一区二区三区精品视频| 免费成人av在线| 国产一区二区三区直播精品电影| 亚洲每日更新| 欧美激情综合色| 久热精品视频| 在线观看久久av| 久久婷婷人人澡人人喊人人爽| 亚洲天堂免费观看| 欧美日韩理论| 在线视频精品| 亚洲日本免费电影| 欧美精品久久一区二区| 亚洲人体1000| 欧美成人国产| 亚洲精品极品| 亚洲美女性视频| 欧美日韩三级| 中文成人激情娱乐网| 亚洲人成毛片在线播放女女| 欧美精品色网| 亚洲精品乱码久久久久久日本蜜臀 | 亚洲欧美偷拍卡通变态| 国产精品普通话对白| 亚洲制服少妇| 亚洲色图自拍| 国产美女扒开尿口久久久| 亚洲综合精品一区二区| 亚洲图片欧美午夜| 欧美视频在线一区二区三区| 亚洲欧美成人综合| 亚洲欧美日韩爽爽影院| 激情视频一区二区| 免费视频一区| 欧美成人精品在线| 亚洲一区二区三区777| 亚洲一区二区精品视频| 国产日本欧美一区二区三区在线| 久久成人免费电影| 老牛影视一区二区三区| 99国产精品99久久久久久| 亚洲无吗在线| 国外成人免费视频| 亚洲国产婷婷| 国产精品狼人久久影院观看方式| 久久九九99| 欧美大片在线观看一区| 欧美亚洲在线视频| 老司机精品久久| 亚洲欧美成人一区二区三区| 久久久久9999亚洲精品| 一区二区三区国产盗摄| 欧美一区二区三区久久精品茉莉花| 在线欧美日韩国产| 在线一区观看| 亚洲国产黄色| 亚洲一区国产视频| 亚洲精品乱码久久久久久黑人 | 欧美视频一区二| 玖玖玖免费嫩草在线影院一区| 欧美日产国产成人免费图片| 久久精品国产成人| 欧美日韩成人在线播放| 久久婷婷久久一区二区三区| 欧美精品一区在线观看| 久久亚洲国产精品日日av夜夜| 欧美日韩精品免费在线观看视频| 久久精品免费播放| 国产精品国产馆在线真实露脸 | 性欧美长视频| 一区二区久久| 久久综合狠狠综合久久综合88| 午夜精品久久久久久| 欧美精品激情| 美女主播一区| 国产真实久久| 亚洲在线一区| 亚洲小视频在线观看| 久热精品在线视频| 久久久综合免费视频| 欧美自拍偷拍午夜视频| 欧美性色综合| 99精品国产福利在线观看免费| 亚洲人午夜精品| 麻豆精品在线视频| 免费成人高清视频| 在线播放国产一区中文字幕剧情欧美| 亚洲欧美日韩精品久久| 亚洲综合日本| 国产精品卡一卡二卡三| 亚洲私人影院| 亚洲免费一级电影| 国产精品第2页| 亚洲视频免费观看| 亚洲与欧洲av电影| 国产精品久久久久久久免费软件 | 亚久久调教视频| 国产精品免费aⅴ片在线观看| 中文在线不卡| 西西裸体人体做爰大胆久久久| 国产精品日韩欧美| 欧美一区二区三区免费观看| 欧美在线一二三区| 国产日韩欧美在线视频观看| 性色av一区二区三区在线观看| 久久久99久久精品女同性| 国产一级久久| 久久久亚洲一区| 亚洲国产精品热久久| 一区二区三区视频在线观看| 国产精品久久午夜| 欧美一区二区三区免费视频| 你懂的视频欧美| 亚洲麻豆一区| 国产精品免费一区豆花| 欧美在线一二三| 亚洲国产日日夜夜| 午夜久久美女| 亚洲国产精品t66y| 欧美日韩亚洲综合| 午夜精品在线看| 亚洲成色777777女色窝| 亚洲图片欧洲图片日韩av| 国产精品资源在线观看| 久久久综合视频| 日韩视频在线你懂得| 久久国产一区二区| 亚洲国产欧美不卡在线观看| 国产精品草草| 你懂的成人av| 亚洲欧美日韩国产一区| 亚洲二区在线观看| 欧美一区二区三区视频免费播放| 伊人精品久久久久7777| 欧美色大人视频| 久久综合给合| 亚洲免费中文字幕| 亚洲日本va午夜在线影院| 久久青青草原一区二区| 亚洲视频 欧洲视频| 在线国产欧美| 国产精品亚洲аv天堂网| 欧美精品国产| 久久福利影视| 亚洲无限av看| 亚洲美女免费视频| 久久夜色精品国产欧美乱| 亚洲在线成人| 亚洲欧美日韩国产中文在线| 亚洲一区二区高清视频| 久久久91精品| 亚洲尤物视频网| 亚洲国语精品自产拍在线观看| 国产日产高清欧美一区二区三区| 欧美一区二区精品久久911| 亚洲国产精品专区久久| 国产三级欧美三级日产三级99| 欧美日韩一区二区三区四区在线观看| 久久久久久午夜|