Android Studio 常见问题

使用 Git

1. Can't update: no tracked branch

复现场景: 假设当前工作环境的 local 分支是 local-v1-dev,然后通过删除了这个分支,并 check out 到了另一个分支 local-v2-dev 上去,然后使用 pull 操作拉取远程 remote 分支代码时出现问题。

解决措施: 假设需要切换新的本地分支名称为newBranch,需要拉去远程的 newBranch 分支,并执行更新操作,通过使用Android Studio 的 终端 Terminal 工具,执行下面的命令让本地分支和远程分支完成匹配即可。

git checkout newBranch
git branch --set-upstream-to=origin/newBranch

2. 重命名远程分支

在git中重命名远程分支,其实就是先删除远程分支,然后重命名本地分支,再重新提交一个远程分支。

先查看远程分支:
使用 git branch 命令可以查看当前所有本地分支,加上 -a 参数可以查看远程分支,远程分支会用红色表示出来:
git branch -a

删除远程分支和 tag:
a. 删除指定的远程分支(把 <branchName> 替换成要删除掉的分支名称)
git push origin --delete <branchName>
b. 删除指定的tag(把 <tagname> 替换成要删除掉的tag名称)
git push origin --delete tag <tagname>

在 github 上操作时,在删除远程分支时有可能碰到下面这个错误:
remote: error: refusing to delete the current branch:
这是由于在 github 中,被删除的分支是项目的默认分支。要解决此问题,需要进行下面的操作:

  • 进入 github 中该项目的 Settings 页面;
  • 设置 Default Branch 为其他的分支(例如 master);
  • 重新执行删除远程分支命令。

重命名本地分支:
git branch -m <oldBranchName> <newBranchName>

推送本地分支:
git push origin <newBranchName>

3.为分支打上 tag

为本地分支打上 tag
git tag -a v1.0.0 -m 'version 1.0.0'

把本地tag推送到远程:
推送本地全部的 tag
git push --tags
推送本地指定的 tag
git push origin <tagName>

获取远程tag
git fetch origin tag <tagName>

项目编译

配置 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 关联不上源码导致的,下载对应的 API 源码文件后,会存放在 /Users/xxxxx/Library/Android/sdk/sources/android-26 文件夹,但是有可能明明下载了源码但是 Android Studio 就是提示找不到。这是 Android Studio 配置文件未能更新导致的,可以自行修改即可:

  1. 找到以下路径,并打开文件
    ~/Library/Preferences/AndroidStudioXXX/options/jdk.table.xml

  2. 修改 jdk.table.xml 文件中对应 API 版本配置信息
    手动配置 API 26 Sources 文件路径


  3. 保存配置文件,重新 Android Studio 即可。

项目依赖的某个模块引用了 aar 包导致的编译问题

在某个子模块 tencent-ysdk 引用了 aar 包

module.png

依赖了 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'])
}

应用 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 中设置

allprojects {
    repositories {
        jcenter()
        maven { url 'https://maven.google.com' }

        flatDir {
            // 由于Library module中引用了库的 aar,在多 module 的情况下,
            // 其他的module编译会报错,所以需要在所有工程的repositories
            // 下把Library module中的libs目录添加到依赖关系中
            dirs project(':tencent-ysdk').file('libs')
        }
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 180,161评论 5 436
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 75,785评论 2 342
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 128,551评论 0 297
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 48,708评论 1 254
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 57,479评论 4 337
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 43,558评论 1 250
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 34,544评论 3 364
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 33,100评论 0 237
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 37,231评论 1 278
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 32,788评论 2 285
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 34,457评论 1 300
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 30,484评论 3 294
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 35,750评论 3 287
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 27,507评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 28,714评论 1 240
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 38,993评论 2 318
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 38,555评论 2 318

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 170,863评论 25 707
  • 撰写:小君 ,峻恺 无意中看到一个这样的题目,久坐会要命。这下蒙圈了……很敏感的词,显然跟自己很符合的病灶词语。 ...
    经典373阅读 258评论 0 1
  • 今天是2017年5月25号,一个阳光明媚的日子。 昨晚至今天早上停电,今天早早的起来跑步,并和妈妈一起去买了个菜,...
    大Coco的中文叫韩大脸阅读 154评论 2 2
  • 有一个不大的房子。 装修设计统统自己搞定。 养些绿色植物。 一个小观赏鱼缸只放两条小鱼。 舒适的情侣睡衣。 一条呆...
    鲠子阅读 153评论 0 0
  • 这是一个最好的时代,这是一个最坏的时代。 这是一个智慧的时代,这是一个愚蠢的时代。 这是一个光明的季节,这是一个黑...
    听说几捡过流星啊阅读 231评论 0 0