(原創)開發使用Android studio所遇到的一些問題總結

1.Android studio下載鏈接地址(無需翻牆):包含先行版和正式版(推薦使用正式版bug少)

   http://www.androiddevtools.cn/

2.第一次安裝避免成功先不要急着打開應用,先取消打開,到安裝目錄下/bin/idea.properties文件打開在最後面添加

  disable.android.first.run=true  並後面多一行回車即可,再重新打開AS即可避免第一次去聯網請求更新



3.導入eclipse項目:例如本人需要導入D:\workspace\eclipse\test一個test項目方式


選擇需要導入的項目:(要是有依賴jar也是直接選中導入主項目即可);點擊OK進入下一步


選擇存放的工程項目目錄位置:


下一步:默認即可


finish即可完成導入,是不是so easy!

導入成功後:需要類似eclipse視圖方式需要切換


選擇project即可


看到手機圖標麼有,這就說明你項目可以正常運行了



下面講解下關於gradle編譯相關出錯地方和怎麼選擇你自己本地的gradle編譯版本

首先:一般情況下都要將gradle設置爲離線不去更新,這可能涉及到需要翻牆去尋找就會導致項目卡住在那裏一直編譯;修改如下設置

1.點擊扳手圖標---setting


搜索gradle按如下設置


如何選擇本地gradle:上面圖的第一個紅圈選項既是選擇本地gradle點擊後面的...彈出框選擇AS安裝目錄下/gradle相應版本即可如圖



2.關於導入別人項目導致本地的gradle與其不一致無法編譯通過(也就是編譯報錯問題)解決

首先:需要修改編譯gradle下的壓縮包路徑,查看本地版本方式:D:\Program\android-studio\gradle



3.關於項目整體gradle編譯工具版本修改,查看方式:D:\Program\android-studio\gradle\m2repository\com\android\tools\build\gradle


對應項目中的版本:注意是最外層gradle


4.對於單個項目或者jar依賴包的節點下的各個gradle創建工具版本號,查看方式:


基本修改完這些項目都是可以正常運行了!!!


以下爲開發過程的其他AS報錯的整理:

1.出現非法字符:將所有報錯的文件找到該文件將其格式設置爲UTF-8無BOM
如:
D:\workspace\studiojob\DadaDriver\dadaDriver\src\main\java\com\newdadadriver\utils\ChannelUtil.java
Error:(1, 1) 錯誤: 非法字符: \65279
Error:(1, 10) 錯誤: 需要class, interface或enum

2.Project Sync
         The project 'DadaDriver' is not a Gradle-based project
         More Information about migrating to Gradle
  gradle源文件缺失問題;重新import工程即可

3.AssertionError: platform-tools doesn't match platform-tools-preview
編譯問題;刷新即可

4.最低版本報錯:更改更高版本號 
     Error:(5, 5) uses-sdk:minSdkVersion 5 cannot be smaller than version 8 declared in library 
D:\workspace\studiojob\DadaDriver\slidingMenu_library\build\intermediates\exploded-aar\DadaDriver\androidSupportLib\unspecified\AndroidManifest.xml

5.運行項目出現:按提示添加相應的代碼到build.gradle的Android下即可
Error:duplicate files during packaging of APK D:\workspace\studiojob\DadaDriver\dadaDriver\build\outputs\apk\dadaDriver-debug-unaligned.apk
Path in archive: META-INF/LICENSE.txt
Origin 1: D:\workspace\studiojob\DadaDriver\dadaDriver\libs\httpmime-4.2.4.jar
Origin 2: D:\workspace\studiojob\DadaDriver\dadaDriver\libs\fastjson.jar
You can ignore those files in your build.gradle:
android {
  packagingOptions {
  exclude 'META-INF/LICENSE.txt'
            exclude 'META-INF/NOTICE.txt'
  }
}


6.模擬器出現空白,無法正常顯示,原因:沒有對應可以顯示佈局版本,調低即可org.jetbrains.android.uipreview.RenderingException:Failed to load the LayoutLib: com/android/layoutlib/bridge/Bridge : Unsupportedmajor.minor version 52.0

at org.jetbrains.android.uipreview.LayoutLibraryLoader.load(LayoutLibraryLoader.java:90)

atorg.jetbrains.android.sdk.AndroidTargetData.getLayoutLibrary(AndroidTargetData.java:180)

atcom.android.tools.idea.rendering.RenderService.createTask(RenderService.java:164)



以上是本人暫時遇到整理的問題,後續有發現其他還會添加!


7. Apk的簽名混淆打包

7-1. 創建簽名文件keystore



7-2. 簽名apk




可以代碼直接在build.gradle裏面編寫

android {
    signingConfigs {// 簽名
        config {
            keyAlias 'test'
            keyPassword '123456'
            storeFile file('H:/zhou/keystore.jks')
            storePassword '123456'
        }
    }
    compileSdkVersion 24
    buildToolsVersion "24.0.1"
    defaultConfig {
        applicationId "com.vsoontech.p2p.sample"
        minSdkVersion 15
        targetSdkVersion 24
        versionCode 1
        versionName "1.0"
    }
    //執行lint檢查,有任何的錯誤或者警告提示,都會終止構建
    lintOptions {
        abortOnError false
    }
    buildTypes {
        debug {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
        release {
            minifyEnabled true // 混淆
            zipAlignEnabled true
            shrinkResources true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.config // 使用簽名
        }
    }
    productFlavors {
    }
}

7-2. 混淆

只要是proguard-rules.pro文件配置


# 指定代碼的壓縮級別
-optimizationpasses 5

# 包名不混合大小寫
-dontusemixedcaseclassnames

# 不去忽略非公共的庫類
-dontskipnonpubliclibraryclasses

# 優化  不優化輸入的類文件
-dontoptimize

# 預校驗
-dontpreverify

# 混淆時是否記錄日誌
-verbose

# 混淆時所採用的算法
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*

# 保護註解
-keepattributes *Annotation*

# 保持哪些類不被混淆
-keep class com.vsoontech.p2p.** {*;}
-keep class com.linkin.base.** {*;}

# 如果有引用v4包可以添加下面這行
-keep public class * extends android.support.v4.app.Fragment

# 忽略警告
-ignorewarning

# 如果引用了v4或者v7包
-dontwarn android.support.**

# 保持 native 方法不被混淆
-keepclasseswithmembernames class * {
    native <methods>;
}

# 保持自定義控件類不被混淆
-keepclasseswithmembers class * {
    public <init>(android.content.Context, android.util.AttributeSet);
}

# 保持 Parcelable 不被混淆
-keep class * implements android.os.Parcelable {
  public static final android.os.Parcelable$Creator *;
}

# 保持枚舉 enum 類不被混淆
-keepclassmembers enum * {
  public static **[] values();
  public static ** valueOf(java.lang.String);
}


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