Android Studio 相关

2017-09-27  本文已影响225人  hjm1fb

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.htmhttp://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.htmlhttp://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 与 PackageNamehttp://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架包打包和依赖冲突解决

  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
    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
    参考:
    如何参看Mali系列GPU的使用率
上一篇下一篇

猜你喜欢

热点阅读