这里说的程序是指在ndk下编译出来的可执行程序,因为公司的usb接口被封死了,所以想用模拟器直接调试。但是要调试的程序依赖一个共享库,在真机上可以直接将共享库拷贝到/system/lib目录下,就可以运行了。
但模拟器上却不行,拷贝东西到系统区时会报错(Cannot allocate memory),让人十分郁闷。
后来发现/init.rc里面开始几句是这样的:
# setup the global environment
export PATH /sbin:/system/sbin:/system/bin:/system/xbin
export LD_LIBRARY_PATH /system/lib
export ANDROID_BOOTLOGO 1
export ANDROID_ROOT /system
export ANDROID_ASSETS /system/app
export ANDROID_DATA /data
export EXTERNAL_STORAGE /mnt/sdcard
export ASEC_MOUNTPOINT /mnt/asec
export BOOTCLASSPATH /system/framework/core.jar:/system/framework/ext.jar:/system/framework/framework.jar:/system/framework/android.policy.jar:/system/framework/services.jar
于是将共享库和程序拷贝到/data/local,并尝试添加lib的环境路径:
E:\android\tools>adb shell
# export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/data/local
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/data/local
# cd /data/local
cd /data/local
# ls
ls
libhello-jni.so
tmp
ttest
#./ttest
./ttest
hello world!
运行成功。
这样到是可以调试了,但如果可以拷贝到系统分区/system中就更好了,不知道怎样才可以?