1. 程式人生 > >專案中遇到的那些bug(一)

專案中遇到的那些bug(一)

  對於在電腦前一坐就是一整天的碼農們,除了吃飯上廁所,其他時間我們眼裡只有程式碼。在這單一的生活中我們如何取樂,我想莫過於當我們用盡全力解決bug時的快感和成就感。對於一個一直在關注他人部落格從不寫部落格的我來說,沒想到一開始就以bug的主題和大家見面,以下是我在專案中遇到的bug,先列舉了三個,剩下的後期部落格中會跟進,請大家關注,有什麼不妥之處還望大家指出來。我的每一小進步都離不開大家的支援!

bug one:java.lang.UnsatisfiedLinkError

這裡寫圖片描述

  視訊播放器開發引用vitamio第三方庫的時候,針對部分手機(如:華為P8max)會報上面的錯,通過百度搜索,嘗試了很多種方式,最終解決方案如下:

對於Android Studio.
首先在工程目錄下的gradle.properties裡面加上 android.useDeprecatedNdk=true
然後在app的build.gradle中新增如下程式碼,然後rebuild.

這裡寫圖片描述

android {  

    defaultConfig {  
        multiDexEnabled true   
        ndk {  
            abiFilters "armeabi", "armeabi-v7a", "x86", "mips"  
        }  
    }  

    source
Sets { main { jniLibs.srcDirs = ['libs'] } } }

bug two:AndroidStudio匯入專案一直Building

大家應該遇到過as匯入專案時有時會一直在building中,按取消沒反應,只能關掉as程序。解決方案如下:

1.隨便找一個你能執行的as專案

2.開啟gradle-wrapper.properties,檔案目錄:專案/gradle/wrapper/gradle-wrapper.properties

3.複製distributionUrl這一整行的內容,eg: distributionUrl=https://services.gradle.org/distributions/gradle-2.8-all.zip

4.開啟你要匯入的專案的gradle-wrapper.properties,具體步驟與步驟2相同

5.把步驟3複製的內容,替換你要匯入的專案的gradle-wrapper.properties檔案的distributionUrl這一行

6.再重啟as,匯入專案就可以了

提示:記得在工程目錄下的build.gradle中對應修改gradle版本,如圖
**這裡寫圖片描述**

bug three:Attribute “titleTextStyle” has already been defined

在Android Studio中準備引入Eclipse中的專案,而此專案中包含了第三方庫actionbarsherlock,是一個作者不再維護的庫。在我把此專案引入到Android Studio中編譯時,提示了”Attribute “titleTextStyle” has already been defined” 這樣的錯誤。

因為我是在Android Studio中新建了一個module,然後再把actionbarsherlock裡面的資源和程式碼放進新的module中的。
新建的module中的build.gradle中預設帶有 com.android.support:appcompat-v7:23.4.0

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:23.4.0'
}

錯誤是因為此匯入的庫和actionbarsherlock中的attr屬性有衝突導致的。
解決問題方法
刪掉 com.android.support:appcompat-v7:23.4.0 ,
改為:com.google.android.gms:play-services:7.0.0
如:

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile 'com.google.android.gms:play-services:7.0.0'
}

重新clear專案,然後rebuild.

bug four:android studio沒有org.apache.http.client.HttpClient包

剛到新的公司,負責ERP手持終端開發,在匯入Eclipse的demo時,由於使用的是apache的http做網路請求,Android studio發現沒有辦法引用apache的包,效果如下:
這裡寫圖片描述
解決方案:
這裡寫圖片描述
這裡寫圖片描述
按照以上步驟,效果如下:
這裡寫圖片描述

bug five:transformResourcesWithMergeJavaResForDebug FAILED

Error:Execution failed for task ‘:erpdemo1:transformResourcesWithMergeJavaResForDebug’.

com.android.build.api.transform.TransformException: com.android.builder.packaging.DuplicateFileException: Duplicate files copied in APK META-INF/DEPENDENCIES
File1: F:\program\siwen_pro\MyDemop2\erpdemo1\libs\xmlrpc-client-3.1.3.jar
File2: F:\program\siwen_pro\MyDemop2\erpdemo1\libs\xmlrpc-common-3.1.3.jar
File3: F:\program\siwen_pro\MyDemop2\erpdemo1\libs\xmlrpc-server-3.1.3.jar

