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里的内容

  • 相关阅读:
    JN_0041:在新版的edge浏览器中 将 url 地址 设置为应用,并在桌面上显示快捷方式
    H50074:base标签 指定资源地址
    MayaLearn0004: 层 大纲视图 特殊复制
    MayaLearn0003: 工具架 快捷菜单 枢轴 对齐
    MayaLearn0000: 快捷键命令
    MayaLearn0002: 软件基本操作工具 基本物体的创建 工作区菜单
    MayaLearn0001: 初识maya
    Ajax0006: ajax 读取 本地 js 配置文件
    JN_0040:如何下载视频流视频文件
    H50073:div 循环添加点击事件,swiper循环添加点击事件
  • 原文地址:https://www.cnblogs.com/leoparadox/p/5581723.html
Copyright © 2011-2022 走看看