怎么在Android中使用gradle打包Assets目录-创新互联

这篇文章主要介绍了怎么在Android中使用gradle打包Assets目录,此处通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考价值,需要的朋友可以参考下:

创新互联公司自2013年创立以来,先为张湾等服务建站,张湾等地企业,进行企业商务咨询服务。为张湾企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。

1 在你的src或者main目录上右键new;


2 在Folder菜单上找到Assets Folder,确定即可。

怎么在Android中使用gradle打包Assets目录

有个问题提一下,如果此时你的视图是Project,新创建的assets目录因为是空的,部分情况下会看不见(很诡异),这时你只需要将视图切换为Android,就能正常看见了。

assets目录无法打包进gradle

如果你的某些资源放置在assets目录下,本地编译能够正常访问,构建打包却死活读取不到的时候,建议你把打包生成的apk拿出来,将后缀改成zip,然后解压缩如下图所示,确定一下你的assets目录下的资源是否真的被打包进去了。提醒一下,不要试图修改里面的内容,都是验过签的。

怎么在Android中使用gradle打包Assets目录

如果没有,原因可能是你在创建assets目录时,并没有按照上面的流程,而且gradle的构建脚本里面也没有指明assets资源的路径,因此直接导致gradle懵逼。

解决办法有两个:

1 按照上面的流程重新创建assets目录;

2 在gradle里面android括号内,指定assets的路径即可,如

sourceSets {
 main {
  assets.srcDirs = ['src/main/assets']
 }
}

当然,需要根据你的具体情况来看,如果你为不同版本准备了不同的assets资源,就要添加在对应的flavors中。

assets目录下的同名文件

因为项目的需要,笔者要在assets目录下为不同的版本(360和demo)提供不同的资源。但是资源的名称也都是相同的。

笔者最初采取了在assets下创建文件夹对内容加以分类,同时配置不同Flavors的做法,如下图所示。

本以为万事无虞,结果却让人很无奈。

怎么在Android中使用gradle打包Assets目录

测试发现,这种方式并不奏效——assets目录仍然在main目录下,默认的仍然是一个文件夹(360或者demo)下的内容作为最终打包的资源,并没有根据版本区分开来。

后来采取的做法是在每一种版本(即每一种flavors)都创建一个assets目录,同时更改sourceSets,为每个Flavors提供不同配置,如下图所示,通过这样来区分不同的资源依赖,最后也证实可行。

怎么在Android中使用gradle打包Assets目录

总结一下

1 assets目录一定要按照正确的流程创建。如果不是正确的流程,一定要在gradle中指明它的路径;

2 assets目录的位置不受限制,可以随便指定,关键是gradles里面的路径;

3 src下默认的main目录是所有flavors共有的资源。每个flavors与main的资源只能够合并,不能替换;

4 为不同的falvors提供不同的assets资源时,assets资源一定要创建在每个flavors下;

5 配置资源的地方是sourceSets,在sourceSets中区分不同的flavors;而不是在productFlavors下区分不同的sourceSets。

补充:关于AndroidStudio assets目录的一些坑

1.新建assets目录

怎么在Android中使用gradle打包Assets目录

2.在Activity中加载assets目录中的图片资源到bitmap

InputStream inputStream= null;
try {
 inputStream = getAssets().open("timg.jpg");
} catch (IOException e) {
 e.printStackTrace();
}
bitmap= BitmapFactory.decodeStream(inputStream);

到此这篇关于怎么在Android中使用gradle打包Assets目录的文章就介绍到这了,更多相关{**}的内容请搜索创新互联网站建设公司,以前的文章或继续浏览下面的相关文章希望大家以后多多支持创新互联网站建设公司,!


网页标题:怎么在Android中使用gradle打包Assets目录-创新互联
本文路径:http://pwwzsj.com/article/cdgood.html