Android Studio 相關(guān)

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

  1. 當(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/

  2. An Android Studio Gradle Build Variants Example(用一套代碼,通過配置的方式生成不同的APP,適用于定制APP等情況,能夠提高生產(chǎn)效率): http://www.techotopia.com/index.php/An_Android_Studio_Gradle_Build_Variants_Example

  3. 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.htmlhttp://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ò)了

image.png
  1. 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 與 PackageNamehttp://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了。

  1. 報(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包

image.png

aar包

image.png
  1. 快捷鍵名稱:
    1.跳到下一處變量:Find Word at Caret

  2. 跳到父方法:super Method

  3. 在。。。中顯示:select in
    4.搜索類:navigate下的class。。。
    5.快速解決/提示: intention action

  4. 注釋: comment

  5. Mac下AndroidStudio中手動(dòng)配置Gradle

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)行版本控制

  1. 新建類時(shí)的自動(dòng)注釋設(shè)置:
    點(diǎn)擊Preferences ——> Editor ——> File and Code Templates 選中右邊inclueds tab下的File Header,就可以修改了。

  2. 設(shè)置自動(dòng)導(dǎo)入包

  3. Gradle's dependency cache may be corrupt (this sometimes occurs after a network connection timeout.)Gradle sync failed: Cause: error in opening zip file

  4. This version of Android Studio is incompatible with the Gradle Plugin used. Try disabling Instant Run (or updating either the IDE or the Gradle plugin to the latest version

  5. 報(bào)錯(cuò) “Could not find method android() for arguments” 解決方案:直接刪掉此行,不影響編譯。

  6. 報(bào)錯(cuò) “Error:A problem occurred configuring project ':app' Caused by: java.lang.NullPointerException (no error message)“
    我的原因是沒有在local.properties里設(shè)置 ndk.dir

  7. error: Error retrieving parent for item: No resource found that matches the given name 'Theme.AppCompat.Light'.

  8. 安裝APK文件時(shí)報(bào)錯(cuò)”安裝包似乎/好像損壞“

    1. 可能是啟用了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可能仍不可安裝。
    2. 可能是最新版的AS的v2SigningEnabled導(dǎo)致的,那么設(shè)置v2SigningEnabled false
  9. Unable to merge dex:
    AS報(bào)錯(cuò)Unable to merge dex
    Dex error On Android Studio 3.0 Beta4

  1. 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.gradle

  2. Error:null value in entry: incrementalFolder generatedFiles =null

  3. 項(xiàng)目依賴沖突(dependencies duplicate entries)終極解決方法:
    Android Studio架包打包和依賴沖突解決

  1. "android Too many arguments for public..."
    解決方案:如果是jar包版本變了導(dǎo)致接口參數(shù)改變,rebuild仍報(bào)這個(gè)錯(cuò)誤,就先去掉依賴,再重新依賴。

  2. 有時(shí)候想跳進(jìn)庫函數(shù)看安卓SDK源碼,但是提示源碼未下載,方法里都是Stub。而按照提示點(diǎn)擊下載也無效。這時(shí)候可以點(diǎn)擊下圖中的Edit
    image.png

    重新走一遍setUp的流程,就好了

  3. mapping文件位置:build/outputs/mapping/release/mapping.txt

  4. 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ì)遇到問題

  1. 更新依賴的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了.(有效)

  2. Android studio Program type already present: com.****.BuildConfig
    Android開發(fā)之——依賴沖突Program type already present

  3. Error : Please Select android SDK:
    解決錯(cuò)誤:Error : Please Select android SDK
    或者是gradle的Build tools version沒有在本地找到

  4. 安裝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 '**'

  1. java.lang.UnsatisfiedLinkError...couldn't find "xxx.so"
    除了配置不對(duì), 也可能需要清空相關(guān)的緩存.clean build還不行的話,試試AS的build菜單下的
    Rebuild Project 和 Refresh Linked C++ Projects, 以及右上角的Gradle Sync按鈕

  2. Android Studio的logcat窗口被拖出來后如何還原?

  1. 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í)不要選擇快捷方式的目錄

  1. 查看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

參考:
如何參看Mali系列GPU的使用率

  1. 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了.

  1. Unexpected scopes found in folder
    解決: Unexpected scopes found in folder 的問題和解決

  2. 在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)用程序了)

  3. Activity class {…SplashActivity} does not exist: 可能是APP沒有卸載干凈,用adb uninstall 卸載一下

  4. Android Studio清緩存:
    CMake加個(gè)空格Sync一下,AS的build菜單CleanProject一下,項(xiàng)目根目錄的.gradle和.idea文件夾刪掉。一般這幾個(gè)執(zhí)行就會(huì)把緩存去掉了。

  5. logcat日志過濾:

^(?!.*(GXBasic|voice)).*$//過濾GXBasic和voice
  1. 恢復(fù)logcat的過濾框:
    There is a way to make it appear. Just click the "Event log" label in the bottom-right of AS.

  2. 手動(dòng)指定Cmake

  3. 下載Cmake(非安裝版)https://github.com/Kitware/CMake/releases

  4. 放到指定位置,如/Users/hongjunmin/Library/Android/sdk/cmake

  5. 上一條里的Cmake應(yīng)該會(huì)自動(dòng)識(shí)別,如果要顯示指定,在local.properties里寫cmake.dir即可

  6. 報(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ò)了

  7. 依賴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"

就可以了

  1. Gradle里需要的系統(tǒng)變量,可以在比如Mac里的~/.bash_profile里添加。但添加后需要改動(dòng)settings.gradle里的代碼后重新sync,不然會(huì)有緩存

  2. 有時(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/" }
  1. 快捷鍵之多行編輯
    多行光標(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)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容