如何从 Android 库 (AAR) 加载资产(文本文件)?

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 文件中,然后从库中访问它们?使用库的应用程序甚至不需要知道这些资源的存在,因为它们是库的内部资源。谢谢!