安装APK时缺少lib文件夹

安装APK时缺少lib文件夹

我想知道如何构建我的APK,以便在安装APK时在/data/data//lib下安装/复制我的库。

我正在使用Android 4.0.1我构建一个APK,并确认当我提取它时,我有一个包含我的jni库的lib/arm64-v8a文件夹。我希望在我安装我的APK之后,在同一个设备上的一些其他应用程序可以访问我在lib/arm64-v8a中拥有的库。/data/data/文件夹似乎是正确的位置,因此我的问题;如果有另一种方法使我的库在设备上访问,我是开放的。我基于android.bundle.enableUncompressedNativeLibs=false在我的gradle.properties文件中设置了这一讨论,尽管我没有看到使用它时使用true或false的任何效果。我在我的清单中设置了android:extractNativeLibs="true"但是,当我安装apk时,设备上的/data/data//文件夹只包含一个cache和code_cache文件夹,这两个文件夹都是空的。

我确实在/data/app/下面看到了一个包含库的文件夹,但是它们包含了每次安装APK时随机设置的字符串:

代码语言:javascript复制/data/app/~~sFE8-eNknFAkhKJ-1S03lg==/-rsDLNgpi4vult7yVBrPNOQ==/

base.apk

lib/arm64/

这些随机字符串阻止我从任何其他应用程序可靠地访问我的库。(如果有一种方法不将这些随机字符串作为名称的一部分,并且/data/app是我的库与其他应用程序共享的推荐位置,那么我对另一种方法感兴趣。)

我还安装了其他预构建的APK,使用这些程序,我确实看到了/data/data//lib下的库,这是我想要的。对我来说,这表明我的问题是如何用AS 4.0.1构建我的APK,而不是我的设备,它的Android版本,或者我如何安装APK。

这是我的分级文件:

代码语言:javascript复制import java.util.regex.Matcher

import java.util.regex.Pattern

apply plugin: 'com.android.application'

android {

compileSdkVersion 30

buildToolsVersion "30.0.2"

lintOptions {

checkReleaseBuilds false

abortOnError false

}

sourceSets.main {

jniLibs.srcDirs = ['libs']

jni.srcDirs = []

}

defaultConfig {

applicationId "com.example.myexample"

minSdkVersion 16

targetSdkVersion 30

versionCode 1

versionName "1.0"

testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"

externalNativeBuild {

cmake {

version "3.17.0"

cppFlags ""

arguments "-DANDROID_STL=c++_shared"

}

}

ndk {

moduleName "myexample"

abiFilter "arm64-v8a"

ldLibs "log"

}

packagingOptions {

exclude "lib/arm64-v8a/libassets.so"

}

}

buildTypes {

release {

minifyEnabled false

proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'

}

}

externalNativeBuild {

cmake {

version "3.17.0"

path "src/main/cpp/CMakeLists.txt"

// There can be only one CMAKE per project: https://developer.android.com/studio/projects/gradle-external-native-builds

}

}

}

task copyFiles(type: Copy) {

description = 'Testing a manual copy operation (confirmed it works)...'

from file("../dsp/external/ship/libmyexample_skel.so")

into file("$buildDir/res/raw/")

}

project.afterEvaluate {

preBuild.dependsOn copyFiles

}

dependencies {

implementation fileTree(dir: "libs", include: ["*.jar"])

implementation 'androidx.appcompat:appcompat:1.2.0'

implementation 'androidx.constraintlayout:constraintlayout:2.0.1'

testImplementation 'junit:junit:4.12'

androidTestImplementation 'androidx.test.ext:junit:1.1.2'

androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'

}我还尝试过其他一些方法:我手动创建了一个src/main/jniLibs.arm64-v8a文件夹,其中放置了一个.so。当我解压缩它时,这个.so会出现在my中,但是我的/data/data//文件夹没有库。

相关推荐

神霄煞仙(半块铜板)最新章节在线阅读
大陆365bet网址

神霄煞仙(半块铜板)最新章节在线阅读

📅 10-10 👁️ 5185
英雄联盟开服任务几点刷新
beat365体育亚洲

英雄联盟开服任务几点刷新

📅 01-16 👁️ 4177
酷狗音乐批量下载指南
beat365体育亚洲

酷狗音乐批量下载指南

📅 06-15 👁️ 9237
世界杯历史上十大经典防守阵型解析及其战术演变历程
为什么一边喂奶一边流奶
365最专业的数据服务平台

为什么一边喂奶一边流奶

📅 10-27 👁️ 9909
太原联想电脑售后维修服务点
beat365体育亚洲

太原联想电脑售后维修服务点

📅 01-20 👁️ 1929