2017-08-13 98 views
1

VideoView中似乎存在一個問題,它在Proguard下不起作用。以下屏幕在視頻啓動時出現。視頻查看無法在Proguard下工作

VideoView Not Working in Proguard

視頻查看的代碼如下:

 mediaController= new MediaController(this); 
     mediaController.hide(); 
     mediaController.setAnchorView(video_animation); 
     Uri uri= Uri.parse("android.resource://" + getPackageName() + "/" 
       + R.raw.splash_min); 
     video_animation.setMediaController(mediaController); 
     video_animation.setVideoURI(uri); 
     video_animation.requestFocus(); 

     video_animation.start(); 

還沒有設置加沒有具體的ProGuard爲VideoView運行。的build.gradle

buildTypes { 
     release { 
      minifyEnabled true 
      shrinkResources true 
      proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-project.txt' 
      resValue "string", "FB_APP_ID", getFbAppKey() 
     } 
     debug { 
      minifyEnabled true 
      shrinkResources true 
      proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-project.txt' 
      resValue "string", "FB_APP_ID", getFbAppKey() 
     } 
    } 

摘錄還有一些正在使用的產品的口味正好與應用程序ID來操作。

+0

把你的build.gradle文件plz。 –

+0

我編輯了我的答案。 –

回答

0

我認爲問題是您的視頻的URI。事實上,我認爲這個問題是這一行:

Uri uri= Uri.parse("android.resource://" + getPackageName() + "/" 
      + R.raw.splash_min); 

嘗試登錄"android.resource://" + getPackageName() + "/" + R.raw.splash_min,看看它指向正確的位置。如果沒有(我認爲它不會),你必須添加規則到你的proguard來保持你所期望的位置。

編輯:

問題是,當您啓用ProGuard的,包的名稱也發生變化。 getPackageName()會在應用中爲您提供正確的軟件包名稱,但在啓用proguards後會更改。所以你的URI不會指向正確的位置。您應該在您的proguard規則中排除您的軟件包名稱。

+0

URI當應用程序下運行的ProGuard:android.resource://com.urbanwand.diner.staged/2131034118 沒有Proguard的:android.resource://com.urbanwand.diner.staged/2131034118 所以沒有改變任何。但視頻播放沒有Proguard –

+0

請發佈您的build.gradle文件。 –

+0

您可以嘗試避免將progard應用於mediacontroller類 –

-2

使用getPackageName()&解析視頻文件的路徑時出現了URI問題。解決的辦法是寫雙引號裏面的視頻文件的路徑,而不是使用R.raw.file_name作爲ProGuard的似乎限制使用R中的文件訪問**

更新的URI是:

Uri uri= Uri.parse("android.resource://" + getPackageName() + "/raw/file_name"); 

所以這是它的工作原理。雖然這會增加apk的大小,但這是唯一可以正常工作的選項。

請隨時提供更多信息。

0

我不確定它是否仍然與您有關,但它可能對其他人有用。我遇到過同樣的問題。在我的情況下,根本原因是與我使用的一個庫和proguard配置有關。

所以,我在使用proguard編譯apk時出現了這個錯誤。

enter image description here

我試圖消除誤差的方法是通過增加-ignorewarning。錯誤已解決,但它使我的視頻無法播放。

有兩種方法來解決這個問題:

  1. 從gradle這個

  2. 刪除shrinkResources true刪除-ignorewarning並解決您的圖書館所產生的警告。