項目結(jié)構(gòu)概述

項目結(jié)構(gòu)示意圖
2.1.png
2.2.png
結(jié)構(gòu)簡單分析
  • .gradle .idea 目錄: 自動配置的文件

  • app 目錄:代碼撮慨、資源等內(nèi)容都在這個文件夾下

    • build 目錄:編譯時自動生成

    • libs目錄:存放第三方j(luò)ar包

    • src目錄:源碼目錄

      • androidTest目錄:自動化測試用的

      • main目錄:工作目錄房匆,通常只管這個目錄下的文件

        • java目錄:寫代碼的目錄蜗帜,activitivity.java文件就在里面

        • res目錄:放資源的目錄

          • drawable放圖片

          • layout放布局

          • values放字符串

          • mipmap放應(yīng)用圖標(biāo)(h聪全,m,xh等對應(yīng)不同分辨率)

        • AndroidManifest.xml文件:整個項目的配置文件熏矿,四大組件都在這注冊艰亮,添加權(quán)限聲明等

      • test目錄:Unit Test測試使用

      • .gitnore文件:版本控制使用

      • app.iml文件:AS自動生成的

      • build.gradle文件:gradle腳本構(gòu)建文件

      • proguard-rules.pro文件:代碼混淆用的,防止app被破解

    • gradle目錄:包含gradle wrapper的配置文件

    • .gitgnore 文件:版本控制相關(guān)

    • build.gradle文件:構(gòu)建gradle的全局腳本文件

    • gradle.properties文件:配置gradle的全局配置文件

    • gradlew gradlew.bat文件:執(zhí)行gradle命令的文件误债,bat文件是windows系統(tǒng)用的

    • HelloWorld.iml文件:別管浸船,AS自動生成的文件

    • local.properties文件:指定本機Android SDK路徑妄迁,通常自動生成

    • settings.gradle文件:指定引入的模塊

    主要文件分析
    AndroidManifest.xml
    <activity android:name=".MainActivity">
      <intent-filter>
      <action android:name="android.intent.action.MAIN" />
      <category android:name="android.intent.category.LAUNCHER" />
      </intent-filter>
     </activity>

     //表示對MainActivity這個活動進行注冊,沒注冊不能用李命。其中
     <action android:name="android.intent.action.MAIN" />
     和
     <category android:name="android.intent.category.LAUNCHER" />
     //表示這個活動是項目的主活動栅组,也是最先啟動的活動翼岁。
資源引用

布局文件通過R.layout.activity_main來引用蹦浦,那其他資源如何引用呢劈伴?比如HelloWorld這個字符串丧荐,它的資源文件是strings.xml

    <resources>
      <string name="app_name">HelloWorld</string>
    </resources></pre>
  • 代碼中引用:R.string.app_name

  • xml中引用:@string/app_name

同樣的窜管,如果是圖片資源就將string替換為drawable揩尸,圖標(biāo)則是mipmap宛渐,布局文件就是layout

