Android Studio 相关

1.由于我的jdk是32位的,安装成功后报 "64 bit jdk not found" 。百度的方法都是编辑studio.bat文件,但是我的安装目录下并没有这个文件。我就在bin文件夹下挨个打开文本类文件,还是找不到相应的配置文件。然后发现bin下有 studio.exe 和 studio64.exe 两个文件。打开studio.exe,就不报这个错误了。所以 32位的jdk需要运行studio.exe


2.Android Studio安装完成后,如果直接启动,Android Studio会去获取 android sdk 组件信息,这个过程相当慢,还经常加载失败(原因大家都懂的),导致Android Studio启动不起开(Unable to access Android SDK add on list)。解决办法就是不去获取android sdk 组件信息。解决方法:1)进入刚安装的Android Studio目录下的bin目录。找到idea.properties文件,用文本编辑器打开。2)在idea.properties文件末尾添加一行:disable.android.first.run=true,然后保存文件。3)关闭Android Studio后重新启动,便可进入界面。

4.导入整个工作空间的方法:http://www.111cn.net/sj/android/74260.htm,http://www.open-open.com/lib/view/open1419597450031.html
5.解决找不到符号:http://stackoverflow.com/questions/27525451/android-studio-unmappable-character-for-encoding-utf-8 (即在android括号下加入那一行,设置你要的编码集,有时候只是少数文件的注释有编码问题,我就会删掉,用英文重新写好注释,就没问题了)
6.导入jar/lib:
1)手动下载添加: http://www.th7.cn/Program/Android/201405/207001.shtml
即下载-复制到目录下-->右键 add as library-->在build.gradle 文件的dependencies处写上相应的代码-->点击软件弹出的Asyn按钮或者clean/rebuild一下项目-->完成。
2)gradle的方法: http://gmariotti.blogspot.com/2013/07/how-to-add-actionbarcompat-to-your.html

7.SVN文件状态显示:

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. 当我把eclipse的项目移植到Android Studio,发现以前写的匿名内部类,比如OnclickListener显示的时候都成了Lambda的形式,这个是Android Studio的Code Foding的功能,代码没有变,并没有用 java 8,只是显示的时候用了这样简约的显示方式,方便看代码。更多信息:https://hedgehogjim.wordpress.com/2014/01/02/lambda-expressions-in-android-studio/

  2. An Android Studio Gradle Build Variants Example(用一套代码,通过配置的方式生成不同的APP,适用于定制APP等情况,能够提高生产效率): 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
    同一个团队用同一套codeStyles,比如我下载了AndroidStyle.xml, 放到目录 C:\Users\Administrator.AndroidStudio\config\codestyles 下面,然后如此文中设置下就好了
    为了减少svn不必要的提交,或者提交了本地化的文件影响其他成员,可以在svn提交页面设置ignore list。


    12.给SDK Manager设置代理:
    image.png

    13.给 AS(Android Studio)设置代理(代理地址 mirrors.neusoft.edu.cn):

    14.编译错误:运行时出现 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包的时候报这个错,删掉v4的包就可以了。后来又遇到这个问题,是因为
    'com.github.JakeWharton:ViewPagerIndicator'

    'cn.trinea.android.view.autoscrollviewpager:android-auto-scroll-view-pager'
    两个库冲突了,解决方案是其中一个不用gradle导入,而是代码导入JakeWharton:ViewPagerIndicator'中需要的几个类。

    如果还是没找到问题,尝试:
    1.先启用 gradle命令行:
    1.1 配置Gradle环境变量(mac下)
    http://www.cnblogs.com/elfsundae/archive/2010/12/01/1893190.html,http://blog.csdn.net/lincyang/article/details/43853259
    1.2 查看是那个jar包重复了:
    http://stackoverflow.com/questions/20989317/multiple-dex-files-define-landroid-support-v4-accessibilityservice-accessibility
    15.弹出框:“A fatal exception has occurred. Program will exit.” 控制台找不到错误日志:http://m.blog.csdn.net/blog/u010102162/25203245 如果有错误日志,还是要根据日志判断哪里错了

