最简单的Android项目(含有资源文件)

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

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

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

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

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

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

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

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

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <manifest  xmlns:android="http://schemas.android.com/apk/res/android" package="test.android">
 3   <application android:icon="@drawable/icon"
 4                android:label="@string/app_name">
 5     <activity android:name=".Mini">
 6       <intent-filter>
 7         <action android:name="android.intent.action.MAIN" />
 8         <category android:name="android.intent.category.LAUNCHER" />
 9       </intent-filter>
10     </activity>
11   </application>
12 </manifest>

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

 1 package test.android;
 2 
 3 import java.io.BufferedReader;
 4 import java.io.InputStreamReader;
 5 
 6 import android.app.Activity;
 7 import android.os.Bundle;
 8 import android.app.AlertDialog;
 9 
10 public class Mini extends Activity {
11 
12   public String stringFromAssets(String fileName) {
13     StringBuilder res = new StringBuilder();
14 
15     try {
16       BufferedReader bufReader = new BufferedReader(new InputStreamReader(getResources().getAssets().open(fileName)));
17       String line = null;
18 
19       while (null != (line = bufReader.readLine())) {
20         res.append(line);
21       }
22     } catch (Exception e) {
23       e.printStackTrace();
24     }
25     return res.toString();
26   }
27 
28   public void onCreate(Bundle savedInstanceState) {
29     super.onCreate(savedInstanceState);
30     new AlertDialog.Builder(this).setMessage(stringFromAssets("info.txt")).show();
31   }
32 }

这里下载演示项目

编译

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

D:Androidsdkuild-tools23.0.3aapt.exe package -f -m -J gen -S res -I Androidsdkplatformsandroid-23android.jar -M AndroidManifest.xml

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

javac -encoding utf-8 -source 1.6 -target 1.6 -bootclasspath Androidsdkplatformsandroid-23android.jar -d binclasses src	estandroidMini.java gen	estandroidR.java

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

D:Androidsdkuild-tools23.0.3dx.bat --dex --output=binclasses.dex binclasses

将资源文件打包

D:Androidsdkuild-tools23.0.3aapt.exe package -f -M AndroidManifest.xml -S res -A assets -I Androidsdkplatformsandroid-19android.jar -F binmini.ap_

用apkbuilder将所有文件打包成apk

D:Androidsdk	oolsapkbuilder.bat workspace	estandroidminimummini_unsigned.apk -v -u -z D:workspace	estandroidminimuminmini.ap_ -f D:workspace	estandroidminimuminclasses.dex -rf D:workspace	estandroidminimumsrc

对apk文件签名

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

测试

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

原文地址:https://www.cnblogs.com/leoparadox/p/5581723.html