Dynamic load so

pull/123/head
FongMi 3 years ago
parent 6f71ab5e09
commit 0928bab2c3
  1. 2
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/HomeActivity.java
  2. 56
      app/src/main/java/com/fongmi/android/tv/api/SoLoader.java
  3. 5
      app/src/main/java/com/fongmi/android/tv/utils/FileUtil.java

@ -17,6 +17,7 @@ import com.fongmi.android.tv.App;
import com.fongmi.android.tv.R;
import com.fongmi.android.tv.api.ApiConfig;
import com.fongmi.android.tv.api.LiveConfig;
import com.fongmi.android.tv.api.SoLoader;
import com.fongmi.android.tv.api.WallConfig;
import com.fongmi.android.tv.bean.Func;
import com.fongmi.android.tv.bean.History;
@ -72,6 +73,7 @@ public class HomeActivity extends BaseActivity implements CustomTitleView.Listen
ApiConfig.get().init().load(getCallback());
mBinding.progressLayout.showProgress();
Updater.create(this).start();
SoLoader.get().load();
Server.get().start();
setRecyclerView();
setViewModel();

@ -0,0 +1,56 @@
package com.fongmi.android.tv.api;
import com.fongmi.android.tv.App;
import com.fongmi.android.tv.net.OKHttp;
import com.fongmi.android.tv.utils.FileUtil;
import java.io.File;
import java.io.IOException;
public class SoLoader {
private static final int exoVer = 1;
private static final int ijkVer = 1;
private static final String url = "https://ghproxy.com/https://raw.githubusercontent.com/FongMi/TV/release/other/";
private static final String exo = "libexo-" + exoVer + ".so";
private static final String ijk = "libijk-" + ijkVer + ".so";
private static class Loader {
static volatile SoLoader INSTANCE = new SoLoader();
}
public static SoLoader get() {
return Loader.INSTANCE;
}
public void load() {
App.execute(() -> {
checkSo(exo);
checkSo(ijk);
});
}
private void checkSo(String name) {
try {
File file = new File(FileUtil.getLibDir(), name);
if (!file.exists()) download(file, name);
System.load(file.getAbsolutePath());
} catch (Exception ignored) {
}
}
private void download(File file, String name) throws IOException {
remove(name.split("-")[0]);
FileUtil.write(file, OKHttp.newCall(url + name).execute().body().bytes());
}
private void remove(String name) {
File directory = FileUtil.getLibDir();
for (File file : directory.listFiles()) {
if (file.getName().contains(name)) {
file.delete();
}
}
}
}

@ -1,5 +1,6 @@
package com.fongmi.android.tv.utils;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Build;
@ -30,6 +31,10 @@ public class FileUtil {
return Environment.getExternalStorageDirectory().getAbsolutePath();
}
public static File getLibDir() {
return App.get().getDir("libs", Context.MODE_PRIVATE);
}
public static File getCacheDir() {
return App.get().getCacheDir();
}

Loading…
Cancel
Save