Android 入門
Gradle
安裝配置
Linux下安裝gradle
構建檔案和創建任務
- 默認構建檔案為
build.gradle, 構建是可使用-b替代--build
gradle -b <fileName>
-
.gradle 檔案夾存放的是
Gradle的構建資訊 -
Gradle采用領域物件模型,每個Project維護一個TaskContain類的task屬性,Taskl代表需要執行的任務,允許指定依賴的任務、任務型別,可通過configure()方法配置任務,提供了doFirst()、doLast()方法來添加Action,Action和Closure物件都可代表Closure物件都可以是Action, -
為
Gradle構建檔案創建Task的常用方法- 呼叫
project.task() - 呼叫
TaskContainer.crate()
無論使用哪種方式創建
Task,通常都可為Task指定以下3種屬性:-
dependsOn:指定
Task所依賴的其它Task -
type:指定該
Task的型別 -
通過傳入的代碼塊引數配置
- 呼叫
-
Gradle構建程序- 配置階段
- 按依賴關系執行指定
Task
-
Gradle編譯程序
//應用名為java的插件,主要是為了引入JavaCompile、JavaExec兩個任務
apply plugin: 'java'
task compile(type:javaCompile){
source = filetree('src/main/java')
classpath = sourceSets.main.compileClassPath
destinationDir = file('build/classes/main')
options.fork = true
options.incremental = true
}
//指定任務型別為JavaExec
task run(type:JavaExec,dependsOn:'compile'){
classPath = sourceSets.main.runtimeClassPath
//指定主類為lee.HelloWorld
main = 'lee.HelloWorld'
}
編譯運行
gradle run
Gradle的屬性定義
1. 為屬性指定屬性值
//為Project內置屬性指定屬性值
version = 1.0.0
task showProps{
description = 'task'
}
Project 常用的屬性
- name:專案名稱
- path:專案絕對路徑
- description:專案描述路徑
- buildDir:專案的構建結果的存放路徑
- version: 專案版本號
2. 通過 ext 添加屬性
//使用ext方法傳入代碼來設定屬性
ext{
prop1 = 'prop1'
prop2 = 'prop2'
}
task showAddPros{
ext{
prop3 = 'prop3'
prop4 = 'prop4'
}
}
3. 通過-P選項添加屬性
gradle -P prop='prop-value' <task-name>
4. 通過JVM引數添加屬性
gradle -D org.gradle.project.prop= 'prop-value' <task-name>
增量式構建
Gradle通過任務的輸入、輸出部分是否發生改變來判斷該任務是否需要重新執行,Task使用TaskInputs型別inputs屬性來代表輸入,使用TaskOutputs型別outPuts屬性來代表輸出,
task fileContentCopy{
//定義代表source目錄的檔案集
def sourceTxt = fileTree("source")
def dest = file('dest.txt')
//定義任務的輸入和輸出
inputs.dir sourceTxt //指定輸出目錄為sourceTxt
outputs.file dest //指定輸出目錄為dest
}
Gradle 插件機制
應用插件相當于引入了該插件包含的所有任務型別、任務、屬性等,這樣Gradle就可以執行插件種預定義的任務,
apply plugin: <plugin-name>
#查看構建檔案支持的所有任務
apply tasks --all
通過resource專案添加第三方或額外的依賴原始碼
//配置被依賴的源代碼路徑
sourceSets{
fkframework
}
Gradle自動為為每個新建的sourceSets創建相應的Task,包括compilexxxJava,processxxxResource和xxxClasses這三個Task,
//配置compileJava任務依賴compilexxxJava任務
compileJava.dependsOn compilexxxJava
//將第三方專案位元組碼的存盤路徑添加到系統編譯時、運行時的類路徑中
sourceSets{
main{
compileClassPath = compileClassPath + files(xxx.output.classesDir)
}
test{
//將xxx生成的位元組碼檔案的存盤路徑添加到運行時的類路徑中
runtimeClassPath = runtimeClassPath + files(xxx.output.classDir)
}
}
依賴管理
Gradle 配置依賴步驟:
- 為
Gradle配置倉庫
//定義倉庫
reposities{
//使用Maven默認的中央倉庫
mavenCentral()
//使用遠程倉庫
url "http://repo2.maven.org/maven2"
//顯示指定本地磁盤路徑作為maven倉庫url
url "g:/abc"
}
- 為不同組配置依賴的
jar包
//使用configurations配置組
configrations{
//配置名為xxx的依賴組
xxx
}
dependencies {
//配置依賴的jar包
//為xxx依賴組添加了commons-logging 1.2的jar包
xxx group: 'commons-logging',name:'commons-logging',version:'1.2'
//簡寫
xxx 'commons-logging:commons-logging:1.2'
}
ADB
常用命令:
#查看當前運行的模擬器
abd devices
#電腦與手機之間檔案的相互復制
abd push <file-path> <targer-path>
#啟動模擬器的shell視窗
adb shell
#安裝、卸載APK程式
adb install [-r] [-s] <file>
#卸載APK程式
adb uninstatll [-k] <file>
開發Android應用
開發流程
- 創建專案
- 撰寫布局檔案
- 撰寫
java邏輯代碼
專案結構
AndroidMainfest.xml 檔案主要內容:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.topwisesz.helloworldapp">
<application
android:allowBackup="true"
android:dataExtractionRules="@xml/data_extraction_rules"
android:fullBackupContent="@xml/backup_rules"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.HelloWorldApp"
tools:targetApi="31">
<!--定義一個Android應用的一個組件-->
<activity android:name=".MainActivity"
android:exported="true">
<intent-filter>
<!--制定該Activity是程式入口-->
<action android:name="android.intent.action.MAIN" />
<!--制定運行時加載該應用時運行該Activity-->
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
Android基本組件
常用組件:VIew、Activity、Service、BroadcastReceiver、ContentProvider、Intent、IntentFilter
四大組件:Activity、Service、BroadcastReceiver、ContentProvider
View和Activity
View是所有UI控制元件的基類,Activity用于顯示View
//創建一個線性布局管理器
LinearLayout linearLayout = new LinearLayout(this);
//設定該Activity顯示線性布局
setContentView(linearLayout);
//設定該Activity顯示在main.xml定義的view
setContentView(R.layout.main);
BroadcastReceiver
BroadcastReceiver類似于一個全域監聽器,用于接受廣播訊息
使用BroadcastReceiver接受訊息步驟:
- 繼承BroadcastReceiver重寫OnReceive()方法
public class DefineBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
System.out.println("接受訊息");
}
}
- 發送廣播訊息
sendBroadcast();
sendstickBroadcast();
sendOrderedcast();
- 通過
Intentfilter配置BroadcastReceiver需接受的訊息 - 注冊
BroadcastReceiver- 通過代碼
Context.registReceiver()方法注冊BroadcastReciver - 在
AndroidMainfest.xml檔案中使用<receiver.../>元素完成注冊
- 通過代碼
ContentProvider
ContentProvider 可以實作不同應用之間的資料交換
//插入資料
insert(url,contentValues)
//洗掉指定資料
delete(url,contentValues)
//更新指定資料
update(url,contentValues,String,String[])
//查詢資料
query(url,String[],String,String[],String)
Intent和IntentFilter
Intent作為Android應用內不同之間通信的載體,Activity、Service、BroadcastReceiver三種組件都是以Intent作為通信主題;
//啟動Activity
context.startActivity(Intent intent);
context.startActivityForResult(Intent intent, int requestCode);
//啟動Service
context.startService(Intent intent);
bindService(Intent service,ServiceConnection conn,int flags);
//啟動BroadcastReceiver
sendBroadcast(Intent intent);
sendStickyBroadcast(Intent intent);
- 顯式
Intent:明確指定需要啟動或觸發的組件應滿足的類名 - 隱式
Intent:只是指定需要啟動或觸發的組件應滿足的條件
IntentFilter用于宣告Intent所滿足的條件,
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/500219.html
標籤:Android
