You've already forked android_translation_layer
mirror of
https://gitlab.com/android_translation_layer/android_translation_layer.git
synced 2025-10-27 11:48:10 -07:00
auto extract native libraries and detect lib name for NativeActivity
This commit is contained in:
@@ -37,6 +37,12 @@ import android.view.WindowManager;
|
||||
//import android.view.inputmethod.InputMethodManager;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
|
||||
import com.reandroid.arsc.chunk.xml.AndroidManifestBlock;
|
||||
import com.reandroid.arsc.chunk.xml.ResXmlAttribute;
|
||||
import com.reandroid.arsc.chunk.xml.ResXmlElement;
|
||||
|
||||
/**
|
||||
* Convenience for implementing an activity that will be implemented
|
||||
@@ -161,6 +167,30 @@ public class NativeActivity extends Activity implements SurfaceHolder.Callback,
|
||||
throw new RuntimeException("Error getting activity info", e);
|
||||
}*/
|
||||
|
||||
// parse AndroidManifest.xml to get name and entry of native lib
|
||||
try (InputStream inStream = ClassLoader.getSystemClassLoader().getResourceAsStream("AndroidManifest.xml")) {
|
||||
for (ResXmlElement activity: AndroidManifestBlock.load(inStream).listActivities()) {
|
||||
if (!getClass().getName().equals(activity.searchAttributeByResourceId(AndroidManifestBlock.ID_name).getValueAsString())) {
|
||||
continue;
|
||||
}
|
||||
for (ResXmlElement metaData: activity.listElements(AndroidManifestBlock.TAG_meta_data)) {
|
||||
ResXmlAttribute name = metaData.searchAttributeByResourceId(AndroidManifestBlock.ID_name);
|
||||
ResXmlAttribute value = metaData.searchAttributeByResourceId(AndroidManifestBlock.ID_value);
|
||||
if (name == null || value == null){
|
||||
continue;
|
||||
}
|
||||
if (META_DATA_LIB_NAME.equals(name.getValueAsString())){
|
||||
libname = value.getValueAsString();
|
||||
}
|
||||
if (META_DATA_FUNC_NAME.equals(name.getValueAsString())){
|
||||
funcname = value.getValueAsString();
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
String path = null;
|
||||
|
||||
File libraryFile = new File(new File(android.os.Environment.getExternalStorageDirectory(), "lib"),
|
||||
|
||||
Reference in New Issue
Block a user