上次的项目没有使用资源文件,打包出的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. Uep弹窗showModalDialog的使用

    function imageMaintain() { $.showModalDialog($$pageContextPath + "uepI/imageMaintain.do?service ...

  2. Uep查询语句总结

    今天没事干总结一下uep查询语句: 第一种方法: 注意在实体写上对应的构造方法 package com.haiyisoft.entity.wz; import java.math.BigDecimal ...

  3. leetcode 188. 买卖股票的最佳时机 IV

    参见 本题采用了第一列初始化后,从左侧向右开始递推的方式,但从上往下递推应该也成立,以后尝试一下 想写一个普适性的适用于n天交易k次持有j股的状态方程但是有问题:对于交易次数过多的情况数组会超出界限: ...

  4. IDEA常用智能提示

    psvm: 生成代码: public static void main(String[] args) { }

  5. java的引用传递

    public class T{ static class Node{ int value; Node left = null; Node right = null; public Node(int v ...

  6. JAVA初级面试题,附个人理解答案

    一,面向对象的特征:1.抽象 包括数据抽象跟行为抽象,将对象共同的特征取出形成一个类2.继承 被继承类为基类/超类,继承类为子类/派生类3.封装 多次使用道德数据或方法,封装成类,方便多次重复调用4. ...

  7. UML学习笔记_01_基本概念

    1.什么是UML Unified Modeling Language (UML)又称统一建模语言或标准建模语言,是始于1997年一个OMG标准,它是一个支持模型化和软件系统开发的图形化语言,为软件开发 ...

  8. 三十一:数据库之SQLAlchemy属性常用数据类型和Column常用参数

    SQLAlchemy属性常用数据类型 Column常用参数

  9. lnmp宝塔面板问题

    使用宝塔面板后,无法安装zabbix客户端的依赖包,总是提示mariadb冲突,其实mariadb早就卸载完了,所以要安装zabbix客户端就不好使用宝塔面板

  10. Tensorflow 安装 和 初识

    Windows中 Anaconda,Tensorflow 和 Pycharm的安装和配置   https://blog.csdn.net/zhuiqiuzhuoyue583/article/detai ...