在 apk 中包含文件

Posted

技术标签:

【中文标题】在 apk 中包含文件【英文标题】:Include files in apk 【发布时间】:2016-11-26 01:46:17 【问题描述】:

我有一些目录需要包含在 apk 的根目录中(不,我不能将它们放在 assetsres/raw 文件夹中)。如何将它们包含在 apk 构建中?

我的build.gradle

buildscript 
    repositories 
        mavenCentral()
    
    dependencies 
        classpath 'com.android.tools.build:gradle:2.1.0'
    

apply plugin: 'android'

android 
    compileSdkVersion 'android-23'
    buildToolsVersion '24'

    compileOptions 
      sourceCompatibility JavaVersion.VERSION_1_7
      targetCompatibility JavaVersion.VERSION_1_7
    

    buildTypes 
        release 
            minifyEnabled false
            proguardFile getDefaultProguardFile('proguard-android.txt')
        
    

    dependencies 
        compile fileTree(include: ['*.jar'], dir: 'libs')
    

【问题讨论】:

“不,我不能将它们放在资产或 res/raw 文件夹中”。但是你也不能在运行时访问它们。 【参考方案1】:

这是实现此目的的另一种方法:

在您的“app/src/main”目录中 创建一个“资源”目录。然后在资源目录中添加您要创建的目录结构。您需要知道一个技巧,您必须添加一个虚拟文件和每个结束目录。它可以是一个长度为 0 的文件。如果您不添加该虚拟文件,则不会创建无关目录。您指定的目录结构将在 apk 的根目录中构建。 (即“资源”目录不会是路径名的一部分)

注释:注意 apk 安装在只有读取权限的目录中。您将无法将任何内容添加到您创建的目录结构中。通常,我描述的技术用于存储不会更改的数据,例如“default.properties”文件。使用它的类加载器的 getResource 方法访问内容。

【讨论】:

【参考方案2】:

你可以像这样添加你的目录

include ':directory1'
project(':directory').projectDir = new File(settingsDir, '../Project B/Directory 1')

更多信息请参考this

【讨论】:

以上是关于在 apk 中包含文件的主要内容,如果未能解决你的问题,请参考以下文章

在 APK 中包含具有相同包名和名称的类

在android studio的apk中包含.so库[重复]

如何在 Android NDK 项目中包含二进制文件?

如何防止在包含的文件中包含两次相同的文件?

在 Flash 中包含所有类文件

如何在 Android 菜单 xml 的多个菜单中包含一个通用菜单项?