image.png
  1. SVN 配置:http://www.2cto.com/kf/201504/393631.html
    http://blog.csdn.net/books1958/article/details/42493965
    也就是第一次用AS时,需要确认 AS 的 set 菜单里的subversion 里的 svn 地址是否正确,而且该地址下需要有svn.exe 文件,没有的话,打开svn安装程序,就会弹出对话框,你选择修复,把client安装上去就好了,链接 http://www.2cto.com/kf/201504/393631.html 里有详细介绍。然后你新建的项目,如果要放入svn,需要先上传,再把原文件删掉(删之前最好备份下),再check in, 就能正常使用svn了。当然一个比较简单的方法,是直接把新建的项目复制到svn里,add进去,就是svn项目了,然后check in就行了

17:ApplicationId 与 PackageName:http://blog.csdn.net/maosidiaoxian/article/details/41719357

18:模拟器配置:http://blog.csdn.net/u012319317/article/details/45891055

19: 报错:“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 后来发现是v4包冲突导致的,看来AS的错误提醒也不一定准确。解决方法是项目内只用一个v4包,并且是用gradle来添加(快捷方式是项目右键 open module setting, 点击dependencies,点击左下角加号即可在打开的窗口选择要添加的lib了。

  1. 报的错:Bad class file magic or version
    解决方法:
    找到gradle配置文件中的这一行 apply plugin:'java'
    在下面添加:sourceCompatibility = 1.7targetCompatibility = 1.7可能是这个project只能用1.7版本的java编译

21.在Android Studio中编译本地module库时将会同时生成.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中手动配置Gradle

24.在Mac上点击alt+f1,原以为是select in的快捷键,但弹出来mac显示器的设置页面。原因是,如果没有外接键盘,mac上需要按住fn
才能使用f1等f键盘。如果外接了键盘,在键盘上不需要按fn键,在mac本机键盘上仍需要按住fn键。
也可以在Mac中点击“系统偏好设置”——> ”键盘“ ——> 勾选”将F1、F2等键用作标准功能键“ 这样按alt+f1是select in,但设置
Mac的亮度时需要按Fn.

25.自动注释&模板
配置新建Activity和Fragment的模板:
windows上的模板文件地址分别是:
android-studio\plugins\android\lib\templates\activities
android-studio\plugins\android\lib\templates\other\BlankFragment
26.mac下Android studio如何使用SVN进行版本控制

  1. 新建类时的自动注释设置:
    点击Preferences ——> Editor ——> File and Code Templates 选中右边inclueds tab下的File Header,就可以修改了。

  2. 设置自动导入包

  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. 报错 “Could not find method android() for arguments” 解决方案:直接删掉此行,不影响编译。

  6. 报错 “Error:A problem occurred configuring project ':app' Caused by: java.lang.NullPointerException (no error message)“
    我的原因是没有在local.properties里设置 ndk.dir

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

  8. 安装APK文件时报错”安装包似乎/好像损坏“

    1. 可能是启用了instant run之类的优化功能导致的,那么就用gradle或者菜单栏build的导出按钮生成APK
      ./gradlew -p assembleDebug 或者 ./gradlew -p assembleRelease(或者点击AS界面右侧gradle tasks下的app-tasks-build-assemblexx 此时禁用instant run后点击run产生的APK可能仍不可安装。
    2. 可能是最新版的AS的v2SigningEnabled导致的,那么设置v2SigningEnabled false
  9. Unable to merge dex:
    AS报错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文件,或者确定导入项目的时候,选择的是最外面的build.gradle

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

  3. 项目依赖冲突(dependencies duplicate entries)终极解决方法:
    Android Studio架包打包和依赖冲突解决

  • 如何修改aar或者jar文件
    命令行的方式
    或者下一个7z软件,可以删除里面的jar,pom等文件,也可以修改文
    件。
  • 如果一定要保留两个冲突的jar包,就采用jarjar批量更换包名的方法
    有关 Android Studio 重复引入包的问题和解决方案
  1. "android Too many arguments for public..."
    解决方案:如果是jar包版本变了导致接口参数改变,rebuild仍报这个错误,就先去掉依赖,再重新依赖。

  2. 有时候想跳进库函数看安卓SDK源码,但是提示源码未下载,方法里都是Stub。而按照提示点击下载也无效。这时候可以点击下图中的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) 的时候套用模板
    需要修改的文件如下:


//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

当然,建议是新建模板,而不是修改AS自带的模板,不然升级AS时会遇到问题

  1. 更新依赖的aar后,AS编辑器报红,但是不影响打包.尝试各种invalidate and restart,rebuild,删build文件夹,不管用.总结下网上找到的解决方法:
    方法1: 尝试 ./gradlew cleanBuildCache(本人尝试无效)
    方法2: disable caching(未尝试)
    方法3: 在根目录的setting.gradle将项目注释掉, 然后 Gradle Sync, 然后恢复项目, 然后Gradle Sync. 就可以了.(有效, 推荐)
    方法4: 将依赖的aar重命名, 即文件和gradle里的依赖代码都重命名, 重新gradle sync一下,就OK了.这时候重新改回原来的文件名,也是OK的.(有效)
    方法5: 将依赖的aar重命名, 只将文件重命名, 重新gradle sync一下,会编译不通过.这时候重新改回原来的文件名,就OK了.(有效)

  2. Android studio Program type already present: com.****.BuildConfig
    Android开发之——依赖冲突Program type already present

  3. Error : Please Select android SDK:
    解决错误:Error : Please Select android SDK
    或者是gradle的Build tools version没有在本地找到

  4. 安装APK时: INSTALL_PARSE_FAILED_NO_CERTIFICATES
    原因1: 网上其他文章都会说的, 签名的问题
    原因2: 仔细看AS的log, 比如我的是引用的一个java jar里的一个配置文件无法被validate.
    对于原因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, 请不要设置 pickFirst '**'

  1. java.lang.UnsatisfiedLinkError...couldn't find "xxx.so"
    除了配置不对, 也可能需要清空相关的缓存.clean build还不行的话,试试AS的build菜单下的
    Rebuild Project 和 Refresh Linked C++ Projects, 以及右上角的Gradle Sync按钮

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

  1. gradle build报错:
    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
所以在导入工程时不要选择快捷方式的目录

  1. 查看gpu的情况:
  • 高通骁龙GPU, 可以尝试下载APK:Trepn Profiler(有些机型比如三星手机SM-A9100支持GPU使用率检测)
    Trepn Profiler使用参考:
    FAQ
    GPU Load Support

  • Mali GPU在/sys/devices/ffa30000.gpu目录下查看相应文件.
    比如:
    /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
    当然也可以用cat命令行查看:


    gpu_load.jpg

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

  1. Indexing paused due to batch updated (或者设置为gradle offline后重导项目)

52.Could not resolve all dependencies for configuration
文内也介绍了一个好用的工具:
./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有自动矫正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. 确认有运行文件的权限
    b. 需要用./表示当前路径, 所以输入./gradlew (原因:使用命令行执行某个程序的时候,Linux会到PATH环境变量的路径去搜索程序文件,但在默认情况下,Linux和Windows不同,Windows会搜索当前目录,而Linux不会搜索当前目录,所以在当前目录下的程序,而当前目录不再PATH环境变量中的话,就需要加上"./"来指定到当前目录下去查找应用程序了)

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

  4. Android Studio清缓存:
    CMake加个空格Sync一下,AS的build菜单CleanProject一下,项目根目录的.gradle和.idea文件夹删掉。一般这几个执行就会把缓存去掉了。

  5. logcat日志过滤:

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

  2. 手动指定Cmake

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

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

  5. 上一条里的Cmake应该会自动识别,如果要显示指定,在local.properties里写cmake.dir即可

  6. 报错“ld: error: found local symbol '_end' in global part of symbol table in file ../../../../src/main/jniLibs/arm64-v8a/libMNN_CL.so”
    可能是因为编译so的NDK和打包so到APK的NDK不是同一个版本,比如我恢复到到Android/sdk/ndk/21.3.6528147这个版本就不再报错了

  7. 依赖aar
    使用依赖库(library、aar)

Mac升级12.x后adb不能用:
debug窗口里比如LLDB分窗口,有详细的报错信息:
"Library not loaded: /System/Library/Frameworks/Python.framework/Versions/2.7/Python"
所以只要在对应位置放置好2.7的Python文件,环境变量也设置一下:

export PATH=${PATH}:/Library/Frameworks/Python.framework/Versions/2.7/bin
alias python="/Library/Frameworks/Python.framework/Versions/2.7/bin/python2"

就可以了

  1. Gradle里需要的系统变量,可以在比如Mac里的~/.bash_profile里添加。但添加后需要改动settings.gradle里的代码后重新sync,不然会有缓存

你可能感兴趣的:(Android Studio 相关)