Android Studio 整理

来源:互联网 发布:网络诋毁企业 编辑:程序博客网 时间:2024/06/05 08:38

Android Studio 整理

1. 同步&build

(1). 使用AS下载gradle(文件gradle-wrapper.properties)比较慢,可以先把gradle***.zip下载到本地,然后再把zip文件放到指定文件夹中(Window: <个人文件夹>/.gradle/wrapper/dists/gradle***/afhkydqrb47n2/;Ubuntu: home/name/.gradle/wrapper/dists/gradle***/afhkydqrb47n2/),然后重启AS 或者 点击工具栏的 Sync Project Gradle Files即可
(2). gradle搞定后,会从jcenter和maven中同步相应的第三方库,设置网络代理然后同步,可以从Settings -> Http Proxy设置,也可以在gradle.propterties中添加代理地址。
Eg:
systemProp.https.proxyHost=*
systemProp.https.proxyPort=*
systemProp.http.proxyHost=*
systemProp.http.proxyPort=*

2. 优化Gradle构建速度

(1). 升级Gradle版本
File -> Project Structure -> Project中查看现在使用的Gradle版本。
这里写图片描述
从Gradle网站查看下载最新的Gradle版本(Gradle版本升级后,AS中的Android Gradle Plugin有时也需要升级)https://services.gradle.org/distributions/
把下载的Gradle解析并放到本地Gradle文件中:
这里写图片描述
设置使用本地的新下载的Gradle,在File -> Settings -> Build, Execution, Deployment -> Gradle -> Use local gradle distribution -> Gradle Home中指定下载的Gradle地址
这里写图片描述

(2). 打开Offline mode,Gradle daemon 和 parallel build(并行构建,对于有Project和Library时可以加快构建速度)
1>. 打开Offline mode让Gradle忽略最新版本检查。
在File -> Settings -> Build, Execution, Deployment -> Gradle ->勾选Offline work
2>. 在File -> Settings -> Build, Execution, Deployment -> Compiler 中勾选“Compile independent modules in parallel”和 在Command-line Options中填写 –offline
这里写图片描述
3>. 设置Gradle daemon, parallel build和gradle jvm。如果只设置这个Project的话,只需修改/gradle.properties即可;如果设置全局的话,需要修改<个人文件夹>/.gradle/gradle.properties。
参考:

org.gradle.jvmargs=-Xmx5120m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8#下面这个jvm的值还小# org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8org.gradle.daemon=trueorg.gradle.parallel=trueorg.gradle.configureondemand=trueandroid.enableBuildCache=true

(3). 打开 incremental dexign 和 tweak memory
在Module:app中的build.gradle中添加下面内容,

dexOptions {    incremental true    javaMaxHeapSize "12g"}

参考地址:https://hackernoon.com/speed-up-gradle-build-in-android-studio-80a5f74ac9ed

3. 设置代理

http/https

systemProp.https.proxyHost=X.X.X.X
systemProp.https.proxyPort=XXXX
systemProp.http.proxyHost=X.X.X.X
systemProp.http.proxyPort=XXXX

socks5

org.gradle.jvmargs=-DsocksProxyHost=127.0.0.1 -DsocksProxyPort=7077

在$HOME/.gradle/gradle.properties 文件中加入上面那句,这样就可以全局开启 gradle 代理

4. 混淆打包问题

(1). 打包时提示“avoid non-default constructors in fragment”的错误

原因:
Android Developer中Fragment的介绍:
这里写图片描述
处理方式:

  • 忽略这个问题
    在build.gradle中添加下面内容:
android {          lintOptions {              disable 'ValidFragment'              checkReleaseBuilds false          }      }

或者在代码处添加 @SuppressLint(“ValidFragment”)

  • 实现static newInstance()方法
    这样写的解释
    Eg:
public static final AlertFragment newInstance(int title, String message){    AlertFragment f = new AlertFragment();    Bundle bdl = new Bundle(2);    bdl.putInt(EXTRA_TITLE, title);    bdl.putString(EXTRA_MESSAGE, message);    f.setArguments(bdl);    return f;}...@Overridepublic void onCreate(Bundle savedInstanceState){    title = getArguments().getInt(EXTRA_TITLE);    message = getArguments().getString(EXTRA_MESSAGE);    //...    //etc    //...}

(2). 打包时提示’:transformClassesAndResourcesWithProguardForRelease’错误

参考:
proguard-rules.pro文件中删除包含 -injars, -outjars, 和 -libraryjars的行。有时需要保留libs/文件夹下面的jar包的类,参考示例:

-keep class org.ejml.** { *; }-dontwarn org.ejml.**-keep class org.ddogleg.** { *; }-dontwarn org.ddogleg.**

参考链接:
https://stackoverflow.com/questions/35333453/migration-from-eclipse-to-android-studio-proguard-errors-with-libraryjars
https://stackoverflow.com/questions/34900266/how-to-get-proguards-libraryjars-with-filter-working-in-android-studio