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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章