Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/194.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
创建一个包含内部使用res/raw文件的android库_Android - Fatal编程技术网

创建一个包含内部使用res/raw文件的android库

创建一个包含内部使用res/raw文件的android库,android,Android,我有一个Android库项目,在res/raw目录中有文本数据文件,可以通过getAssets().open(R.id.xxx)和InputStream访问这些文件。此内容仅在库中访问和处理 库的目的是为外部客户分发,因此我需要隐藏文件的内容以及库的实现。当库变成应用程序时,一切都正常。但如果我将其用作外部应用程序中的库,则会出现运行时错误 我创建了一个Android应用程序,并将库jar文件作为外部jar包含在应用程序的libs目录中。但是,该应用程序给出的运行时错误为classdefnotf

我有一个Android库项目,在res/raw目录中有文本数据文件,可以通过getAssets().open(R.id.xxx)和InputStream访问这些文件。此内容仅在库中访问和处理

库的目的是为外部客户分发,因此我需要隐藏文件的内容以及库的实现。当库变成应用程序时,一切都正常。但如果我将其用作外部应用程序中的库,则会出现运行时错误

我创建了一个Android应用程序,并将库jar文件作为外部jar包含在应用程序的libs目录中。但是,该应用程序给出的运行时错误为
classdefnotfound R$Raw
。库jar文件中未包含res/raw


是否有任何方法可以将数据和实现隐藏在库中,但也可以将库提供给客户?

否。将库部署到jar时,库项目的
src
文件夹中不包含的所有内容都将不包括在内。资源始终可以从完成的apk文件中获得;您所要做的就是将apk文件作为归档文件打开,您将看到资源及其文件的整个文件夹层次结构。因此,您无法对任何人隐藏资源文件。您必须找到一种方法将文件中的数据集成到.java文件中。


我们希望您只使用库中的.java文件,编译成jar,将jar与资源文件一起提供给开发人员。然后,开发人员将自己将这些资源文件放入自己应用程序的
res
文件夹中,您的库将集成在该文件夹中。

使用适用于Gradle 1.3版或更高版本的Android插件,您现在可以将资源声明为私有资源。最初,库中的所有资源都被视为公共资源,当您使用标记
将其中一个资源声明为公共资源时,其余所有资源将自动变为私有资源

<resources>
    <public name="mylib_app_name" type="string"/>
</resources>

有关更多信息,请参阅