1.由于我的jdk是32位的,安裝成功后報(bào) "64 bit jdk not found" 。百度的方法都是編輯studio.bat文件,但是我的安裝目錄下并沒有這個(gè)文件。我就在bin文件夾下挨個(gè)打開文本類文件,還是找不到相應(yīng)的配置文件。然后發(fā)現(xiàn)bin下有 studio.exe 和 studio64.exe 兩個(gè)文件。打開studio.exe,就不報(bào)這個(gè)錯(cuò)誤了。所以 32位的jdk需要運(yùn)行studio.exe
2.Android Studio安裝完成后,如果直接啟動(dòng),Android Studio會(huì)去獲取 android sdk 組件信息,這個(gè)過程相當(dāng)慢,還經(jīng)常加載失?。ㄔ虼蠹叶级模?,導(dǎo)致Android Studio啟動(dòng)不起開(Unable to access Android SDK add on list)。解決辦法就是不去獲取android sdk 組件信息。解決方法:1)進(jìn)入剛安裝的Android Studio目錄下的bin目錄。找到idea.properties文件,用文本編輯器打開。2)在idea.properties文件末尾添加一行:disable.android.first.run=true,然后保存文件。3)關(guān)閉Android Studio后重新啟動(dòng),便可進(jìn)入界面。
4.導(dǎo)入整個(gè)工作空間的方法:http://www.111cn.net/sj/android/74260.htm,http://www.open-open.com/lib/view/open1419597450031.html
5.解決找不到符號(hào):http://stackoverflow.com/questions/27525451/android-studio-unmappable-character-for-encoding-utf-8 (即在android括號(hào)下加入那一行,設(shè)置你要的編碼集,有時(shí)候只是少數(shù)文件的注釋有編碼問題,我就會(huì)刪掉,用英文重新寫好注釋,就沒問題了)
6.導(dǎo)入jar/lib:
1)手動(dòng)下載添加: http://www.th7.cn/Program/Android/201405/207001.shtml
即下載-復(fù)制到目錄下-->右鍵 add as library-->在build.gradle 文件的dependencies處寫上相應(yīng)的代碼-->點(diǎn)擊軟件彈出的Asyn按鈕或者clean/rebuild一下項(xiàng)目-->完成。
2)gradle的方法: http://gmariotti.blogspot.com/2013/07/how-to-add-actionbarcompat-to-your.html
7.SVN文件狀態(tài)顯示:
8.安卓模擬器加速:http://www.developer.com/ws/android/development-tools/haxm-speeds-up-the-android-emulator.html
http://www.cnblogs.com/csulennon/p/4178404.html
當(dāng)我把eclipse的項(xiàng)目移植到Android Studio,發(fā)現(xiàn)以前寫的匿名內(nèi)部類,比如OnclickListener顯示的時(shí)候都成了Lambda的形式,這個(gè)是Android Studio的Code Foding的功能,代碼沒有變,并沒有用 java 8,只是顯示的時(shí)候用了這樣簡約的顯示方式,方便看代碼。更多信息:https://hedgehogjim.wordpress.com/2014/01/02/lambda-expressions-in-android-studio/
An Android Studio Gradle Build Variants Example(用一套代碼,通過配置的方式生成不同的APP,適用于定制APP等情況,能夠提高生產(chǎn)效率): http://www.techotopia.com/index.php/An_Android_Studio_Gradle_Build_Variants_Example
-
Android Studio的tips,包括代碼格式化codeStyles :http://blog.lemberg.co.uk/android-project-unwritten-rules
同一個(gè)團(tuán)隊(duì)用同一套codeStyles,比如我下載了AndroidStyle.xml, 放到目錄 C:\Users\Administrator.AndroidStudio\config\codestyles 下面,然后如此文中設(shè)置下就好了
為了減少svn不必要的提交,或者提交了本地化的文件影響其他成員,可以在svn提交頁面設(shè)置ignore list。
12.給SDK Manager設(shè)置代理:
image.png
13.給 AS(Android Studio)設(shè)置代理(代理地址 mirrors.neusoft.edu.cn):
14.編譯錯(cuò)誤:運(yùn)行時(shí)出現(xiàn) finished with non-zero exit value 2:http://blog.csdn.net/u014231734/article/details/44725735
http://blog.csdn.net/yuqiaoo/article/details/46009635
(我的原因是原來用的是v4的support包,后來加入v7的support包的時(shí)候報(bào)這個(gè)錯(cuò),刪掉v4的包就可以了。后來又遇到這個(gè)問題,是因?yàn)?br> 'com.github.JakeWharton:ViewPagerIndicator'
和
'cn.trinea.android.view.autoscrollviewpager:android-auto-scroll-view-pager'
兩個(gè)庫沖突了,解決方案是其中一個(gè)不用gradle導(dǎo)入,而是代碼導(dǎo)入JakeWharton:ViewPagerIndicator'中需要的幾個(gè)類。
)
如果還是沒找到問題,嘗試:
1.先啟用 gradle命令行:
1.1 配置Gradle環(huán)境變量(mac下)
http://www.cnblogs.com/elfsundae/archive/2010/12/01/1893190.html,http://blog.csdn.net/lincyang/article/details/43853259
1.2 查看是那個(gè)jar包重復(fù)了:
http://stackoverflow.com/questions/20989317/multiple-dex-files-define-landroid-support-v4-accessibilityservice-accessibility
15.彈出框:“A fatal exception has occurred. Program will exit.” 控制臺(tái)找不到錯(cuò)誤日志:http://m.blog.csdn.net/blog/u010102162/25203245 如果有錯(cuò)誤日志,還是要根據(jù)日志判斷哪里錯(cuò)了

