android 运行jar包,android将so打到jar包中并运行-Go语言中文社区
加載so有兩種方法
System.load() 和System.loadLibrary(); 前者需傳入庫文件的絕對路徑,后者只需傳入庫文件名。
首先我的jar包目錄如下:
Loader是加載類:
static {
try {
InputStream is = null;
if(isCPUInfo64()) {
is = Loader.class.getResource("arm64/libhellojni.so").openStream();
}else {
is = Loader.class.getResource("arm32/libhellojni.so").openStream();
}
File tempFile = File.createTempFile("hellojni", ".so");
FileOutputStream fos = new FileOutputStream(tempFile);
int i;
byte[] buf = new byte[1024];
while ((i = is.read(buf)) != -1) {
fos.write(buf, 0, i);
}
is.close();
fos.close();
System.load(tempFile.getAbsolutePath());
tempFile.deleteOnExit();
} catch (IOException e) {
e.printStackTrace();
}
}
private static boolean isCPUInfo64() {
File cpuInfo = new File("/proc/cpuinfo");
if (cpuInfo != null && cpuInfo.exists()) {
InputStream inputStream = null;
BufferedReader bufferedReader = null;
try {
inputStream = new FileInputStream(cpuInfo);
bufferedReader = new BufferedReader(new InputStreamReader(inputStream), 512);
String line = bufferedReader.readLine();
if (line != null && line.length() > 0 && line.toLowerCase(Locale.US).contains("arch64")) {
return true;
} else {
return false;
}
} catch (Throwable t) {
Log.d("isCPUInfo64", " error = " + t.toString());
} finally {
try {
if (bufferedReader != null) {
bufferedReader.close();
}
if (inputStream != null) {
inputStream.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
return false;
}
總結
以上是生活随笔為你收集整理的android 运行jar包,android将so打到jar包中并运行-Go语言中文社区的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 祈福者放生2.5万斤鲇鱼被追责:属外来物
- 下一篇: 比教育优惠还便宜!苹果M2版Mac mi