上次的项目没有使用资源文件,打包出的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. Typography 字体

    Typography 字体 我们对字体进行统一规范,力求在各个操作系统下都有最佳展示效果. ¶中文字体 和畅惠风 PingFang SC 和畅惠风 Hiragino Sans GB 和畅惠风 Micr ...

  2. one vs all -- 将01分类器用于多类分类问题

    大多数分类器都是01分类器,如logistic regression.当我们要将数据分为多类的时候, 可以用一种叫one-vs-all的方法将01分类器用于多类分类(mult-class classi ...

  3. 【5】标题上的小logo

    <link rel="shortcut icon" href="logo图片的路径">   shortcut --- 捷径,近路 icon --- ...

  4. 【ZT】Enhancement Framework – Introduction

    Enhancement Framework – Introduction By Naimesh Patel | March 26, 2014 | Enhancement Implementation ...

  5. Go(03) slice切片的使用

    原文链接 http://www.limerence2017.com/2019/05/08/golang05/#more golang 的引用类型和内置类型变量 golang 中变量类型分为引用类型和值 ...

  6. 获取重复字符串的range,设置attributedText

    之前项目的需求是未读人员显示绿色,已读人员显示黑色,测试今天提bug说存在未读人员显示的黑色...这就尴尬了,我完全不知道为啥,经过打断点调试程序,终于找到问题:就是他只会获取到第一个想等字符的ran ...

  7. 盒模型 box-sizing 属性

    css3增添了盒模型box-sizing属性,box-sizing属性值可以有下面三个值: content-box:默认值,让元素维持W3C的标准盒模型.元素的宽度/高度(width/height)( ...

  8. HDU-1204-糖果大战

    题目描述 生日\(Party\)结束的那天晚上,剩下了一些糖果,\(Gandon\)想把所有的都统统拿走,\(Speakless\)于是说:"可以是可以,不过我们来玩\(24\)点,你不是已 ...

  9. thread 多线程2

    ###24.04_多线程(多线程程序实现的方式1)(掌握) * 1.继承Thread * 定义类继承Thread * 重写run方法 * 把新线程要做的事写在run方法中 * 创建线程对象 * 开启新 ...

  10. Head First PHP&MySQl第四章代码

    addemail.php <!DOCTYPE html> <html lang="cn" dir="ltr"> <head> ...