Alexandre Julliard : wineandroid: Avoid using deprecated Build.CPU_ABI.

Alexandre Julliard julliard at winehq.org
Mon Nov 26 16:20:11 CST 2018


Module: wine
Branch: master
Commit: 996f7a192d6148c9eb017d87d220d1af5841c54b
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=996f7a192d6148c9eb017d87d220d1af5841c54b

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Mon Nov 26 14:40:33 2018 +0100

wineandroid: Avoid using deprecated Build.CPU_ABI.

Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/wineandroid.drv/WineActivity.java | 38 +++++++++++++++++++++++++++-------
 1 file changed, 31 insertions(+), 7 deletions(-)

diff --git a/dlls/wineandroid.drv/WineActivity.java b/dlls/wineandroid.drv/WineActivity.java
index 1d5b346..e9ab1f2 100644
--- a/dlls/wineandroid.drv/WineActivity.java
+++ b/dlls/wineandroid.drv/WineActivity.java
@@ -20,6 +20,7 @@
 
 package org.winehq.wine;
 
+import android.annotation.TargetApi;
 import android.app.Activity;
 import android.app.ProgressDialog;
 import android.content.Context;
@@ -74,18 +75,38 @@ public class WineActivity extends Activity
         new Thread( new Runnable() { public void run() { loadWine( null ); }} ).start();
     }
 
+    @TargetApi(21)
+    @SuppressWarnings("deprecation")
+    private String[] get_supported_abis()
+    {
+        if (Build.VERSION.SDK_INT >= 21) return Build.SUPPORTED_ABIS;
+        return new String[]{ Build.CPU_ABI };
+    }
+
+    private String get_wine_abi()
+    {
+        for (String abi : get_supported_abis())
+        {
+            File server = new File( getFilesDir(), abi + "/bin/wineserver" );
+            if (server.canExecute()) return abi;
+        }
+        Log.e( LOGTAG, "could not find a supported ABI" );
+        return null;
+    }
+
     private void loadWine( String cmdline )
     {
-        File bindir = new File( getFilesDir(), Build.CPU_ABI + "/bin" );
-        File libdir = new File( getFilesDir(), Build.CPU_ABI + "/lib" );
+        copyAssetFiles();
+
+        String wine_abi = get_wine_abi();
+        File bindir = new File( getFilesDir(), wine_abi + "/bin" );
+        File libdir = new File( getFilesDir(), wine_abi + "/lib" );
         File dlldir = new File( libdir, "wine" );
         File prefix = new File( getFilesDir(), "prefix" );
         File loader = new File( bindir, "wine" );
         String locale = Locale.getDefault().getLanguage() + "_" +
             Locale.getDefault().getCountry() + ".UTF-8";
 
-        copyAssetFiles();
-
         HashMap<String,String> env = new HashMap<String,String>();
         env.put( "WINELOADER", loader.toString() );
         env.put( "WINEPREFIX", prefix.toString() );
@@ -166,15 +187,18 @@ public class WineActivity extends Activity
     {
         if (name.equals( "files.sum" )) return true;
         if (name.startsWith( "share/" )) return true;
-        if (name.startsWith( Build.CPU_ABI + "/system/" )) return false;
-        if (name.startsWith( Build.CPU_ABI + "/" )) return true;
+        for (String abi : get_supported_abis())
+        {
+            if (name.startsWith( abi + "/system/" )) return false;
+            if (name.startsWith( abi + "/" )) return true;
+        }
         if (name.startsWith( "x86/" )) return true;
         return false;
     }
 
     private final boolean isFileExecutable( String name )
     {
-        return name.startsWith( Build.CPU_ABI + "/" ) || name.startsWith( "x86/" );
+        return !name.equals( "files.sum" ) && !name.startsWith( "share/" );
     }
 
     private final HashMap<String,String> readMapFromInputStream( InputStream in )




More information about the wine-cvs mailing list