我在src / main / assets文件夹中创建了一个包含一些文本文件的Android库(AAR)。文本文件仅在库中使用,而不是在使用该库的应用程序中使用,该库位于同一Android Studio项目中。访问这些文本文件应该很简单,但我无法做到。
每个文本文件都包含许多要解析为列表的行,这些行只能由库使用。使用Context
对象,应该很容易;但是我尝试在静态上下文中加载文件而我无法访问任何Context
对象。这是我尝试过的一些代码:
static {
InputStream is = null;
try {
is = Resources.getSystem().getAssets().open("assets/stopwords.txt");
Request.stopwords = new ArrayList<>();
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
String stopword;
while ((stopword = reader.readLine()) != null) {
Request.stopwords.add(stopword);
}
}
catch (IOException e) {
logger.error("Could not open input stream");
logger.error("Exception: {}", e.getMessage());
}
catch (Exception e) {
logger.error("Input stream opened but something else happened");
logger.error("Exception: {}", e.getMessage());
}
finally {
try {
is.close();
} catch (Exception e) {
logger.error("Could not close input stream");
logger.error("Exception: {}", e.getMessage());
}
}
}
我的所有资产都在src / main / assets中。这是图书馆的build.gradle:
apply plugin: 'com.android.library'
android {
compileSdkVersion 25
buildToolsVersion "25.0.3"
defaultConfig {
minSdkVersion 24
targetSdkVersion 25
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
sourceSets {
main {
assets.srcDirs = ['src/main/assets']
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:25.3.1'
compile 'sk.baka.slf4j:slf4j-handroid:1.7.25-3'
compile 'org.ejml:ejml-all:0.31'
}
我想我的问题是:如何将资产捆绑到AAR文件中,然后从库中访问它们?使用该库的应用程序甚至不需要知道这些资源是存在的,因为它们是库的内部资源。谢谢!