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)
}
}
}