Android studio gradle配置完整版
https://my.oschina.net/u/1471093/blog/539075html
Android studio 自定義打包apk名 - petercao - 博客園
http://www.cnblogs.com/bluestorm/p/6228085.htmljava
gradle升級更新,有些方法已通過時,在此從新更新一下gradle配置。上代碼,先睹爲快。android
apply plugin: 'com.android.application' //設置編譯android項目的參數 android { compileSdkVersion 22 buildToolsVersion "22.0.1" defaultConfig { // applicationId "默認包名" minSdkVersion 9 targetSdkVersion 22 //versionCode 229 //versionName "2.2.9" } /** *Android默認配置,建議不寫,直接用系統默認的配置 */ sourceSets { main { manifest.srcFile 'AndroidManifest.xml' java.srcDirs = ['src'] resources.srcDirs = ['src'] aidl.srcDirs = ['src'] renderscript.srcDirs = ['src'] res.srcDirs = ['res'] assets.srcDirs = ['assets'] /** *若是.so文件跟Eclipse同樣放在了libs文件夾下就須要加上這一行代碼 */ jniLibs.srcDirs = ['libs'] } //測試所在的路徑,這裏假設是tests文件夾,沒有能夠不寫這一行 instrumentTest.setRoot('tests') } /*** 簽名設置*/ signingConfigs { myConfig { storeFile file("F:\\123.keystore"); keyAlias "123" keyPassword "123456" storePassword "123456" } } /** *調用本地aar文件 */ repositories { //mavenLocal() //mavenCentral() flatDir { dirs 'libs' } } /*** 渠道打包*/ productFlavors { xxx {//渠道名 applicationId "修改的包名" versionName "2.2.9" versionCode 229 } xxx1 {//渠道名 applicationId "修改的包名" versionName "2.2.9" versionCode 229 } } /** * 替換AndroidManifest.xml的BaiduMobAd_CHANNEL_VALUE字符串爲渠道名稱格式 * <meta-data * android:name="BaiduMobAd_CHANNEL" * android:value="${BaiduMobAd_CHANNEL_VALUE}" /> */ productFlavors.all { flavor -> flavor.manifestPlaceholders = [BaiduMobAd_CHANNEL_VALUE: name] } /** * 混淆設置 */ buildTypes { release { signingConfig signingConfigs.myConfig minifyEnabled true//是否混淆 proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } debug { signingConfig signingConfigs.myConfig minifyEnabled true//是否混淆 proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { compile fileTree(include: ['*.jar'], dir: 'libs') compile 'com.android.support:appcompat-v7:22.2.1' compile(name: 'pulltorefresh', ext: 'aar') }
在此須要說明的是,須要注意build文件裏面方法的順序。若是在在方法體中用到咱們書寫的方法的話,該方法必須放在用到的方法的後面。網絡
(1)在此推翻之前咱們寫的那個so文件的引用,其實so文件的地址也能夠經過下面的代碼來配置:app
//Android默認配置 sourceSets { main { manifest.srcFile 'AndroidManifest.xml' java.srcDirs = ['src'] resources.srcDirs = ['src'] aidl.srcDirs = ['src'] renderscript.srcDirs = ['src'] res.srcDirs = ['res'] assets.srcDirs = ['assets'] /** *若是.so文件跟Eclipse同樣放在了libs文件夾下就須要加上這一行代碼 */ jniLibs.srcDirs = ['libs'] } //測試所在的路徑,這裏假設是tests文件夾,沒有能夠不寫這一行 instrumentTest.setRoot('tests') }
(2)android studio的默認配置爲:maven
1.在「src/main」目錄中新建名爲「jniLibs」的目錄;tcp
2.將so文件複製、粘貼到「jniLibs」目錄內。測試
對於項目依賴 android library的話,就不是依賴一個jar,那麼簡單了,在這裏須要使用gradle mulit project 機制。在過去,android library並無一個很好的包管理方式,簡單來講,在gradle出現之前,官方並無一種用於管理android library 依賴包的方式,通常咱們都是直接下載別人的android library project 源碼進行集成,而對於第三方的android-maven-plugin 用的是apklib 格式。gradle
而如今,官方終於推出一種android library的打包格式,擴展名爲*.aar
。前面提到,目前android gradle插件並不支持本地直接使用*.aar
文件,不過,支持包管理庫的引用方式,下面,我爲你們說一下,怎麼對android library 發佈使用。ui
打包android library
對android library 進行打包直接在library項目下面使用gradle build
便可,而後,你就會在 build/outputs/aar 目錄下看到兩個*.aar
文件,一個debug包用的,一個是release 下用的,看我的需求使用,這裏咱們用的是release 版本的 .aar 文件。
引用腳本跟前面講的依賴庫類似
dependencies { compile(name: 'pulltorefresh', ext: 'aar') }
pulltorefresh爲咱們library生成aar文件的名字。關於library的建立和添加,在此不作贅述。
(1)aar與jar的區別
*.jar:只包含了class文件與清單文件,不包含資源文件,如圖片等全部res中的文件。
*.aar:包含全部資源,class以及res資源文件所有包含
*.aar:有兩種方式,分別爲本地加載以及網絡加載,因爲網絡加載涉及到發佈到mavenCentral託管的問題這裏不作討論;在這裏給你們說一種本地加載的方式,簡單快捷。
這裏演示的aar文件爲:」pulltorefresh.aar「
aar須要拷貝到「libs」文件夾下,gradle配置爲
/** *調用本地aar文件 */ repositories { //mavenLocal() //mavenCentral() flatDir { dirs 'libs' } } dependencies { compile(name:'pulltorefresh', ext:'aar') }
如今,終於到了最後一步,自動多渠道修改包名打包(聽着就高大上【偷笑】)。如今自動打包也有兩種方法。
(1)手動觸發
跟普通打包同樣,最後選擇渠道時,按住「shift」點擊所有選中,肯定,你就能夠關閉屏幕,下班了。次日早晨來收穫結果。
(2)代碼自動運行
點擊studio面板上的「Terminal」或者「cmd」進入到當前工程的根目錄下執行gradlew assembleRelease命令自動進行多渠道打包。還有一個相似的命令:gradlew assembleDebug想必經過名字,就能到猜想出。
注意:第一次執行打包命令的時候,會自動下載一些與打包相關的文件。
最後,打包完成的apk在哪呢?這也是咱們最關注的問題。在當前Module的build->outputs->apk文件夾下。
你們也能夠看一下,之前我關於對gradle的配置,在此附上地址:Android studio gradle配置和android studio gradle 配置修改
另外:在開發Android應用時,一般狀況下是經過USB數據線鏈接設備和計算機,但對於一些須要使用USB設備的應用,這種方法就碰到了麻煩,手機的USB接口已經和外接的USB設備鏈接,沒法再連數據線,此時能夠經過網絡TCPIP的方法來進行。也就是然ADB 經過網絡來鏈接設備,而無需USB數據線。
具體方法以下:
1. 使用USB數據線鏈接設備。
2. 在命令行輸入adb tcpip 5555 ( 5555爲端口號,能夠自由指定)。
3. 斷開 USB數據,此時能夠鏈接你須要鏈接的|USB設備。
4. 再計算機命令行輸入 adb connect <設備的IP地址>:5555
後面就可使用ADB ,DDMS 來調試Android應用或顯示Logcat 消息。