Home - doranbai/Note GitHub Wiki

app_process运行java程序

新建一个AS空工程,在build.gradle中修改 apply plugin: 'com.android.library' 注释掉//applicationId

新建一些java文件,需要实现main函数

然后编译,会生成 app\build\intermediates\packaged-classes\debug\classes.jar 用dx工具将classes.jar转换为dex包

app\build\intermediates\packaged-classes\debug>D:AndroidSdk\Sdk\build-tools\29.0.2\dx.bat --dex --output=./class-dex.jar classes.jar

将转换完的dex包push到//data/local/tmp目录下

# CLASSPATH=/data/local/tmp/jar文件或者dex文件名字 app_process /system/bin 包名.主类名

在Android中,访问data目录一般需要root权限,但是有个例外那就是/data/local/tmp目录。 注意: (1)cd /data/local/tmp可以打开这个目录,而不是一级一级目录的打开

tmp目录是一个Android系统的特殊目录。这个目录的特点是adb可以直接push写入。app都能读取,但不能写入。同时这个目录还是手机的内置存储,可以直接用DexClassLoader加载这个目录中的apk,而sdcard不行。所以,如果我们用adb push到sdcard上,想动态加载还要将apk再复制到应用的data目录才行。 正式环境肯定没法用这个目录,因为应用没有这个目录的写入权限。建议应用把插件包下载到宿主的data私有目录中,以保证数据安全,其他应用不能篡改。

app_process运行APK程序

新建一些java文件,需要实现main函数,编译生成app 利用adb install将app装到手机上

export CLASSPATH=$(echo /data/app/com.doran.RecorderDemo*/base*)
export LD_LIBRARY_PATH=$(echo /data/app/com.doran.RecorderDemo*)/lib/arm64/:/system/lib64/:/system/lib/没事不要加,app有native库的情况
app_process /system/bin 包名.主类名