1. 程式人生 > >Android Studio 更新中的問題

Android Studio 更新中的問題

        Android Studio 更新時 會提示更新 Android Plugin for Gradle 和 Gradle 為最新版本, 但是對於一些老專案 可是要慎重考慮。

Gradle 和  Android Plugin 之間的關係:

  • Gradle 是一種構建工具  .... 更多的等我學會了再補充
  • 對於Android Studio  使用 Gradle 構建專案,需要使用 Android Plugin  for Gradle 外掛來共同協作才能使Android 專案編譯成功  而且 兩者之間的版本號有一個對應關係,版本號對應上了才能編譯成功。


build.gradle詳解   

        as 中的所有配置盡在build.gradle 檔案中,打包的時候也是解析build.gralde檔案來打包的,專案中一般會出現兩個build.gradle 檔案 ,一個在根目錄下,一個在app目錄下。

    

app 目錄下的build.gradle

  •  apply plugin,宣告是Android應用程式還是庫模組
  •  android 閉包,配置專案構建的各種屬性,
    compileSdkVersion用於指定專案的編譯SDK版本,buildToolsVersion用於指定專案構建工具的版本。

defaultConfig閉包:預設配置,應用程式包名,最小 sdk 版本,目標 sdk 版本,版本號,版本名

buildTypes閉包:指定生成安裝檔案的配置,是否對程式碼進行混淆

signingConfigs 閉包:簽名信息配置

sourceSets 閉包:原始檔路徑配置

lintOptions 閉包:lint 配置


另外注意 

 有時候專案會報錯,找不到 gradle 2.3.3 這類的問題 可能需要修改一下這裡吧

