mal*_*c19 5 java android assets gradle aar
我在 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());
}
}
}
Run Code Online (Sandbox Code Playgroud)
我所有的资产都在 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'
}
Run Code Online (Sandbox Code Playgroud)
我想我的问题是:如何将资产捆绑到 AAR 文件中,然后从库中访问它们?使用库的应用程序甚至不需要知道这些资源的存在,因为它们是库的内部资源。谢谢!
| 归档时间: |
|
| 查看次数: |
932 次 |
| 最近记录: |