上次的项目没有使用资源文件,打包出的apk安装后是系统默认图标,程序标题也是包名加类名。

添加资源需要对编译的命令做一点调整。

首先在项目根目录新建res和assets目录,在res内新建drawable和values目录。

在assets内新建文本文件info.txt,内容随意。

在values内新建xml文件strings.xml,内容如下:

 <?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">资源测试</string>
</resources>

然后将需要的程序图标拷入drawable目录,文件名为icon.png

修改AndroidManifest.xml添加图标和程序标题,内容如下:

 <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="test.android">
<application android:icon="@drawable/icon"
android:label="@string/app_name">
<activity android:name=".Mini">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>

接着对Mini.java做一些改动,加入读取assets文件的方法,如下:

 package test.android;

 import java.io.BufferedReader;
import java.io.InputStreamReader; import android.app.Activity;
import android.os.Bundle;
import android.app.AlertDialog; public class Mini extends Activity { public String stringFromAssets(String fileName) {
StringBuilder res = new StringBuilder(); try {
BufferedReader bufReader = new BufferedReader(new InputStreamReader(getResources().getAssets().open(fileName)));
String line = null; while (null != (line = bufReader.readLine())) {
res.append(line);
}
} catch (Exception e) {
e.printStackTrace();
}
return res.toString();
} public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
new AlertDialog.Builder(this).setMessage(stringFromAssets("info.txt")).show();
}
}

这里下载演示项目

编译

首先要编译资源,在项目根目录创建gen目录,保存生成的R.java资源编号,在控制台输入以下命令:

D:\Android\sdk\build-tools\23.0.3\aapt.exe package -f -m -J gen -S res -I \Android\sdk\platforms\android-\android.jar -M AndroidManifest.xml

编译java源文件时,加入R.java源文件:

javac -encoding utf- -source 1.6 -target 1.6 -bootclasspath \Android\sdk\platforms\android-\android.jar -d bin\classes src\test\android\Mini.java gen\test\android\R.java

将编译好的文件打包成dex格式

D:\Android\sdk\build-tools\23.0.\dx.bat --dex --output=bin\classes.dex bin\classes

将资源文件打包

D:\Android\sdk\build-tools\23.0.3\aapt.exe package -f -M AndroidManifest.xml -S res -A assets -I \Android\sdk\platforms\android-\android.jar -F bin\mini.ap_

用apkbuilder将所有文件打包成apk

D:\Android\sdk\tools\apkbuilder.bat \workspace\test\android\minimum\mini_unsigned.apk -v -u -z D:\workspace\test\android\minimum\bin\mini.ap_ -f D:\workspace\test\android\minimum\bin\classes.dex -rf D:\workspace\test\android\minimum\src

对apk文件签名

jarsigner -verbose -keystore my.keystore -keypass  -storepass  -signedjar mini.apk mini_unsigned.apk my.keystore

测试

将生成的apk安装到手机,运行,弹出的对话框里会显示assets目录下info.txt里的内容

