最简单的Android项目(含有资源文件)
上次的项目没有使用资源文件,打包出的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项目(含有资源文件)的更多相关文章
- 对Android项目中的文件夹进行解释
对Android项目中的文件夹进行解释: · src:里面存放的是Activity程序,或者是以后的其他组件,在此文件夹之中建立类的时候一定要注意,包名称不能是一级. · gen:此文件夹中的内容是自 ...
- 以Jar形式为Web项目提供资源文件
以Jar形式为Web项目提供资源文件 http://www.webjars.org/ Web前端使用了越来越多的JS或CSS如jQuery, Backbone.js 和Twitter Bootstra ...
- 在eclipse完成对Java_web项目里面资源文件的读取
Java_web项目的资源文件一般有两种: 一种是存放数据之间有联系的文件,使用xml文件 另一种是存放数据之间没有联系的文件,使用properties文件 这里我们对properties文件读写做示 ...
- android删除无用资源文件的python脚本
随着android项目的进行,如果没有及时删除无用的资源时安装包会越来越大,是时候整理一下废弃资源缩小压缩包了,少年! 其实判断一个资源(drawable,layout)是否没有被使用很简单,文件名( ...
- android XMl 解析神奇xstream 一: 解析android项目中 asset 文件夹 下的 aa.xml 文件
简介 XStream 是一个开源项目,一套简单实用的类库,用于序列化对象与 XML 对象之间的相互转换. 将 XML 文件内容解析为一个对象或将一个对象序列化为 XML 文件. 1.下载工具 xstr ...
- 最简单的Android项目
这是我在windows环境下,试验过的最简单Android项目,只用记事本和命令行即可完成. 环境准备 开发环境需要Java SDK(官网下载),Android SDK(官网下载). 首先安装Java ...
- Android RadioGroup 及资源文件 & selector
RadioGroup :单选组 RadioButton :单选按钮 RadioButton和CheckBox的区别: 1.单个RadioButton在选中后,通过点击无法变为未选中 单 ...
- eclipse下建立 android 项目,相关文件夹介绍
今天开始进入ANDROID开发,之前一直做些JAVA的WEBSERVICE之类的文件,第一次从头开始整理ANDROID项目,我会把最近遇到的问题做一一梳理. 现在来说一下建立ANDROID项目后产生的 ...
- Android学习--Assets资源文件读取及AssetManager介绍
APK安装过程 复制APK安装包到data/app目录下,解压并扫描安装包,把dex文件(Dalvik字节码)保存到dalvik-cache目录,并data/data目录下创建对应的应用 ...
随机推荐
- P3373 【模板】线段树 2 (未完待续)
P3373 [模板]线段树 2 强烈安利这个大佬 超赞!!! 题解 本来以为这个题拿着线段树1的板子改改就好了,但是发现事情并没有那么简单,改了两天... 我们看到这个题其实涉及啦乘法和加法两种运算, ...
- 一些 postman
听了:https://v.qq.com/x/page/f0816egftuw.html npm 是 node package manager, Nodejs下的包管理器.安装完 nodejs 后(no ...
- Emacs Python 自动补全之 jedi
jedi jedi 的安装配置并不是很友好.github 上也没有明确说明.查了很多资料, 最后才配置成功.可是效果却不是很理想.在补全的时候有明显的卡顿现象. 不知道网上这么多人对其推崇备至是因为什 ...
- document的属性操作
document对象: 1.直接操作: 对象.属性 = 值; 如下面一段代码: <a href = "...">跳转</a> <script> ...
- Sqlserver实现故障转移 — 域控(1)
一 .实现目的:实现两台sqlserver数据库服务器的实时备份及故障转移:即:其中一台数据库服务器宕机后,应用程序可自动连接到另一台数据库服务器继续运行. 二.域控:域控制器是指在“域”模式下,至 ...
- Centos 6.5 磁盘修复 破解删除root密码
起因:由于存储设备故障.导致虚拟机断开.恢复后虚拟机无法启动,发现报磁盘损坏,需要运行fsck运行 问题解决思路: 1.虚拟机无法启动,所以需要进入系统进行修复 2.root密码是自动修改的.由于虚拟 ...
- python学习之socket&黏包
7.4 socket [重要] 避免学习各层的接口,以及协议的使用, socket已经封装好了所有的接口,直接使用这些接口或者方法即可,方便快捷,提升开发效率. socket在python中就是一 ...
- aliyun搭博客从零到一
一.基础环境 lnmp 1台负载均衡SLB 2台ECS 1台 RDS 二.lnmp搭建 1.#配置nginx的yum仓库 2.#yum install -y nginx ...
- screen重新连接会话
1.# yum -y install screen 2.# screen 3.# /usr/local/kibana/bin/kibana (具体使用案例) 然后按ctrl+a+d组合键,暂时断开s ...
- Python 命令行解析模块 —— argparse
argparse是python标准库里面用来处理命令行参数的库,基本使用步骤如下: 1.import argparse 导入模块 2.parser = argparse.ArgumentPars ...