編輯:關於Android編程
本周的主要內容介紹Gradle,NDK,管理依賴和Git等
一、Gradle
Gradle是一個基於Apache Ant和Apache Maven概念的項目自動化建構工具。它使用一種基於Groovy的特定領域語言(DSL)來聲明項目設置,拋棄了基於XML的各種繁瑣配置。
面向Java應用為主。當前其支持的語言限於Java、Groovy和Scala,計劃未來將支持更多的語言。
Coding只是軟件開發中的一個部分
編譯源代碼
運行單元測試和集成測試
執行靜態代碼分析,生成分析報告
創建分布版本
部署到目標環境
部署傳遞過程
執行冒煙測試和自動功能測試
Gradle是一個插件,是AS自動安裝的。
1.點擊AS右側邊欄,打開 Gradle, 顯示Gradle Project
2.結構及文件
2.1 settings.gradle 裡 是 include ‘:app’ 中間的app就是 指 app文件夾。
include ':app'
引用 示例1,:app
示例2, 新建一個Module叫mylibrary , 會更改為:mylibrary
示例3, 建一個文件夾library,再在裡面建Module, 更改為 :library:testSDK
2.2 build.gradle(Project: Demo) ,是屬於整個工程的。
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
// 倉庫
repositories {
// 設置中央倉庫,拉第三方庫
jcenter()
// 可以定義自己的私有倉庫,如公司內部庫
}
// 依賴
dependencies {
classpath 'com.android.tools.build:gradle:2.0.0'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
2.3 build.gradle(Module: app), 是屬於 一個Module
apply plugin: 'com.android.application'
// 應用的插件, 是一個apk
//針對於android的一些配置
android {
// 根據sdk那個版本編譯的
compileSdkVersion 23
// 編譯工具的版本號
buildToolsVersion "23.0.3"
defaultConfig {
// 打出來的包名
applicationId "com.exa.demo"
// 支持的最小版本,低於這個版本,手機裝不上
minSdkVersion 15
// 目標版本
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
buildTypes {// 生成不同的apk, realse,debug等
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
// 打不同的渠道,如360,應用寶
// 第三方登錄,必須用簽名的包,才能使用。
}
}
// 依賴,可視化添加。 可依賴第三方庫,本地Module。
dependencies {
// 引用 文件樹 libs文件夾 ,的jar文件
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.2.1'
}
dependencies依賴的可視化操作
Gradle命令
gradle --help
gradle --version 版本
gradle build 編譯
gradle clean 清理
gradle tasks
gradle tasks --all
gradle以任務來分配,以任務來組織進程
合並規則
多個文件夾中的所有的源代碼(src/*/java)都會合並起來生成一個輸出
所有的Manifest文件都會合並成一個Manifest文件
Offline, 使用離線模式,使用本地的jar
二、NDK
NDK –Native Development Kit 原生開發工具包
為何要用到NDK?
代碼的保護,由於apk的java層代碼很容易被反編譯,而C/C++庫反匯難度較大。 在NDK中調用第三方C/C++庫,因為大部分的開源庫都是用C/C++代碼編寫的。
便於移植,用C/C++寫的庫可以方便在其他的嵌入式平台上再次使用。
是Android平台支持C/C++開發
a.一種是使用已經編譯好的 .so動態庫
b. 一種是使用C/C++源代碼開發
android.developer的網站有NDK官網
1.下載NDK,配置
2.Gradle配置
3.方法調用
4.生成so文件
JNI java原生接口
三、管理依賴
不可避免的Android工程依賴問題
如何使用library 和libs
? jar
? library
? library中的jar
Android Studio 依賴中的三種使用方法
1.項目依賴,工程 m指 maven,直接在maven庫裡依賴
2. 文件依賴, jar, aar
3. 項目依賴, 依賴本地自己開發的項目
添加依賴的兩種方法,代碼或可視化界面操作
1.代碼,build.gradle(Module: app)中
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.2.1' //添加到後面
}
2.可視化, Project Structure
依賴 jar
1.一種 compile fileTree()
2、選中 上圖中的第二個 File dependency。 選擇jar文件即可。
方便的 aar引用
aar是什麼
和jar的區別
如何生成aar
本地引用aar
maven庫
引用aar
1.粘貼到libs文件夾下, 打開 工程的 gradle
2.build.gradle(Project:demo) 內
buildscript {
// 倉庫
repositories {
// 設置中央倉庫,拉第三方庫
jcenter()
// 可以定義自己的私有倉庫,如公司內部庫
flatDir{
dirs 'libs'
}
}
3、 build.gradle(Module:app) 內
// 依賴,可視化添加。 可依賴第三方庫,本地Module。
dependencies {
// 引用 文件樹 libs文件夾 ,的jar文件
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.2.1'
compile(name:'aar的名字',ext:'aar')
}
2、可視化導入 new module 選擇 imort JAR/AAR Package
四、Git
Git是一款免費、開源的分布式版本控制系統,用於敏捷高效地處理任何或小或大的項目。
1.直接記錄快照
每個Commit(提交)是一個快照,而非差異比較
變更文件直接copy,未變更文件指向上一個版本
需切換到某個commit時,直接load
空間換時間(而非保存差異,做merge)
2、幾乎所有操作本地執行
目前GIT已經可以在windows下使用,主要方法有二:msysgit和Cygwin。Cygwin和Linux使用方法類似,Windows版本的GIT提供了友好的GUI(圖形界面),安裝後很快可以上手。
? 創建一個版本庫:git init
這樣,一個空的版本庫就創建好了,並在當前目錄中創建一個叫 .git 的子目錄。
? 增加內容跟蹤信息:git add
? 提交內容到版本庫:git commit
? 管理分支:git branch
0. 前言 Android動畫是面試的時候經常被問到的話題。我們都知道Android動畫分為三類:View動畫、幀動畫和屬性動畫。先對這三種動畫做一個概述:V
一、Fragment介紹fragment在3.0被引入以後,項目使用fragment越來越多,特別是主界面是底部tab頁點擊切換更換內容,當然啦, Fragment 在項
一.前言現在的app基本上都需要用到短信功能,注冊時或者有消息通知時需要給用戶發送一條短信,但是對於個人開發者來說,去買第三方的短信服務實在是有點奢侈,很好的是mob為我
類概述Android裡Scroller類是為了實現View平滑滾動的一個Helper類。通常在自定義的View時使用,在View中定義一個私有成員mScroller =