使用 Git
1. Can't update: no tracked branch
復(fù)現(xiàn)場景: 假設(shè)當(dāng)前工作環(huán)境的 local 分支是 local-v1-dev,然后通過刪除了這個分支,并 check out 到了另一個分支 local-v2-dev 上去翘紊,然后使用 pull 操作拉取遠(yuǎn)程 remote 分支代碼時出現(xiàn)問題。
解決措施: 假設(shè)需要切換新的本地分支名稱為newBranch藐唠,需要拉去遠(yuǎn)程的 newBranch 分支帆疟,并執(zhí)行更新操作宇立,通過使用Android Studio 的 終端 Terminal 工具,執(zhí)行下面的命令讓本地分支和遠(yuǎn)程分支完成匹配即可妈嘹。
git checkout newBranch
git branch --set-upstream-to=origin/newBranch
2. 重命名遠(yuǎn)程分支
在git中重命名遠(yuǎn)程分支蟋滴,其實(shí)就是先刪除遠(yuǎn)程分支,然后重命名本地分支津函,再重新提交一個遠(yuǎn)程分支。
先查看遠(yuǎn)程分支:
使用 git branch 命令可以查看當(dāng)前所有本地分支尔苦,加上 -a 參數(shù)可以查看遠(yuǎn)程分支行施,遠(yuǎn)程分支會用紅色表示出來:
git branch -a
刪除遠(yuǎn)程分支和 tag:
a. 刪除指定的遠(yuǎn)程分支(把 <branchName> 替換成要刪除掉的分支名稱)
git push origin --delete <branchName>
b. 刪除指定的tag(把 <tagname> 替換成要刪除掉的tag名稱)
git push origin --delete tag <tagname>
在 github 上操作時蛾号,在刪除遠(yuǎn)程分支時有可能碰到下面這個錯誤:
remote: error: refusing to delete the current branch:
這是由于在 github 中涯雅,被刪除的分支是項(xiàng)目的默認(rèn)分支。要解決此問題活逆,需要進(jìn)行下面的操作:
- 進(jìn)入 github 中該項(xiàng)目的 Settings 頁面;
- 設(shè)置 Default Branch 為其他的分支(例如 master)怒允;
- 重新執(zhí)行刪除遠(yuǎn)程分支命令锈遥。
重命名本地分支:
git branch -m <oldBranchName> <newBranchName>
推送本地分支:
git push origin <newBranchName>
3.為分支打上 tag
為本地分支打上 tag
git tag -a v1.0.0 -m 'version 1.0.0'
把本地tag推送到遠(yuǎn)程:
推送本地全部的 tag
git push --tags
推送本地指定的 tag
git push origin <tagName>
獲取遠(yuǎn)程tag
git fetch origin tag <tagName>
項(xiàng)目編譯
配置 apk 文件輸出名稱
buildTypes {
release {
applicationVariants.all { variant ->
variant.outputs.each { output ->
def outputFile = output.outputFile
if (outputFile != null && outputFile.name.endsWith('.apk')) {
// 輸出apk名稱為appName-versionName-release.apk
def fileName = "appName-${defaultConfig.versionName}-release.apk"
output.outputFile = new File(outputFile.parent, fileName)
}
}
}
}
}
注意 Android Studio 3.0 中支持的新版本 gradle 改變 output.outputFile
為私有屬性所灸,所以上面的代碼要改成:
android.applicationVariants.all { variant ->
variant.outputs.all {
outputFileName = "${variant.name}-${variant.versionName}-release.apk"
}
}
Java 8 支持
defaultConfig {
jackOptions {
enabled true
}
}
buildTypes {
compileOptions {
targetCompatibility 1.8
sourceCompatibility 1.8
}
}
注意 Android Studio 3.0 中支持的新版本 gradle 中把 jackOptions
移除。
Sources for ‘Android API 26 Platform’ not found.
這是 Android Studio 關(guān)聯(lián)不上源碼導(dǎo)致的爬立,下載對應(yīng)的 API 源碼文件后,會存放在 /Users/xxxxx/Library/Android/sdk/sources/android-26 文件夾,但是有可能明明下載了源碼但是 Android Studio 就是提示找不到壤圃。這是 Android Studio 配置文件未能更新導(dǎo)致的,可以自行修改即可:
找到以下路徑伍绳,并打開文件
~/Library/Preferences/AndroidStudioXXX/options/jdk.table.xml-
修改 jdk.table.xml 文件中對應(yīng) API 版本配置信息
手動配置 API 26 Sources 文件路徑
保存配置文件踊挠,重新 Android Studio 即可冲杀。
項(xiàng)目依賴的某個模塊引用了 aar 包導(dǎo)致的編譯問題
在某個子模塊 tencent-ysdk 引用了 aar 包
依賴了 aar 包的 module:tencent-ysdk 的 build.gradle
dependencies {
compile(name: 'YSDK_Android_1.3.6_841', ext: 'aar')
compile 'com.android.support:appcompat-v7:26.1.0'
compile fileTree(dir: 'libs', include: ['*.jar'])
}
應(yīng)用 module:app 依賴了 tencent-ysdk模塊权谁,其 build.gradle
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile 'com.android.support:appcompat-v7:26.1.0'
compile project(':comment')
compile project(':tencent-ysdk')
}
需要在 project 下的 build.gradle 中設(shè)置
allprojects {
repositories {
jcenter()
maven { url 'https://maven.google.com' }
flatDir {
// 由于Library module中引用了庫的 aar,在多 module 的情況下旺芽,
// 其他的module編譯會報錯辐啄,所以需要在所有工程的repositories
// 下把Library module中的libs目錄添加到依賴關(guān)系中
dirs project(':tencent-ysdk').file('libs')
}
}
}