2015-04-02 81 views
0

我有一個使用本機庫,支持armeabi-V7A如何創建的.apk擴展

我使用谷歌播放多種APK支持功能,以分發二十的APK 應用但有時它會檢測到目標設備的架構錯誤,而apk帶有更高版本的代碼被安裝在錯誤的架構上

當然這是不正常的,但它絕對不是一個小數目發生對我們

所以我想實現像MXplayer,它有一個主要的應用APK和其他的APK支持抄本不同體系結構

我該如何支持這種行爲?

在此先感謝:)

+0

你是說谷歌播放檢測錯誤的架構?如果是這樣,你就無能爲力,只能通過谷歌提出問題。誰知道相同的設備在下載MXPlayer時沒有這個問題? – weston 2015-04-02 15:22:53

+0

單個APK有多大?如果這是一個可接受的數額較大,你可以側面解決問題。 – weston 2015-04-02 15:25:35

+0

是Google play檢測到錯誤的架構。 – 2015-04-03 12:14:47

回答

1

在運行時加載APK(s)。這就是插件(即主題,可下載資源等)完成的方式。

/** Returns APK full path for application */ 
public static String getAPKPath(final Context context, final String appName) 
     throws PackageManager.NameNotFoundException { 
    final PackageManager pm = context.getPackageManager(); 
    return pm.getApplicationInfo(appName, 0).sourceDir; 
} 

/** 
* Returns a classloader that has APK loaded. APK must be installed. 
* @param context Android Context 
* @param app APK application full name 
* @return Classloader that has APK loaded 
*/ 
public static ClassLoader loadAPK(final Context context, final String app) 
     throws PackageManager.NameNotFoundException { 
    final String apkPath = getAPKPath(context, app); 
    final File tmpDir = context.getDir("tmp", 0); 
    final DexClassLoader classLoader = new DexClassLoader(apkPath, 
      tmpDir.getAbsolutePath(), null, context.getClassLoader()); 
    return classLoader; 
} 
+0

你能告訴我怎麼做嗎?,一些鏈接或樣本會很棒:) – 2015-04-03 12:16:20

+0

我已經添加了我使用的代碼。 – m0skit0 2015-04-03 13:01:48

+0

此代碼是否適用於從其他apks加載本機庫? – 2015-04-03 13:43:58