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

时间:2017-07-18 04:40:46

标签: java android gradle assets 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());
        }
    }
}

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

0 个答案:

没有答案