Я пытаюсь запустить свое приложение с помощью скрипта wrap.sh, как в здесь, но когда я помещаю свой файл wrap.sh в нужное место, он не входит в мой apk.
Вот соответствующий файл build.gradle:
android {
compileSdkVersion rootProject.ext.compileSdkVersion
buildToolsVersion rootProject.ext.buildToolsVersion
sourceSets.main {
res.srcDirs "res"
assets.srcDirs '../../Resources/data/app', '../../Resources/data/content'
jniLibs.srcDirs "jni"
java.srcDirs "javasrc"
manifest.srcFile "AndroidManifest.xml"
}
buildTypes {
sanitize_debug {
initWith buildTypes.debug
minifyEnabled false
useProguard false
sourceSets.main {
jniLibs.srcDirs += "jni/sanitizer/libs"
}
[...]
tasks.whenTaskAdded { task ->
if (task.name == 'generateSanitize_debugBuildConfig') {
task.dependsOn createWrapScriptAddDir
}
}
static def writeWrapScriptToFullyCompileJavaApp(wrapFile, abi) {
if(abi == "armeabi" || abi == "armeabi-v7a")
abi = "arm"
if(abi == "arm64-v8a")
abi = "aarch64"
if (abi == "x86")
abi = "i686"
wrapFile.withWriter { writer ->
writer.write('#!/system/bin/sh\n')
writer.write('HERE="$(cd "$(dirname "$0")" && pwd)"\n')
writer.write('export ASAN_OPTIONS=log_to_syslog=false,allow_user_segv_handler=1,detect_container_overflow=0\n')
//writer.write('export ASAN_ACTIVATION_OPTIONS=include_if_exists=/data/local/tmp/asan.options.b\n')
writer.write("export LD_PRELOAD=\$HERE/libclang_rt.asan-${abi}-android.so\n")
writer.write('\$@\n')
}
}
task createWrapScriptAddDir(dependsOn: copyASANLibs) {
for (String abi : rootProject.ext.abiFilters) {
def dir = new File("jni/sanitizer/libs/" + abi)
dir.mkdirs()
def wrapFile = new File(dir, "wrap.sh")
writeWrapScriptToFullyCompileJavaApp(wrapFile, abi)
println "write file " + wrapFile.path
}
}
и моя результирующая папка lib в моем apk содержит только мои файлы so (которые правильно скопированы из соответствующей папки «jni/sanitizer/libs/abi» в папку lib в apk), а не мой файл wrap.sh.
Я действительно вижу свой файл wrap.sh в представлении папок студии Android (и на моем диске), но в apk его нет.
(Я пытаюсь создать в студии Android свой файл so с дезинфицирующим средством, как в здесь а>)
wrap.sh
в APK. Удалось ли вам найти решение? - person sixones   schedule 16.04.2018