1. 程式人生 > >Android studio意外問題的解決方式

Android studio意外問題的解決方式

由於AndroidStudio的不成熟,在使用過程中經常出現意外的問題,下面介紹下偶遇到的問題,以及解決方法。

1.building “project name”gradle project info

在啟動專案時經常遇到彈出building“project name”gradle project info...提示框,並且一直在圈圈。

這是因為當前專案的使用到的gradle不合適,需要從官網上重新下載,但又對防問不到google,這就出現一直在圈圈。

既然無法直接下載,可以選擇翻牆,也可以從其他網站找找相應的gradle(提供個gradle2.4 http://download.csdn.net/detail/nacl025/9146511)

下載成功後,存放在:C:\Users\使用者名稱\.gradle\wrapper\dists\gradle-1.XX-all\3jdgemv0iv8uqohg3kcp2o88r1\gradle-1.XX-all.zip

重啟Android Studio,如果運氣不好的話,還會彈出building“project name”gradle project info。這是因為沒有讀到相應路徑,需要手動把專案目錄下的build.idea.gradle等檔案及資料夾刪除,然後重啟AndroidStudio,手動指定相應路徑。恭喜,成功了!

2、引用第三方類庫

      在有第三類庫的時候,執行專案時會發現下面的問題:“android studio Execution failed for task ':app:dexDebug'.”

      這是因為第三方庫是系統庫,我們執行時不需要新增到安裝包內,既所說的Framework_lib。此時我們需要在依賴中做如下修改:

      dependencies {
                         provided files('framework_libs/framework_base.jar')
       }

      特別注意一點jar包不要存放到預設的libs目錄內。

3、Debug時使用第三方簽名

      android {
               signingConfigs {
                                                      debug {
                                                              storeFile file("D:\\Users\\edmund\\.android\\mdm_test.keystore")
                                                                   }
                                            }
                     }

4、addUserRestriction

  在android5.0後,DevicePolicyManager類新增加了addUserRestriction方法,但是在使用時簽名打包時會發生異常,這是混淆引起的,需要在混淆檔案裡新增下面內容:

dontwarnandroid.app.admin.DevicePolicyManager

5、Lint: How to ignore “<key> is not translated in <language>” errors?

  • "File" > "Settings" and type "MissingTranslation" into the search box
  • 如果還不可以,如下:
  • android {    lintOptions {        checkReleaseBuilds false        // Or, if you prefer, you can continue to check for errors in release builds,        // but continue the build even when errors are found:        abortOnError false    }}

6、自定義匯出Apk包名

     打gabuild.gradle檔案

apply plugin: 'com.android.application'

//獲取時間戳
def getDate() {
    def date = new Date()
    def formattedDate = date.format('yyyyMMddHHmm')
    return formattedDate
}

//從androidManifest.xml中獲取版本號
def getVersionNameFromManifest() {
    def manifestParser = new com.android.builder.core.DefaultManifestParser()
    return manifestParser.getVersionName(android.sourceSets.main.manifest.srcFile)
}

//從androidManifest.xml中獲取Code
def getVersionCodeFromManifest() {
    def manifestParser = new com.android.builder.core.DefaultManifestParser()
    return manifestParser.getVersionCode(android.sourceSets.main.manifest.srcFile)
}
android {
    compileSdkVersion 23
    buildToolsVersion '23.0.0'
    defaultConfig {
        applicationId "com.nq.**"
        minSdkVersion 16
        targetSdkVersion 23
    }
    android.applicationVariants.all { variant ->
        variant.outputs.each { output ->
            def file = output.outputFile
            def filename = "Safelauncher_" + getVersionCodeFromManifest() +".apk"
            output.outputFile = new File(file.parent, filename)
        }
    }
}