zoukankan      html  css  js  c++  java
  • 最简单的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里的内容

  • 相关阅读:
    C#操作REDIS例子
    A C# Framework for Interprocess Synchronization and Communication
    UTF8 GBK UTF8 GB2312 之间的区别和关系
    开源项目选型问题
    Mysql命令大全——入门经典
    RAM, SDRAM ,ROM, NAND FLASH, NOR FLASH 详解(引用)
    zabbix邮件报警通过脚本来发送邮件
    centos启动提示unexpected inconsistency RUN fsck MANUALLY
    rm 或者ls 报Argument list too long
    初遇Citymaker (六)
  • 原文地址:https://www.cnblogs.com/leoparadox/p/5581723.html
Copyright © 2011-2022 走看看