androidStudio 配置文件分析
外層build.gradle文件
   //這個文件是自動生成的
     buildscript {
      repositories {
       google()
       jcenter()
      }
      dependencies {
       classpath 'com.android.tools.build:gradle:3.5.3'
      }
     }
     ?
     allprojects {
      repositories {
       google()
       jcenter()
      }
     }
   ```  ?
     //repositories{}中聲明了jcenter()界斜,這是一個代碼托管倉庫仿耽,聲明了這個就能引用jcenter的開源項目了。還聲明了goole()各薇,這是google自有的倉庫项贺。

     //dependencies中使用classpath聲明了一個Gradle插件,用來表示這是個Android項目而不是C++或其他項目峭判。
內(nèi)層builld.gradle文件
     apply plugin: 'com.android.application'
     ?
     android {
      compileSdkVersion 29
      buildToolsVersion "29.0.2"
      defaultConfig {
      applicationId "com.example.helloworld"
      minSdkVersion 15
      targetSdkVersion 29
      versionCode 1
      versionName "1.0"
      testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
      }
      buildTypes {
      release {
      minifyEnabled false
      proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
      }
      }
     }
     ?
     dependencies {
      implementation fileTree(dir: 'libs', include: ['*.jar'])
      implementation 'androidx.appcompat:appcompat:1.0.2'
      implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
      testImplementation 'junit:junit:4.12'
      androidTestImplementation 'androidx.test.ext:junit:1.1.0'
      androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'
     }
    
  • 第一行應(yīng)用了一個插件开缎,一般選兩個值:

    • com.android.application:表示這是個應(yīng)用程序模塊

    • com.android.library:表示這是個庫模塊,只能依附于別的應(yīng)用程序模塊運行

  • 第三行android{}配置項目構(gòu)建的屬性:

    • compileSdkVersion指定編譯的版本林螃,29代表用Android 10的SDK編譯

    • buildToolsVersion指定構(gòu)建工具的版本奕删,有最新的AS會提示

    • defaultConfig{}細節(jié)配置

      • applicationId指定包名

      • minSdkVersion指定最低兼容版本,15表示Android4.0

      • targetSdkVersion數(shù)字越大會啟用一些新功能疗认,比如權(quán)限控制等

      • versionCode項目版本號

      • versionName項目版本名

    • buildTypes{}指定生成安裝文件的配置

      • release{}正式版安裝文件的配置

        • minifyEnabled指定是否代碼混淆

        • proguardFiles指定混淆的規(guī)則文件

          • proguard-android-optimize.txtSDK目錄下完残,項目通用混淆規(guī)則

          • proguard-rules.pro當(dāng)前項目根目錄下,當(dāng)前項目的特有混淆規(guī)則

      • debug{}測試版安裝文件的配置横漏,通常忽略不寫

  • dependencies{}:指定當(dāng)前項目的所有依賴關(guān)系

    • 第一行:fileTree:本地依賴

    • 第二三行:遠程依賴:androidx.appcompat域名部分谨设,appcompat組名,1.0.2是版本名缎浇。Gradle會先檢查本地是否已經(jīng)有此庫的緩存扎拣,如果沒有就會聯(lián)網(wǎng)下載

    • 最后三行用來測試用例,暫時用不到素跺。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末鹏秋,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子亡笑,更是在濱河造成了極大的恐慌侣夷,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件仑乌,死亡現(xiàn)場離奇詭異百拓,居然都是意外死亡琴锭,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進店門衙传,熙熙樓的掌柜王于貴愁眉苦臉地迎上來决帖,“玉大人,你說我怎么就攤上這事蓖捶〉鼗兀” “怎么了?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵俊鱼,是天一觀的道長刻像。 經(jīng)常有香客問我,道長并闲,這世上最難降的妖魔是什么细睡? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮帝火,結(jié)果婚禮上溜徙,老公的妹妹穿的比我還像新娘。我一直安慰自己犀填,他們只是感情好蠢壹,可當(dāng)我...
    茶點故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著九巡,像睡著了一般知残。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上比庄,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天求妹,我揣著相機與錄音,去河邊找鬼佳窑。 笑死制恍,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的神凑。 我是一名探鬼主播净神,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼溉委!你這毒婦竟也來了鹃唯?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤瓣喊,失蹤者是張志新(化名)和其女友劉穎坡慌,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體藻三,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡洪橘,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年跪者,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片熄求。...
    茶點故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡渣玲,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出弟晚,到底是詐尸還是另有隱情忘衍,我是刑警寧澤,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布卿城,位于F島的核電站枚钓,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏藻雪。R本人自食惡果不足惜秘噪,卻給世界環(huán)境...
    茶點故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一狸吞、第九天 我趴在偏房一處隱蔽的房頂上張望勉耀。 院中可真熱鬧,春花似錦蹋偏、人聲如沸便斥。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽枢纠。三九已至,卻和暖如春黎棠,著一層夾襖步出監(jiān)牢的瞬間晋渺,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工脓斩, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留木西,地道東北人。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓随静,卻偏偏與公主長得像八千,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子燎猛,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,713評論 2 354

推薦閱讀更多精彩內(nèi)容