- SVN 配置:http://www.2cto.com/kf/201504/393631.html
http://blog.csdn.net/books1958/article/details/42493965
也就是第一次用AS時(shí),需要確認(rèn) AS 的 set 菜單里的subversion 里的 svn 地址是否正確,而且該地址下需要有svn.exe 文件,沒有的話,打開svn安裝程序,就會(huì)彈出對(duì)話框,你選擇修復(fù),把client安裝上去就好了,鏈接 http://www.2cto.com/kf/201504/393631.html 里有詳細(xì)介紹。然后你新建的項(xiàng)目,如果要放入svn,需要先上傳,再把原文件刪掉(刪之前最好備份下),再check in, 就能正常使用svn了。當(dāng)然一個(gè)比較簡單的方法,是直接把新建的項(xiàng)目復(fù)制到svn里,add進(jìn)去,就是svn項(xiàng)目了,然后check in就行了
17:ApplicationId 與 PackageName:http://blog.csdn.net/maosidiaoxian/article/details/41719357
18:模擬器配置:http://blog.csdn.net/u012319317/article/details/45891055
19: 報(bào)錯(cuò):“Error:Execution failed for task ':app:transformClassesWithDexForDuotinDebug'. > com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home/bin/java'' finished with non-zero exit value 2
file:///Users/apple/Downloads/libs/ShareSDK-Wechat-Moments-2.6.5.jar”
開始還以為是要裝java 1.8 后來發(fā)現(xiàn)是v4包沖突導(dǎo)致的,看來AS的錯(cuò)誤提醒也不一定準(zhǔn)確。解決方法是項(xiàng)目內(nèi)只用一個(gè)v4包,并且是用gradle來添加(快捷方式是項(xiàng)目右鍵 open module setting, 點(diǎn)擊dependencies,點(diǎn)擊左下角加號(hào)即可在打開的窗口選擇要添加的lib了。
- 報(bào)的錯(cuò):Bad class file magic or version
解決方法:
找到gradle配置文件中的這一行 apply plugin:'java'
在下面添加:sourceCompatibility = 1.7targetCompatibility = 1.7可能是這個(gè)project只能用1.7版本的java編譯
21.在Android Studio中編譯本地module庫時(shí)將會(huì)同時(shí)生成.jar與.aar文件
位置分別如下
jar包

aar包

快捷鍵名稱:
1.跳到下一處變量:Find Word at Caret跳到父方法:super Method
在。。。中顯示:select in
4.搜索類:navigate下的class。。。
5.快速解決/提示: intention action注釋: comment
24.在Mac上點(diǎn)擊alt+f1,原以為是select in的快捷鍵,但彈出來mac顯示器的設(shè)置頁面。原因是,如果沒有外接鍵盤,mac上需要按住fn
才能使用f1等f鍵盤。如果外接了鍵盤,在鍵盤上不需要按fn鍵,在mac本機(jī)鍵盤上仍需要按住fn鍵。
也可以在Mac中點(diǎn)擊“系統(tǒng)偏好設(shè)置”——> ”鍵盤“ ——> 勾選”將F1、F2等鍵用作標(biāo)準(zhǔn)功能鍵“ 這樣按alt+f1是select in,但設(shè)置
Mac的亮度時(shí)需要按Fn.
25.自動(dòng)注釋&模板
配置新建Activity和Fragment的模板:
windows上的模板文件地址分別是:
android-studio\plugins\android\lib\templates\activities
android-studio\plugins\android\lib\templates\other\BlankFragment
26.mac下Android studio如何使用SVN進(jìn)行版本控制
新建類時(shí)的自動(dòng)注釋設(shè)置:
點(diǎn)擊Preferences ——> Editor ——> File and Code Templates 選中右邊inclueds tab下的File Header,就可以修改了。報(bào)錯(cuò) “Could not find method android() for arguments” 解決方案:直接刪掉此行,不影響編譯。
報(bào)錯(cuò) “Error:A problem occurred configuring project ':app' Caused by: java.lang.NullPointerException (no error message)“
我的原因是沒有在local.properties里設(shè)置 ndk.dir-
安裝APK文件時(shí)報(bào)錯(cuò)”安裝包似乎/好像損壞“
- 可能是啟用了instant run之類的優(yōu)化功能導(dǎo)致的,那么就用gradle或者菜單欄build的導(dǎo)出按鈕生成APK
./gradlew -p assembleDebug 或者 ./gradlew -p assembleRelease(或者點(diǎn)擊AS界面右側(cè)gradle tasks下的app-tasks-build-assemblexx 此時(shí)禁用instant run后點(diǎn)擊run產(chǎn)生的APK可能仍不可安裝。 - 可能是最新版的AS的v2SigningEnabled導(dǎo)致的,那么設(shè)置v2SigningEnabled false
- 可能是啟用了instant run之類的優(yōu)化功能導(dǎo)致的,那么就用gradle或者菜單欄build的導(dǎo)出按鈕生成APK
Unable to merge dex:
AS報(bào)錯(cuò)Unable to merge dex
Dex error On Android Studio 3.0 Beta4
Error:SDK location not found. Define location with sdk.dir in the local.properties file or with an ANDROID_HOME environment variable.
解決方案: 在local.properties文件配置sdk.dir文件,或者確定導(dǎo)入項(xiàng)目的時(shí)候,選擇的是最外面的build.gradleError:null value in entry: incrementalFolder generatedFiles =null
項(xiàng)目依賴沖突(dependencies duplicate entries)終極解決方法:
Android Studio架包打包和依賴沖突解決
-
如何修改aar或者jar文件
命令行的方式
或者下一個(gè)7z軟件,可以刪除里面的jar,pom等文件,也可以修改文
件。 -
如果一定要保留兩個(gè)沖突的jar包,就采用jarjar批量更換包名的方法
有關(guān) Android Studio 重復(fù)引入包的問題和解決方案
"android Too many arguments for public..."
解決方案:如果是jar包版本變了導(dǎo)致接口參數(shù)改變,rebuild仍報(bào)這個(gè)錯(cuò)誤,就先去掉依賴,再重新依賴。-
有時(shí)候想跳進(jìn)庫函數(shù)看安卓SDK源碼,但是提示源碼未下載,方法里都是Stub。而按照提示點(diǎn)擊下載也無效。這時(shí)候可以點(diǎn)擊下圖中的Editimage.png
重新走一遍setUp的流程,就好了
mapping文件位置:build/outputs/mapping/release/mapping.txt
AS中修改模板需要修改的文件:
比如我的templetesDir 是 \androidStudio\plugins\android\lib\templates
想要在new -> Activity -> Empty Activity
和new -> Fragment -> Fragment(Blank) 的時(shí)候套用模板
需要修改的文件如下:
//common
templetesDir\activities\common\root\AndroidManifest.xml.ftl
templetesDir\activities\common\common_globals.xml.ftl
//activity
templetesDir\activities\EmptyActivity\root\src\app_package\SimpleActivity.kt.ftl
templetesDir\activities\common\root\res\layout\simple.xml.ftl
// fragment
templetesDir\other\BlankFragment\recipe.xml.ftl
templetesDir\other\BlankFragment\root\src\app_package\BlankFragment.kt.ftl
templetesDir\other\BlankFragment\root\res\layout\fragment_blank.xml.ftl
當(dāng)然,建議是新建模板,而不是修改AS自帶的模板,不然升級(jí)AS時(shí)會(huì)遇到問題
更新依賴的aar后,AS編輯器報(bào)紅,但是不影響打包.嘗試各種invalidate and restart,rebuild,刪build文件夾,不管用.總結(jié)下網(wǎng)上找到的解決方法:
方法1: 嘗試 ./gradlew cleanBuildCache(本人嘗試無效)
方法2: disable caching(未嘗試)
方法3: 在根目錄的setting.gradle將項(xiàng)目注釋掉, 然后 Gradle Sync, 然后恢復(fù)項(xiàng)目, 然后Gradle Sync. 就可以了.(有效, 推薦)
方法4: 將依賴的aar重命名, 即文件和gradle里的依賴代碼都重命名, 重新gradle sync一下,就OK了.這時(shí)候重新改回原來的文件名,也是OK的.(有效)
方法5: 將依賴的aar重命名, 只將文件重命名, 重新gradle sync一下,會(huì)編譯不通過.這時(shí)候重新改回原來的文件名,就OK了.(有效)Android studio Program type already present: com.****.BuildConfig
Android開發(fā)之——依賴沖突Program type already presentError : Please Select android SDK:
解決錯(cuò)誤:Error : Please Select android SDK
或者是gradle的Build tools version沒有在本地找到安裝APK時(shí): INSTALL_PARSE_FAILED_NO_CERTIFICATES
原因1: 網(wǎng)上其他文章都會(huì)說的, 簽名的問題
原因2: 仔細(xì)看AS的log, 比如我的是引用的一個(gè)java jar里的一個(gè)配置文件無法被validate.
對(duì)于原因2的解決方案:
在根目錄的build.gradle配置packagingOptions,如:
packagingOptions {
exclude 'edl-v10.html'
exclude 'META-INF/rxjava.properties'
exclude 'META-INF/ECLIPSE_.SF'
exclude 'META-INF/ECLIPSE_.RSA'
}
需要注意的是, 如果packagingOptions的pickFirst匹配了文件, exclude將無效.
所以如果要exclude, 請(qǐng)不要設(shè)置 pickFirst '**'
java.lang.UnsatisfiedLinkError...couldn't find "xxx.so"
除了配置不對(duì), 也可能需要清空相關(guān)的緩存.clean build還不行的話,試試AS的build菜單下的
Rebuild Project 和 Refresh Linked C++ Projects, 以及右上角的Gradle Sync按鈕
gradle build報(bào)錯(cuò):
Failed to execute aapt
Execution failed for task ':app:processReleaseResources'.
Execution failed for task ':app:processDebugResources'.
解決方案: 參照
Execution failed for task ':app:processReleaseResources'.
將compileSdkVersion和buildToolsVersion改成
compileSdkVersion: 28,
buildToolsVersion: "28.0.3"
解決了問題
exception in plugin android support
Argument for @NotNull parameter 'message' of com/android/tools/idea/gradle/project/sync
解決方案: Argument for @NotNull parameter 'message' of com/android/tools/idea/gradle/project/sync
所以在導(dǎo)入工程時(shí)不要選擇快捷方式的目錄
- 查看gpu的情況:
高通驍龍GPU, 可以嘗試下載APK:Trepn Profiler(有些機(jī)型比如三星手機(jī)SM-A9100支持GPU使用率檢測(cè))
Trepn Profiler使用參考:
FAQ
GPU Load Support-
Mali GPU在/sys/devices/ffa30000.gpu目錄下查看相應(yīng)文件.
比如:
/sys/devices/platform/ffa30000.gpu/utilisation
/sys/devices/platform/ffa30000.gpu/devfreq/ffa30000.gpu/available_frequencies
/sys/devices/platform/ffa30000.gpu/devfreq/ffa30000.gpu/cur_freq
/sys/devices/platform/ffa30000.gpu/dvfs
/sys/devices/platform/ff9a0000.gpu/devfreq/ff9a0000.gpu
當(dāng)然也可以用cat命令行查看:
gpu_load.jpg
- Indexing paused due to batch updated (或者設(shè)置為gradle offline后重導(dǎo)項(xiàng)目)
52.Could not resolve all dependencies for configuration
文內(nèi)也介紹了一個(gè)好用的工具:
./gradlew installDebug --info
com.android.builder.dexing.DexArchiveBuilderException: Failed to process
或
Type `org.conscrypt.Conscrypt` was not found, it is required for default or static interface methods desugaring of `okhttp3.internal.platform.Platform okhttp3.internal.platform.ConscryptPlatform.buildIfSupported()`
解決:
- 依賴庫的問題, 比如將
implementation 'com.squareup.okhttp3:logging-interceptor:+'
改成
implementation 'com.squareup.okhttp3:logging-interceptor:3.8.1'
- 在gradle.property添加
android.enableD8=true - 在module的build.gradle添加
compileOptions {
targetCompatibility 1.8
sourceCompatibility 1.8
}
warning possible dns spoofing detected raspberry pi
Invocation failed Unexpected Response from Server: Unauthorized
解決: 3.2.1版本的AS有自動(dòng)矯正ECDSA key變化的功能, 3.4版本沒有, 用3.2.1版本的AS使用一下git的update功能就OK了.
Unexpected scopes found in folder
解決: Unexpected scopes found in folder 的問題和解決在AS 的Terminal命令行輸入gradlew, 提示"未找到命令" 解決方法:
a. 確認(rèn)有運(yùn)行文件的權(quán)限
b. 需要用./表示當(dāng)前路徑, 所以輸入./gradlew (原因:使用命令行執(zhí)行某個(gè)程序的時(shí)候,Linux會(huì)到PATH環(huán)境變量的路徑去搜索程序文件,但在默認(rèn)情況下,Linux和Windows不同,Windows會(huì)搜索當(dāng)前目錄,而Linux不會(huì)搜索當(dāng)前目錄,所以在當(dāng)前目錄下的程序,而當(dāng)前目錄不再PATH環(huán)境變量中的話,就需要加上"./"來指定到當(dāng)前目錄下去查找應(yīng)用程序了)Activity class {…SplashActivity} does not exist: 可能是APP沒有卸載干凈,用adb uninstall 卸載一下
Android Studio清緩存:
CMake加個(gè)空格Sync一下,AS的build菜單CleanProject一下,項(xiàng)目根目錄的.gradle和.idea文件夾刪掉。一般這幾個(gè)執(zhí)行就會(huì)把緩存去掉了。logcat日志過濾:
^(?!.*(GXBasic|voice)).*$//過濾GXBasic和voice
恢復(fù)logcat的過濾框:
There is a way to make it appear. Just click the "Event log" label in the bottom-right of AS.手動(dòng)指定Cmake
下載Cmake(非安裝版)https://github.com/Kitware/CMake/releases
放到指定位置,如/Users/hongjunmin/Library/Android/sdk/cmake
上一條里的Cmake應(yīng)該會(huì)自動(dòng)識(shí)別,如果要顯示指定,在local.properties里寫cmake.dir即可
報(bào)錯(cuò)“l(fā)d: error: found local symbol '_end' in global part of symbol table in file ../../../../src/main/jniLibs/arm64-v8a/libMNN_CL.so”
可能是因?yàn)榫幾gso的NDK和打包so到APK的NDK不是同一個(gè)版本,比如我恢復(fù)到到Android/sdk/ndk/21.3.6528147這個(gè)版本就不再報(bào)錯(cuò)了依賴aar
使用依賴庫(library、aar)
Gradle引用aar
implementation(files("./libs/libpag-debug.aar"))
Mac升級(jí)12.x后adb不能用:
debug窗口里比如LLDB分窗口,有詳細(xì)的報(bào)錯(cuò)信息:
"Library not loaded: /System/Library/Frameworks/Python.framework/Versions/2.7/Python"
所以只要在對(duì)應(yīng)位置放置好2.7的Python文件,環(huán)境變量也設(shè)置一下:
export PATH=${PATH}:/Library/Frameworks/Python.framework/Versions/2.7/bin
alias python="/Library/Frameworks/Python.framework/Versions/2.7/bin/python2"
就可以了
Gradle里需要的系統(tǒng)變量,可以在比如Mac里的~/.bash_profile里添加。但添加后需要改動(dòng)settings.gradle里的代碼后重新sync,不然會(huì)有緩存
有時(shí)候依賴包會(huì)被Maven庫移除,所以多設(shè)置幾個(gè)倉庫:
jcenter()
google()
maven {
url 'https://maven.google.com/'
name 'Google'
}
// google的maven倉庫在阿里云上的鏡像
maven { url 'https://maven.aliyun.com/repository/google' }
// jcenter的maven倉庫在阿里云上的鏡像
maven { url 'https://maven.aliyun.com/repository/jcenter' }
maven { url "https://mirrors.tencent.com/nexus/repository/maven-public/" }
- 快捷鍵之多行編輯
多行光標(biāo)
再補(bǔ)充一下,Mac上先選中關(guān)鍵字,然后點(diǎn)擊 Ctrl + G + alt, 則能一鍵全部選中本頁面所有的此關(guān)鍵字
多行縮進(jìn):
選中段落后,點(diǎn)擊tab,就能每一行都向右縮進(jìn); 點(diǎn)擊tab+shift, 就能每一行都向左縮進(jìn)