最简单的Android项目(含有资源文件)的更多相关文章

  1. 对Android项目中的文件夹进行解释

    对Android项目中的文件夹进行解释: · src:里面存放的是Activity程序,或者是以后的其他组件,在此文件夹之中建立类的时候一定要注意,包名称不能是一级. · gen:此文件夹中的内容是自 ...

  2. 以Jar形式为Web项目提供资源文件

    以Jar形式为Web项目提供资源文件 http://www.webjars.org/ Web前端使用了越来越多的JS或CSS如jQuery, Backbone.js 和Twitter Bootstra ...

  3. 在eclipse完成对Java_web项目里面资源文件的读取

    Java_web项目的资源文件一般有两种: 一种是存放数据之间有联系的文件,使用xml文件 另一种是存放数据之间没有联系的文件,使用properties文件 这里我们对properties文件读写做示 ...

  4. android删除无用资源文件的python脚本

    随着android项目的进行,如果没有及时删除无用的资源时安装包会越来越大,是时候整理一下废弃资源缩小压缩包了,少年! 其实判断一个资源(drawable,layout)是否没有被使用很简单,文件名( ...

  5. android XMl 解析神奇xstream 一: 解析android项目中 asset 文件夹 下的 aa.xml 文件

    简介 XStream 是一个开源项目,一套简单实用的类库,用于序列化对象与 XML 对象之间的相互转换. 将 XML 文件内容解析为一个对象或将一个对象序列化为 XML 文件. 1.下载工具 xstr ...

  6. 最简单的Android项目

    这是我在windows环境下,试验过的最简单Android项目,只用记事本和命令行即可完成. 环境准备 开发环境需要Java SDK(官网下载),Android SDK(官网下载). 首先安装Java ...

  7. Android RadioGroup 及资源文件 & selector

    RadioGroup :单选组         RadioButton :单选按钮 RadioButton和CheckBox的区别: 1.单个RadioButton在选中后,通过点击无法变为未选中 单 ...

  8. eclipse下建立 android 项目,相关文件夹介绍

    今天开始进入ANDROID开发,之前一直做些JAVA的WEBSERVICE之类的文件,第一次从头开始整理ANDROID项目,我会把最近遇到的问题做一一梳理. 现在来说一下建立ANDROID项目后产生的 ...

  9. Android学习--Assets资源文件读取及AssetManager介绍

    APK安装过程        复制APK安装包到data/app目录下,解压并扫描安装包,把dex文件(Dalvik字节码)保存到dalvik-cache目录,并data/data目录下创建对应的应用 ...

随机推荐

  1. jquery.validate.js使用之自定义表单验证规则

    jquery.validate.js使用之自定义表单验证规则,下面列出了一些常用的验证法规则 jquery.validate.js演示查看 jquery validate强大的jquery表单验证插件 ...

  2. 阶段3 2.Spring_03.Spring的 IOC 和 DI_7 spring中bean的细节之作用范围

    bean的作用范围调整. 我们的bean通常情况下都是一个单例的模式 Spring是否也知道这些都是单例 构造函数只走了一次.也就是spring这个对象默认情况就是单例的 scope属性 定义bean ...

  3. unity中的常遇到的问题

    1.使用unity的MovieTexture播放视频在物体上,对象只能在电脑上 2.移动端播放全屏视频 Handheld.PlayFullScreenMovie(),视频文件必须放置在Streamin ...

  4. 爬虫七之分析Ajax请求并爬取今日头条

    爬取今日头条图片 这里只讨论出现的一些问题,代码在最下面github链接里. 首先,今日头条取消了"图集"这一选项,因此对于爬虫来说效率降低了很多: 在所有代码都完成后,也许是爬取 ...

  5. 【神经网络与深度学习】caffe+VS2013+Windows无GPU快速配置教程

    首先来一波地址: happynear大神的第三方caffe:http://blog.csdn.net/happynear/article/details/45372231 Neil Z大神的第三方ca ...

  6. elementUI -->实现简单的购物车

    <template> <div class="bbb"> <el-checkbox :indeterminate="isIndetermin ...

  7. swagger生成文档初步使用

    在大部分情况下,公司都会要求提供详细的接口文档,对于开发来说,文档有时候在赶进度的情况下,也是一件头疼的事.而swagger的自动生成文档功能,就可以帮助我们减少工作量,对于文档的修改也可以在代码中随 ...

  8. C语言Ⅰ博客作业05

    这个作业属于那个课程 C语言程序设计II 这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/CST2019-3/homework/9827 我在这个课程的目 ...

  9. mysql的高可用之rounter

    参考: https://segmentfault.com/a/1190000011970688

  10. 浅谈Javascript数据属性与访问器属性

    ES5中对象的属性可以分为‘数据属性’和‘访问器属性’两种. 数据属性一般用于存储数据数值,访问器属性对应的是set/get操作,不能直接存储数据值. 数据属性特性:value.writable.en ...