repositories {

// mavenCentral() 該倉庫中沒有gradle:2.3.3

jcenter()

}

  •  dependencies 閉包,指定當前專案的所有依賴關係,本地依賴,庫依賴以及遠端依賴
  •  repositories閉包,倉庫配置
  1. // 宣告是Android程式,  
  2. //com.android.application 表示這是一個應用程式模組,可直接執行  
  3. //com.android.library 標識這是一個庫模組,是依附別的應用程式執行  
  4. apply plugin: 'com.android.application'  
  5.   
  6. android {  
  7.     //程式在編譯的時候會檢查lint,有任何錯誤提示會停止build,我們可以關閉這個開關  
  8.     lintOptions {  
  9.         //即使報錯也不會停止打包  
  10.         abortOnError false  
  11.         //打包release版本的時候是否進行檢測  
  12.         checkReleaseBuilds false  
  13.     }  
  14.   
  15.     //編譯sdk的版本,也就是API Level,例如API-19、API-20、API-21等等。  
  16.     compileSdkVersion 26  
  17.     //build tools的版本,其中包括了打包工具aapt、dx等等。  
  18.     //這個工具的目錄位於你的sdk目錄/build-tools/下  
  19.     buildToolsVersion '26.0.2'  
  20.   
  21.     //關閉Android Studio的PNG合法性檢查  
  22.     aaptOptions.cruncherEnabled = false  
  23.     aaptOptions.useNewCruncher = false  
  24.   
  25.     defaultConfig {  //預設配置  
  26.         applicationId "com.hebbe.espressotest" //應用程式的包名  
  27.         minSdkVersion 22  //最小sdk版本,如果裝置小於這個版本或者大於maxSdkVersion將無法安裝這個應用  
  28.         targetSdkVersion 26 //目標sdk版本,充分測試過的版本(建議版本)  
  29.         versionCode 1  //版本號,第一版是1,之後每更新一次加1  
  30.         versionName "1.0" //版本名,顯示給使用者看到的版本號  
  31.   
  32.         archivesBaseName = "weshare-$versionName" //指定打包成Jar檔案時候的檔名稱  
  33.         ndk {  
  34.             moduleName "hebbewifisafe"                   //設定庫(so)檔名稱  
  35.             ldLibs "log""z""m""jnigraphics""android"  
  36.             //引入庫,比如要用到的__android_log_print  
  37.             abiFilters "armeabi""x86""armeabi-v7a"      //, "x86"  顯示指定支援的ABIs  
  38.             cFlags "-std=c++11 -fexceptions"                // C++11  
  39.             stl "gnustl_static"  
  40.         }  
  41.   
  42.         //當方法數超過65535(方法的索引使用的是一個short值,  
  43.         //而short最大值是65535)的時候允許打包成多個dex檔案,動態載入dex。這裡面坑很深啊  
  44.         multiDexEnabled true  
  45.   
  46.         //Instrumentation單元測試  
  47.         testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"  
  48.     }  
  49.   
  50.     //預設的一些檔案路徑的配置  
  51.     sourceSets {  
  52.         main {  
  53.             manifest.srcFile 'AndroidManifest.xml'//指定清單檔案  
  54.             res.srcDirs = ['res']//指定res資源目錄  
  55.             assets.srcDirs = ['assets']    //asset資源目錄  
  56.             jni.srcDirs 'src/main/jni'     //jni程式碼目錄  
  57.             jniLibs.srcDir 'src/main/jniLibs' //jni庫目錄  
  58.             java.srcDirs = ['src']//指定java原始碼目錄  
  59.             resources.srcDirs = ['src']//指定resource目錄  
  60.             aidl.srcDirs = ['src']//指定aidl目錄  
  61.             renderscript.srcDirs = ['src']//指定source目錄  
  62.         }  
  63.         debug.setRoot('build-types/debug')//指定debug模式的路徑  
  64.         release.setRoot('build-types/release')//指定release模式的路徑  
  65.     }  
  66.   
  67.     //multiDex的一些相關配置,這樣配置可以讓你的編譯速度更快  
  68.     dexOptions {  
  69.         //讓它不要對Lib做preDexing  
  70.         preDexLibraries = false  
  71.         //開啟incremental dexing,優化編譯效率,這個功能android studio預設是關閉的。  
  72.         incremental true  
  73.         javaMaxHeapSize "4g"     //增加java堆記憶體大小  
  74.     }  
  75.   
  76.     signingConfigs {//簽名配置  
  77.         release {//釋出版簽名配置  
  78.             storeFile file("fk.keystore")//金鑰檔案路徑  
  79.             storePassword "123456"//金鑰檔案密碼  
  80.             keyAlias "fk"//key別名  
  81.             keyPassword "123456"//key密碼  
  82.         }  
  83.         debug {//debug版簽名配置  
  84.             storeFile file("fk.keystore")  
  85.             storePassword "123456"  
  86.             keyAlias "fk"  
  87.             keyPassword "123456"  
  88.         }  
  89.     }  
  90.   
  91.     //指定生成安裝檔案的配置,常有兩個子包:release,debug,注:直接執行的都是debug安裝檔案  
  92.     buildTypes {  
  93.         //release版本的配置,即生成正式版安裝檔案的配置  
  94.         release {  
  95.             zipAlignEnabled true  //是否支援zip  
  96.             shrinkResources true  // 移除無用的resource檔案  
  97.             minifyEnabled false //是否對程式碼進行混淆,true表示混淆  
  98.             //指定混淆時使用的規則檔案;  
  99.             // proguard-android.txt指所有專案通用的混淆規則,proguard-rules.pro當前專案特有的混淆規則  
  100.             //release的Proguard預設為Module下的proguard-rules.pro檔案  
  101.             proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'  
  102.             debuggable false  //是否支援除錯  
  103.             //ndk的一些配置  
  104.             ndk {  
  105.                 // cFlags "-std=c++11 -fexceptions -O3 -D__RELEASE__" // C++11  
  106.                 // platformVersion  = "19"  
  107.                 moduleName "hebbewifisafe" //設定庫(so)檔名稱  
  108.                 ldLibs "log""z""m""jnigraphics""android"  
  109.                 //引入庫,比如要用到的__android_log_print  
  110.                 abiFilters "armeabi""x86""armeabi-v7a"//, "x86"  
  111.                 cFlags "-std=c++11 -fexceptions" // C++11  
  112.                 stl "gnustl_static"  
  113.             }  
  114.             //採用動態替換字串的方式生成不同的release.apk  
  115.             applicationVariants.all { variant ->  
  116.                 variant.outputs.each { output ->  
  117.                     def outputFile = output.outputFile  
  118.                     if (outputFile != null && outputFile.name.endsWith('release.apk')) {  
  119.                         def timeStamp = 

    相關推薦

    Android Studio 更新的問題

            Android Studio 更新時 會提示更新 Android Plugin for Gradle 和 Gradle 為最新版本, 但是對於一些老專案 可是要慎重考慮。 Gradle 和 

    android studio 更新 Gradle錯誤解決方法(Gradle sync failed)

    app 是我 clear 聯網 建議 span 內容 roi file android studio 更新 Gradle錯誤解決方法 Android Studio每次更新版本都會更新Gradle這個插件,但由於長城的問題每次更新都是失敗,又是停止在Refre

    android studio更新gradle失敗的解決辦法-轉

    簡書 wrapper all mina wrap 技術 有一個 class tar android studio中每次自動更新gradle時速度實在太慢因為gradle服務器比較慢,所以更新gradle會比較慢,建議先下載下來,然後手動添加到gradle的下載目

    android studio 開發啟動android項目報錯sdk版本不一致解決方案

    技術分享 發現 依賴 adl 目的 clas studio ima 需要 安卓項目開發中新建項目後再run‘的時候發現報錯com.android.support:appcompat-v7依賴報錯 查看下build.gredle所配置的參數: 打開項目的bui

    Android Studio 3 搭建protobuf環境

      考慮Android專案中為提高傳輸速率、降低資料量以達到優化使用者體驗,就選擇了使用protobuf。那麼如何在專案中使用Android Studio 3 進行整合呢? 接下來讓我來帶你去看看如何搭建。 工具/原料 安卓手機 Android Studi

    Android Studio更新成2.3以後Gradle大坑拯救,gradle安裝異常解決辦法

    Studio更新一次能要了我半條命,我的Studio每次都很幸運地出現這樣那樣的問題,這次也不例外。 更新完2.3以後就一直Refreshing。而且大腦遲鈍的我一個多小時以後才發現…… 就像這樣 好吧,問題來了就解決問題。 主要參考部落格:http://blog.csdn.net/

    Android Studio專案的Gradle檢視內容

    Android Studio專案中的Gradle檢視內容 使用Android Studio的同學都知道,我們可以方便的在Gradle檢視中檢視專案中的Task, 雙擊Task就可以執行它。如下圖所示: 那麼檢視中的元素跟我們的專案都有什麼對應關係呢?請往下看。 Grad

    Android studio專案的gradle.properties詳解

    Android studio專案中的gradle.properties詳解 在使用Android Studio新建Android專案之後,在專案根目錄下會預設生成一個gradle.properties檔案,我們可以在裡面做一些Gradle檔案的全域性性的配置,也可以將比較私密的資訊放

    Android-0.Android Studio佈局layout_weight用法

    Indicates how much of the extra space in the LinearLayout is allocated to the view associated with these LayoutParams. Specify 0 if the v

    Android-0.Android Studio佈局ConstraintLayout及designer簡介

    Design and blueprint:用於選擇在編輯器中檢視佈局的方式。Design 檢視顯示佈局的彩色預覽,而 Blueprint 檢視僅顯示每個檢視的輪廓。或者,您可以並排檢視 Design + Blueprint 。 Screen orientation:用於在橫屏和豎屏方向之間旋轉裝置。 D

    Android Studio更新導致Program type already present:的問題以及如下描述。R檔案丟失問題 Error:Execution failed for task ':app:processDebugManifest'

    All com.android.support libraries must use the exact same version specification (mixing versions can lead to runtime crashes). Found versions 27.1.1,

    Android Studio更新3.2.1 出現 Could not GET錯誤 與 gradel得不到pom檔案

    Studio更新3.2.1 冒出一個Could not GET錯誤,找了下勾選了setting 裡gradle中studio的enable,以為順利解決,問題又來了變成gradel得不到pom檔案,類似這樣的Error:Unable to resolve dependency

    Android Studio專案三種依賴的新增方式

    通常一個AS專案中的依賴關係有三種,一是本地依賴(主要是對本地的jar包),二是模組依賴,三是遠端依賴;新增這些依賴的目的在於上我們想要在專案的某一個模組中使用其中的功能,比如okttp這個網路框架庫,如果我們想要在專案的app模組下使用這個庫的功能,則需要在app模組的build.gradle

    Android Studio更新之後Re-download dependencies and sync project (requires network)問題

    Android Studio更新之後報錯 Error:Failed to open zip file. Gradle’s dependency cache may be corrupt (this sometimes occurs after a netwo

    Android Studio開發遇到的幾個問題及其解決方法

    1.建立虛擬機器後,執行時出現錯誤對話方塊,錯誤內容如下: KVM is required to run this AVD. /dev/kvm is not found. Enable VT-x in your BIOS security settings, ensure

    Android Studio 更新SDK無法聯網問題

        Android studio通過獲取Android SDK Sites設定的offline repo來安裝,預設的offiline Repo可能重新整理不出來SDK Platform和SDK Tools的其他版本,需要修改offline repo的URL,即offli

    Android Studio工作如何改變(設定)選擇的最小SDK版本

      在某些時候,我們在建立Android專案時,為了更好的相容性,選擇了比較低的版本,可是在設計專案的時候,環境報錯,某些控制元件僅僅支援一些較高SDK的版本。   就比如博主在使用AlertDial

    android studio使用遇到的問題記錄

    倒敘記錄 13、fresco 幾個庫  在gradle下一直更新不下來 原因 做了 12 步的處理。設定了代理,但是隊友 並沒有代理軟體  導致有幾個包下不下來。典型的就是 fresco。 所以該配置可以忽略不上傳 12、Error:Connection tim

    Android studio更新到1.5後遇到的問題

    錯誤描述: Gradle sync failed: Unknown host 'services.gradle.org'. You may need to adjust the proxy setti

    Android studio專案使用JNI呼叫opencv的c++程式

    前言 opencv雖然有java版本,但是對於輪廓,點等資料結構和c++版本不一樣,這給移植帶來了大量的工作量。好在java有JNI(Java Native Interface)可以呼叫c++函式。 本文主要介紹如何在安卓手機APP專案中呼叫用c++寫的通過op