Tomas Dirvanauskas
2018-09-25 11:41:22 UTC
Hey,
let me shortly explain what I am trying to achieve.
For development purposes, I want to perform quick iteration during my app
development. So instead of doing:
* Change some native code
* Compile library
* Package apk
* Install apk
* Run apk
I want to do:
* Change some native code
* Compile library
* Send .so file to the device
* Restart the app
After doing initial apk installation, I push only single .so file to the
device (/data/data/com.Tomas.MyApplication/cache/) and instruct the app to
check that location first, if it finds a library there it will try to load
that library instead of the one from /data/app folder.
I am loading the library like this -
dlopen("/data/data/com.Tomas.MyApplication/files/libmylibrary.so",
RTLD_NOW);
And it works fine on Android 6.0, but doesn't work on Android 8.0, dlopen
returns 0.
The error is:
09-25 10:11:04.395 23925 23925 W Main: type=1400 audit(0.0:49): avc: denied
{ open } for path="/data/data/com.Tomas.MyApplication/cache/libmylibrary.so"
dev="dm-0" ino=112773 scontext=u:r:untrusted_app:s0:c512,c768
tcontext=u:object_r:app_data_file:s0 tclass=file permissive=0
I assume this is somehow related to this -
https://developer.android.com/about/versions/nougat/android-7.0-changes#ndk-errors
Is there any way to workaround this? Like I said this is strictly for
development purposes to speed up iteration time.
P.S I also tried putting libmylibrary.so file to
/storage/emulated/0/Android/data/com.Tomas.MyApplication/cache//libmylibrary
.so" , and tried using dlopen, but that fails both on Android 6.0 and
Android 8.0
let me shortly explain what I am trying to achieve.
For development purposes, I want to perform quick iteration during my app
development. So instead of doing:
* Change some native code
* Compile library
* Package apk
* Install apk
* Run apk
I want to do:
* Change some native code
* Compile library
* Send .so file to the device
* Restart the app
After doing initial apk installation, I push only single .so file to the
device (/data/data/com.Tomas.MyApplication/cache/) and instruct the app to
check that location first, if it finds a library there it will try to load
that library instead of the one from /data/app folder.
I am loading the library like this -
dlopen("/data/data/com.Tomas.MyApplication/files/libmylibrary.so",
RTLD_NOW);
And it works fine on Android 6.0, but doesn't work on Android 8.0, dlopen
returns 0.
The error is:
09-25 10:11:04.395 23925 23925 W Main: type=1400 audit(0.0:49): avc: denied
{ open } for path="/data/data/com.Tomas.MyApplication/cache/libmylibrary.so"
dev="dm-0" ino=112773 scontext=u:r:untrusted_app:s0:c512,c768
tcontext=u:object_r:app_data_file:s0 tclass=file permissive=0
I assume this is somehow related to this -
https://developer.android.com/about/versions/nougat/android-7.0-changes#ndk-errors
Is there any way to workaround this? Like I said this is strictly for
development purposes to speed up iteration time.
P.S I also tried putting libmylibrary.so file to
/storage/emulated/0/Android/data/com.Tomas.MyApplication/cache//libmylibrary
.so" , and tried using dlopen, but that fails both on Android 6.0 and
Android 8.0
--
You received this message because you are subscribed to the Google Groups "Android Security Discussions" group.
To unsubscribe from this group and stop receiving emails from it, send an email to android-security-discuss+***@googlegroups.com.
Visit this group at https://groups.google.com/group/android-security-discuss.
For more options, visit https://groups.google.com/d/optout.
You received this message because you are subscribed to the Google Groups "Android Security Discussions" group.
To unsubscribe from this group and stop receiving emails from it, send an email to android-security-discuss+***@googlegroups.com.
Visit this group at https://groups.google.com/group/android-security-discuss.
For more options, visit https://groups.google.com/d/optout.