** 安卓外層文件夾簡介**
.gradle和.idea:如果用Android Studio編程,這兩個目錄為Android Studio自動生成的文件,無需關心。
app:項目中代碼資源等內容幾乎都放在這個目錄下。
build:主要包含了編譯時自動生成的文件。無需關心。
gradle:這個目錄下包含了gradle wrapper的配置文件,使用geadle wrapper的方式不需要提前將agradle下載好,而是自動根據(jù)本地緩存情況覺得是否需要聯(lián)網下載geadle。Android Studio默認沒有啟用gradle wrapper的方式。
.gitignore:這個文件是用來將指定的目錄或文件排除在版本控制之外的。
build.gradle:這是項目全局的gradle構建腳本,通常不需要修改。
.gradle.properties這個文件是全局的gradle配置文件,在這里配置的屬性將會影響到項目中所有gradle編譯腳本。
gradlew和gradlew.bat:這兩個文件夾是用來在命令行界面中執(zhí)行gradle命令的,其中gradlew是在linux和mac系統(tǒng)中使用的,gradlew.bat是在windows系統(tǒng)中使用。
HelloWorld.iml:無需修改的文件夾。
local.properties:指定本機中的Android SDK路徑,通常內容自動生成,無需修改。
settings.gradle:用于指定項目中所有引入的模塊。通常引入自動完成,不需修改。
外層app內目錄簡介
build:編譯時自動生成的文件,無需關心。
libs:如果項目中使用第三方jar包,就需要把這些jar包放入libs目錄下,
放在這個目錄下的jar包都會被自動添加到構建路徑去。
androidTest:此處是用來編寫androidTest測試用例的,可以對項目進行一些自動化測試。
java:放置java代碼的目錄。
res:項目中的圖片,布局,字符串等資源存放在這個目錄下。此目錄下子目錄
drawable存放圖片,layout存放布局,values存放字符串。
AndroidManifest.xml:這是整個android項目的配置文件,程序中定義的四大組件都需要在這個文件里注冊,另外還可以在這個文件里給應用程序添加權限聲明。
test:用來編寫Unit Test測試用例的,是對項目進行自動化測試的另一種方式。
.gitignore:這個文件用于將app模塊內的指定目錄或文件夾排除在版本控制之外,和外層.gitignore文件類似。
app.iml:Intellij IDEA項目自動生成的文件,無需修改。
build.gradle:這是app模塊的gradle構建腳本,這個文件中會指定很多項目構建相關的配置。
.proguard-rules.pro:這個文件用于指定項目代碼的混肴規(guī)則。
--
java文件內代碼簡介
activity是安卓系統(tǒng)提供的一個活動基類,我們項目中所有活動都必須繼承它或者他的子類才能擁有活動的特性(AppCompatActivity是Activity的子類,onCreate()方法是一個活動創(chuàng)建時必須執(zhí)行的方法。setContentView()方法是給當前活動引入一個布局
public class HelloWorldActivity extends AppCompatActivity { //表明HelloWorldActivity繼承自AppCompatActivity,這是一種向下兼容的activity
private static final String TAG = "HelloWorldActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.hello_world_layout);
AndroidManifest.xml內代碼解析
<activity android:name=".HelloWorldActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
這段代碼表示對HelloWorldActivity這個活動進行注冊。沒有在AndroidManifest里注冊的活動是不能使用的。其中
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
這兩段代碼表示HelloWorldActivity是這個項目的主活動,在手機上點擊app圖標,首先加載這個活動。
在代碼中通過R.String.Hello_World獲得字符串的引用
在xml中通過@String/HelloWorld獲得字符串的引用
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher" //設置應用圖標屬性
android:label="@string/app_name" //設置應用名稱屬性
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".HelloWorldActivity">
</application>
日志Log
android中的日志類是Log,一般添加在src/java文件夾里,在活動中的onCreate()方法內添加。Log.d("活動名","onCreate execute")有5個方法打印日志。
Log.v():打印最為瑣碎的,意義最小的日志信息。對應級別是varbose。是android里面級別最低的。
Log.d():用于打印一些調試信息。這些信息對你調試程序和分析問題是有幫助的。對應級別debug。比varbose高一級。
Log.i():用于打印一些比較重要的數(shù)據(jù),可以幫你分析用戶行為的數(shù)據(jù)。對應級別info。比debug高一級。
Log.w():用于打印一些警告信息,提示程序在這個地方可能存在潛在風險,最好修復一下出現(xiàn)警告的地方。對應級別warn。比info高一級。
Log.e():用于打印程序中的錯誤信息。比如程序進入到catch語句中,當有錯誤信息打印出來的時候,一般都代表你的程序出現(xiàn)嚴重問題了,必須盡快修復。對應級別error。比warn高一級。
app內build.gradle文件夾內代碼簡介
apply plugin: 'com.android.application' //com.android.application表示這是一個應用程序模塊,可以直接運行。如果是com.android.library表示這是一個庫模塊,只能作為代碼庫依附于別的應用程序運行
android { //一個安卓閉包
compileSdkVersion 21 //用于指定項目的編譯版本,如果是24就表示android7.0系統(tǒng)的SDK編譯
buildToolsVersion "21.1.0" //用于指定項目構建工具的版本,
defaultConfig { //閉包內的閉包
applicationId "com.nian.hua" //包名
minSdkVersion 14 //用于指定項目兼容android最低版本 如果是15表示最低兼容android4.0系統(tǒng)
targetSdkVersion 21 //指定的值用來表示用來表示你在安卓系統(tǒng)做了充分測試,如果是23或更大,就會出現(xiàn)android6.0系統(tǒng)的運行時權限功能,如果是22只會出現(xiàn)android5.1的功能,6.0的實時權限功能就沒有
versionCode 1 //用于指定項目的版本號(僅應用市場可見)
versionName "1.0" //用于指定項目的版本名(終端可見)
}
buildTypes { //這個閉包用于指定生成安裝文件的相關配置,通常只會有兩個子閉包,debug(用于指定生成測試版安裝文件的配置,可忽略不寫)和release(用于指定生成正式版安裝文件的配置)
release { //用于指定生成正式版安裝文件的配置
minifyEnabled false //用于指定是否對項目的代碼進行混肴,false表示不混肴
proguardFiles /* 用于指定混肴時的規(guī)則文件*/ getDefaultProguardFile('proguard-android.txt'/*android SDK目錄下,里面是所有項目通用的混肴規(guī)則*/), 'proguard-rules.pro'//當前項目的根目錄下,可以編寫當前項目特有的混肴規(guī)則
}
}
}
dependencies { //指定當前項目所有依定的關系Android Studio中有三種依賴關系,本地依賴(對本地jar包或目錄添加依賴關系),庫依賴(可以對項目中的庫模塊添加依賴關系)和遠程依賴(可以對jcenter庫上的開源項目添加依賴關系)。
compile fileTree /*這是一個本地聲明*/(dir: 'libs', include: ['*.jar']) //將libs目錄下所有.jar后綴的文件都添加到項目的構建路徑當中
//compile(遠程依賴聲明)'com.android.support:appcompat-v7:24.2.1' (com.android.support:appcompat-v7:24.2.1是一個標準的遠程依賴庫格式,其中com.android.support是域名部分,用于和其他公司的庫做區(qū)分。24.2.1是版本號,用于和同一個庫不同版本做區(qū)分。聲明這行代碼后gradle構建項目時會自動檢查本地是否有這個庫的緩存,沒有自動聯(lián)網下載,在添加到構建路徑當中。
}
最外層buile.gradle文件內代碼注釋
buildscript {
repositories {
jcenter() //jcenter是代碼托管倉庫,聲明這行代碼可以引用任何jcenter上的開源項目
}
dependencies {
classpath 'com.android.tools.build:gradle:1.+' //使用classpath聲明了一個Gradle插件,最后面部分是版本號(最新版是2.2.0)
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
jcenter()
}
}