上次的项目没有使用资源文件,打包出的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里的内容