Android Studio 整理

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

org.gradle.daemon=true
org.gradle.parallel=true

org.gradle.configureondemand=true

android.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”)

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;
}
...
@Override
public 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值