Android studio gradle配置完整版

        gradle升級更新,有些方法已通過時,在此從新更新一下gradle配置。上代碼,先睹爲快。
java

1、build.gradle文件

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文件裏面方法的順序。若是在在方法體中用到咱們書寫的方法的話,該方法必須放在用到的方法的後面。android

2、.so文件的處理

        (1)在此推翻之前咱們寫的那個so文件的引用,其實so文件的地址也能夠經過下面的代碼來配置:網絡

 //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的默認配置爲:app

        1.在「src/main」目錄中新建名爲「jniLibs」的目錄;maven

        2.將so文件複製、粘貼到「jniLibs」目錄內。tcp

3、aar文件與jar文件

        對於項目依賴 android library的話,就不是依賴一個jar,那麼簡單了,在這裏須要使用gradle mulit project 機制。在過去,android library並無一個很好的包管理方式,簡單來講,在gradle出現之前,官方並無一種用於管理android library 依賴包的方式,通常咱們都是直接下載別人的android library project 源碼進行集成,而對於第三方的android-maven-plugin 用的是apklib 格式。測試

        而如今,官方終於推出一種android library的打包格式,擴展名爲*.aar。前面提到,目前android gradle插件並不支持本地直接使用*.aar文件,不過,支持包管理庫的引用方式,下面,我爲你們說一下,怎麼對android library 發佈使用。gradle

        打包android libraryui

        對android library 進行打包直接在library項目下面使用gradle build 便可,而後,你就會在 build/outputs/aar 目錄下看到兩個*.aar文件,一個debug包用的,一個是release 下用的,看我的需求使用,這裏咱們用的是release 版本的 .aar 文件。spa

        引用腳本跟前面講的依賴庫類似

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')
}

4、打包

        如今,終於到了最後一步,自動多渠道修改包名打包(聽着就高大上【偷笑】)。如今自動打包也有兩種方法。

(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 消息。

相關文章
相關標籤/搜索