packagingOptions {
    exclude 'META-INF/NOTICE' // will not include NOTICE file
    exclude 'META-INF/LICENSE' // will not include LICENSE file
}
packagingOptions{
    exclude'META-INF/DEPENDENCIES.txt'
    exclude'META-INF/LICENSE.txt'
    exclude'META-INF/NOTICE.txt'
    exclude'META-INF/NOTICE'
    exclude'META-INF/LICENSE'
    exclude'META-INF/DEPENDENCIES'
    exclude'META-INF/notice.txt'
    exclude'META-INF/license.txt'
    exclude'META-INF/dependencies.txt'
    exclude'META-INF/LGPL2.1'
}

bug six:Execution failed for task ‘:app:clean’

Unable to delete directory: F:\rbu\Erp_rms\app\build\intermediates\exploded-aar\com.android.support\appcompat-v7

解決方案
方案1:
在app Module的build.gradle中新增一段程式碼:

task clean(type: Delete) {
delete rootProject.buildDir
}
這裡寫圖片

方案2:
這裡寫圖片描述

bug seven:ClassLoader referenced unknown path: /data/app/com.rbu.erp_rms-1/lib/arm64

com.rbu.erp_rms W/art: Before Android 4.1, method android.graphics.PorterDuffColorFilter android.support.graphics.drawable.VectorDrawableCompat.updateTintFilter(android.graphics.PorterDuffColorFilter, android.content.res.ColorStateList, android.graphics.PorterDuff$Mode) would have incorrectly overridden the package-private method in android.graphics.drawable.Drawable

解決方案:
android studio 2.0中使用了instant run功能,把這個功能關閉就ok了。因為instant run本身的機制影響了一些classloader的載入。

bug eight:Theme.AppCompat無全屏主題

V7包中的Theme.AppCompat主題系列中並沒有全屏樣式,只定義樣式
解決方案:

<style name="Theme.AppCompat.Light.NoActionBar.FullScreen" parent="@style/Theme.AppCompat.Light">
    <item name="windowNoTitle">true</item>
    <item name="windowActionBar">false</item>
    <item name="android:windowFullscreen">true</item>
    <item name="android:windowContentOverlay">@null</item>
</style>

bug nine:AAPT err(Facade for): libpng error: Not a PNG file

在匯入專案到Android studio後,若編譯出現“AAPT err(Facade for): libpng error: Not a PNG file”錯誤。
該錯誤表示專案中的drawable下的圖片檔案有非png圖片,命名為png造成的。

解決方案
方案1
在模組下的build.gradle中配置下面兩個資訊,再clear project。
aaptOptions.cruncherEnabled = false
aaptOptions.useNewCruncher = false
這裡寫圖片描述
方案2
在android studio中,依次點開字尾為png的圖片,可以檢視到圖片的檔案資訊,如下圖,將不為png的圖片另存為png圖片或者修改圖片字尾為對應的圖片格式。
這裡寫圖片描述

bug ten:A problem occurred configuring project ‘:demo’

Could not resolve all dependencies for configuration ‘:demo:_debugCompile’.
Could not find com.android.support.constraint:constraint-layout:1.0.1.
Searched in the following locations:
file:/D:/Program Files/Android/Android Studio/gradle/m2repository/com/android/support/constraint/constraint-layout/1.0.1/constraint-layout-1.0.1.pom
file:/D:/Program Files/Android/Android Studio/gradle/m2repository/com/android/support/constraint/constraint-layout/1.0.1/constraint-layout-1.0.1.jar
https://jcenter.bintray.com/com/android/support/constraint/constraint-layout/1.0.1/constraint-layout-1.0.1.pom
https://jcenter.bintray.com/com/android/support/constraint/constraint-layout/1.0.1/constraint-layout-1.0.1.jar
file:/E:/software/android/android-sdk-studio/extras/android/m2repository/com/android/support/constraint/constraint-layout/1.0.1/constraint-layout-1.0.1.pom
file:/E:/software/android/android-sdk-studio/extras/android/m2repository/com/android/support/constraint/constraint-layout/1.0.1/constraint-layout-1.0.1.jar
file:/E:/software/android/android-sdk-studio/extras/google/m2repository/com/android/support/constraint/constraint-layout/1.0.1/constraint-layout-1.0.1.pom
file:/E:/software/android/android-sdk-studio/extras/google/m2repository/com/android/support/constraint/constraint-layout/1.0.1/constraint-layout-1.0.1.jar
Required by:
SiwenDemo:demo:unspecified

解決方案:
工具欄上選擇 Tools –> Android –>SDK Manager 切換到SDK Tools選項
  在右下角處勾選 Show Package Details,
  在Support Repository下的ConstraintLayout for Android 和 Solver for ConstraintLayout 中選中自己需要的版本(gradle中依賴的版本)
這裡寫圖片描述

搞定!!!