Android学习——第一个NDK程序

时间:2022-05-12 22:10:02

  在前面的学习中,我们已经讲解了关于NDK编程的环境搭建流程,简单的使用我们也通过官网本身自带的例子进行说明了。可是相信大家一定还存在这么的一个疑惑:“如果我要自己利用NDK编写一个Android应用,具体应该怎么做?有什么要求”。OK,别担心,下面就让我们一起来利用NDK来编写一个简单的Android应用。

1 创建一个新的Project

1) 通过以下命令创建一个新的Android Project (详细的使用方法,大家可以回去重新参考博文《Android学习第二天-android常用命令》)

android create project -n myfirstndk -t  -p ./myfirstndk -k cn.uc.myjni -a MainActivity

当Project创建成功后,我们可以通过查看文件夹发现它的大体架构如下图:

  aaarticlea/png;base64,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" alt="" />

2 开始Coding

1) 进入该项目的MainActivity.java所在的目录下,新建一个定义本地方法的类 NumberSum.java ,输入以下代码:

 package cn.uc.myjni;

 public class NumberSum {

     // 声明一个本地方法
public native int add (int a, int b); // 加载名为 libnumber_sum.so的库
// 根据Unix的规则,系统为自动为number_sum
// 添加上lib前缀和.so后缀
static {
System.loadLibrary("number_sum");
}
}

2) 调用以下命令,编译NumberSum.java

javac -encoding UTF-8 NumberSum.java

编译成功后,控制台并没有特别的输出,同时,我们可以在目录下发现Number.class文件

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAoAAAABCCAIAAABIEPDiAAAG5UlEQVR4nO3bW2KDSAxEUfa/KpY2XzNDkFSqfuA49j1fBDfqkjB2Mo/jAAAAAAAAAAAAAAAAAAAAAIA/5cxM16l+nMgzce2ftqvxqsijgxXFf+tu3iJ97fvqBYYGGxe3l3PjjvoN/NBw4rNzi1E9X/ElvYWZ/7ZsuuuNnwND+ftC1x/b9U6R6Vh/5XnbHnJL46LI6I0e3THdeldTK8F0kqffbBvn/FZ1rgX9mhNvkr/ygfC0554vvdft+Pj5yLeXDNV31puXmKXWi6wWFNef/2rXv9uAXmB7zqcb33iPRNntpuub/b5t/jevs9d7pnorrxyR/oIxvwKm61frhy5xtp62K0xSK77UzjqeifnSBWf2l1PVm6iTRk3XbzyfzqHtV9ePzVbzmcufviQWx331sT8Hs68qT9uUn79qYUv+6fpmnbapoTpzc4sL0n1FHieVc3JoDm0eUxvS3Nc5b85B1zmKN2RcHI+rM/ESUXw0zBGaTa+Nx0Mj0ifFXmIITp4ykDOR+KM5oLgmLtPNtD23C1aOqzns2vco5jOaZ3q93i5mq+YQz4/21cZ2juO+5hzaOm3+ofq/Xke305Ya3dd5tbpkaN+J9fHaG7PmE8dpUyt1RNm4XiS5DieerF7SYUSdtkd/WdXvbU3MX03GzHNf185Cb3bboG2sWqZ783tOp1YVSbeuLqkWtPs6x0cxn7YXEX5ogHo7p2z1atqXGa/ty5lnlVaMrs2vh9Bm27LGvylivb4v0/ciXWy+lN6X613Q+7brV5yBzuP0uDLPlQxOHjOJX/82N3/99UeR2V92c9s61onV5vIkRdO99VxiMzqQ2Fd0m55cydCGMRcM7bsyn7YXUUS0EPPPtSMq675G16/M05nDSh6hzTB9v/xrdZ2JstOLnfNm/ZXjFaP3cWW9M89dvev1TpKV+s7684Ev4HbrNv9EnvsGZ7idejqxByeQ6LkdkKgzlGHluIq9sX66XZvHGY6TP44x7dEsq8/onNdIu+YpMscenX6n5+znf02d077vt1fNff2To/XTkOvz0Ubr7zpOA+j1509zfflJVurr9dcf21n5y/TczPzDec6MnkV0K5o24Jy8nq96EJdUW0zUcc7rOYiZODnFpuYcYr9x66ry7Uy6TIep8kz01QZLXzqLeYq+rhWqPHP5R+s7IWOd9HIzj4jRZnOOj+L9MLqX6FeXWpmPltYx59DWMfOLBVXgub50v0PDHLqkHe+t/Wr97aBtQYRs5+Pk+QQf1czbY9rfqf0EfG473nLrmCceIX5DwUbM+TtN/AXwgq0xgXkCAAAAAAAAAAAAAAAAAL4Q/+EcAAC/gC9gAAAAAMCnS//fbXEyHlfrAQBAo/rurL50nfUAAKAh/qJ1voDT9QAAoOF80Y4eAwCA//9IFa/q42P83w0DAPDthr44r4vFVc56AADwA3+5AgDwO9J/pAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADg3Z2Z6TrVjxN5Jq7903Y1XhV5dLCi+G/dzVukr31fvcDQYONi7gu+WvzubNc7RaYfqr/yQG4P+egXcHxpV/7/yqZb72pqJZhO8vSbbeOc36rOteDKF/BoBeCjtB/Zzm+s3/kFvDfn041vvEei7HbT9f0v4PfM/+Z19nrPVMDjrm/99LvW+Y1VfNidF2nl9tq2Tho1Xb/xfDqHtl9dPzZbzWcuf/qSWBz31cf+HMy+qjxtU37+qoUt+afrm3XapobqzM0tLkj3FXmqVMDn08+8vir+eP78bGqf3uPnh5pzrf8BoResHFdz2LXvUcxnNM/0er1dzFbNIZ4f7auN7RzHfc05tHXa/EP1f72ObqctNbrv0KvAB7o9M9MXpg+weCDPf6XL4qNYPZz6+b+V0kXSrdsPhaovHUwfH8V82l5E+KEB6u2cstWraV9mvLYvZ55VWjG6Nr8eQpttyxr/poj1+r5M34t0sf8S8LHaR0I8FdUz7DyQ7eeL+QCvZGjDmAuG9l2ZT9uLKCJaiPnn2hGVdV+j61fm6cxhJY/QZpi+X/61us5E2enFznngw8XPqdtL+sFIn2HngRz6DDLrDGVYOa5ib6yfbtfmcYbj5I9jTHs0y+ozOuc10q55isyxR6ff6Tn7+V9T57Tv++1Vc1//JPD5zsxEkaP4oDyKp7fa7nYyHotLqi0m6jjn9RzETJycYlNzDrHfuHVV+XYmXabDVHkm+mqDpS+dxTxFX9cKVZ65/KP1nZCxTnq5mUfEaLM5x0fxfnDaBPC+eIBfiWl/p5VfFAB8Jv/XfKxgzt9J3HfeEgAAAPh7/gGFRJ8WgLif6QAAAABJRU5ErkJggg==" alt="" width="563" height="58" />  aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJMAAAA1CAIAAADKwk6xAAAEMklEQVR4nO2aTY6bMBiGfS0O5Ev0AFkiLpAbkAVCSIgJmm5GquYAFepmMhql6jK//BraBQFsbHAIScHK94oFcczHhx/bGHgR6dW369QfRC3ZGCGEsC0q5YonFJo6AdCNEpD7ixBsM9kGk7tbxwCNEJBTVUBOVY0i971XcRzfP19QpbHkSJYRkuU5yXNSFHlR5IRkRZG/v7+/vLzsD/v7pwwihIwk9/r6mmUpD68o8re3tzAM1+v1bre7f9agkeR830/TRAjP8zzXdV3X9Tzv/lkLFOjanJ6EBbLxXRMcRW69XqdJnKZJlqYkS1vwfm+3m48PEblA1xBCmh5QZTZuFQzUSHKXtyCPfBEyJ3Ke5yVxJIRX83Ndl4sR6BrCmEU1JTkbN8ACXXsQuzmRc103jsIkjpIkThMKHrmCnB3oGgVrQnKBro069ZWaEznHcaIwbMHLWHiO43AxqlYOdK3u7DU5GkGzb2Ok6bau1RNaNb1VbV5WFU56TaGgsqYHzJhr5zgwDVqt81LkgksEOk++TFRLDIKXhJxt2+H5HIVnFl5SwcvynNg2f9KmJRp2cnJV89Cv61uR6gMbFvRYrmuzlYnoZf+NaTARuTt5VRtXf9R58hFkk8gocpZlhadTDS+OoyRm4BGSWZbFxWi3CsL2VWOuuVx+v3Wh1c+m39PdX9wqlz7OwxiQRiXB5M/Mltx4KhNt3fk7BjMhZCS51Wp1Ph7Pp1N4Pl3gRSy8LFutVlwMtuFKdvhh5ATX3tOfq1HwOHKBrtVA2onwq27ROpwQMpKcaZqnw4GBF9bw4vJRzzRNLoY4XwoBdV1DyHEDmbDrRmJj0ezGLCergLel0RxFn9fW6fscdVwTOdD1VjfhS7pB8JKQWy6Xx8OBgXc+Ryy85XLJxRBP6uz1IISQhvGwMYdFCxTBjb6j63QsGQakQa+Xm6D1sfQtuRVZ8ETZ/4w5ipxhGMf9/njYV/COLLwoTWLDMHpOALpZo8gtFovDblfDO4ngLRaL+2cNGknuCR1E8xF8WVVVQE5V3UIOtplsw8iBlBCQU1UScqVT6HgMhTvgIJpQcnIky3zfD4JfeU7KHUIy3/fBQTStJORKB9Hm82u7/ZPnpNwpinzz+QUOomklIQcOok6xH/z/vyTkwEHUm86MyXme9+Pnpn8DB9EkkpADB9FsJSHnOI50zD2pg4gzbFBZMV22+dFvGBooCTlwEHU6iOjEeL9QkxSVEl9thCTkLMuSjrkndRAJrDat7+OCRO446iTkwEEkJ9fhFyoPaO6wfbaiWyQhZ5qmdMw9qYOoPoPQL1T+0DCul0Zd1W6VhBw4iOTkOvxCHKCuajdKQs4wDOmYe1IH0dSvdCTkwEHUpalfocjIgYNIIP4BYwrBl1VVBeRUFZBTVUBOVQE5VQXkVBWQU1VATlUBOVUF5FTVP8ziPHK8CK4OAAAAAElFTkSuQmCC" alt="" />

这里需要注意的是,我的命令中之所以指定源文件使用的编码是因为我使用的是UTF-8编码,在windows中直接通过javac NumberSum.java 进行编译的话,会出现以下错误:

aaarticlea/png;base64,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" alt="" />

3) 返回项目源代码文件夹下,比如我的就是返回到src目录下,通过javah命令,生成头文件:

javah cn.uc.myjni.NumberSum

执行成功后,控制台没有输出什么特别的内容,同时,我们可以发现在src目录下多了一个头文件:

aaarticlea/png;base64,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" alt="" />  aaarticlea/png;base64,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" alt="" width="269" height="83" />

  javah生成的头文件知识讲解:

  ① 从头文件的名字我们可以看出,它是由编译的调用本地方法的类名及其所在的包名通过下划线"_"分割组成。如我们的程序中是编译cn.uc.myjni.NumberSum生成的,所以就算cn_uc_myjni_NumberSum

  ② 头文件中的内容可能很多,但是我们只关注这个方法的声明:

JNIEXPORT jint JNICALL Java_cn_uc_myjni_NumberSum_add  (JNIEnv *, jobject, jint, jint);

  在这个声明中,我们可以清晰的看到方法名的最后面add就是在NumberSum类中声明的本地方法add,而前面的是 cn_uc_myjni_NumberSum就算完整的包名和类名,由此我们可以知道,一个完整的JNI函数名有3部分组成:Java、定义native方法的类的全名(包名+类名)、实际的函数名。这三部分用"_"进行连接。

4) 在Project的根目录下,新建一个文件夹jni (必须叫做jni),将我们之前生成的头文件移动到jni文件夹下,如图:

  aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMUAAABgCAIAAAAiiyH6AAAE8klEQVR4nO2dPZqzLBRAXRTLYTM2FllByhT2ttmAT/rUadK4je8riAgKRMl18mLOeSwmDvjHCd7RO1ANAHJU3z4AOBT4BJLgE0iCTyAJPoEk+ASS4BNIgk8giedTE+eTfbS6qqpK1f0wtLrS7fviqu7Xb9sU3lQL9sLz6Xq9BmW6Xq8f7GJrS+NTwXg+PZ/P8/k8k+l8Pj+fz0XFVldKa2U6HtMDVbodhr5WYxfU6kopVb3Q7TBrfq2V+dTXaizy2pLTn6m61s4au3dTQy98anX1vg+EnZjHT7fbbebT7XYLVWy1aeC+Vr5IVqi+VpMTva01tfq4dnYTnJUf7XA8mUpMmzHrxn3ClwjE45fLxcp0uVwiFZc3mvGHV5vapo35ZFdaJWdl1tT1VipFz/RlAj7d73fr0/1+j1SM+2RMam1P8daJYfCcyvapUore6cuEnxd0Xdc0Tdd18YoJn4a+Vlpr53b23qfhTX82+L7G7neE5V8m7NPj8TidTo/HI14x5ZMXHa3qY6aI3X6Ox15TAB+Kx2d3T/hTdnme6XQg8FuI+2S6Dmz6UXjfApLgE0iCTyAJPoEk+ASS4BNIgk8gCT6BJJt9Mul1oYwogCyfTJJdJC/KJfhydk3KL5RKpk82Oyqe0DKQg/uDfOSToeu6SCaCl63rZA84GQGBXF4oGAGfmqY5nU6hssFsXS8DbpnLC0Wzf/8UzXyK5c1BwfxZ/IRPP8Hef98FU3Tx6bDs+vxp+h+9UPovPh0Qno+DJPgEkuATSBL26b+qYmEJLpk+fSoqHBF8AknwCSTBJ5AEn0ASfAJJ8AkkkfcpmP9kWJRNp/aS+Fse8j7tMwYwlIG8T1vHAI6n9pJTUB67xE9bxgBOpPbiU3nsFY/njgEcWwllsJdPuWMAx1ZCGez4vCBrDODYSiiDHX3KGgM4thLK4KvPM/mvusPxTZ8qbDocvG8BSfAJJMEnkASfQBJ8AknwCSTBJ5AEn0ASfAJJ8GkreTnKToLX62Peq8msiuP8ph+PQvp+7/j0N5jZ1T8fzmp7Rcm5UA/ikzt/8JpBfxMTVnsjCc+qmJHNVN2/yunWtMar+HxC6005yq2uglO6RxMrQgcz36lzHrNTG7eg6t45g+T1SezUr5i8+AX45GchrBn0N+xTMpthHHnRTlY9NoNtjnF69bwc5UlG3Q4rfAofTOz0x826U8BP2zUz7Prybdqpd5XSF//f92nWQmsGQczIpoqPBvtqI7epMnK2nALLTu79iLTv/bP4vroHYBXbutMNFx+fYsXsD32ttt2q0ofU10rVtbRPiYa32A7np32axZNrfPKDnkmLhFCpq9nXSmu9iJAyffJj8+Chptt4eT7LU0v7lLHT5d28VJ8GP9hc45NzB9B6fTwe/XZ60cjnPvkbDBzqmz5jMSLyGCJN5+bsbvqVc+Kbd3oon76M9/WPxKFgOIBPXjSaCJGyqphvtxf2rrAp45AOwgF8gn8IfAJJ8AkkwSeQJN8nFpbgkuMTQB74BJLgE0iy2act8ynCz5Hj05b5XhNviOCAZPq0fT7q2Bo4FB/5ZOi6LjKqWOSd9iKfdXxHzovY4hHwqWma0+kUKhvO7wkl0WLSQfhG/zTPsLEpzVA8fxM/pX0aBpw6Cn/2910in9Vg/yMACmbX508r81kTebpQGDwfB0nwCSTBJ5Dkf44Kna7maw/PAAAAAElFTkSuQmCC" alt="" />

5) 新建一个c文件,名字为 number_sum.c,输入以下代码:

 #include <jni.h>  

 // 此处的方法签名与头文件中声明的方法签名是相同的
// 建议直接从头文件中复制过来
JNIEXPORT jint JNICALL Java_cn_uc_myjni_NumberSum_add(JNIEnv *env,jobject obj,jint a,jint b)
{
return (a+b);
}

  下面讲解下上面的一些相关内容:

  ① JNIEXPORT jint JNICALL JNIEnv 等都是在jni.h中定义的;

  ② 其中上面参数中的env表示JNI的调用环境,obj表示定义native方法的Java类的对象本身。

  

 6) 新建一个Android.mk 文件,建议直接从官方文档给的例子 hello-jni 中复制出来进行修改LOCAL_MODUE 和 LOCAL_SRC_FILES,代码如下:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE    := number_sum
LOCAL_SRC_FILES := number_sum.c include $(BUILD_SHARED_LIBRARY)

下面我们简单讲解一下上面几个参数的含义吧:

  ① LOCAL_PATH:Android.mk 的第一行必须是LOCAL。用于指定参与编译的C/C++源文件的位置。在上面例子中,宏函数mydir 是由系统提供的,用来返回当前目录的路径。也就是包含Android.mk文件的目录的路径。

  ② include ${CLEAR_VARS}:CLEAR_VARS变量是在系统中定义的,用来指定一个特殊的GNU Make文件。该文件用来清空很多以LOCAL_开头的变量,例如LOCAL_MODULE、LOCAL_SRC_FILES、LOCAL_STATIC_LIBRARIES 等。但这些变量不包括LOCAL_PATH。之所以要清空这些变量,是因为这些都是全局变啦ing。同时这些变量又要在不同的GNU Make文件中使用,为了多个GNU Make文件不相互影响,就需要在执行每一个GNU make文件(Android.mk文件)之前先清空这些变量。

  ③ LOCAL_MODULE := number_sum :在每一个模块中必须定义 LOCAL_MODULE变量,用来指定生成的模块名。该变量的值必须是唯一的,而且不能包含任何空白分隔符。实际上,LOCAL_MODULE 变量的值就是生产共享库的文件名(不包括lib和.so),在编译时,系统会自动在文件名的前后添加上lib 和.so 。如果该模块名前缀加了lib,在生产共享库的时候不会进行添加。

  ④ LOCAL_SRC_FILES := number_sum.c:用来指定一个C/C++源文件列表,这里不需要指定头文件,系统会自动计算当前C/C++源文件 include的头文件。系统就直接将LOCAL_SRC_FILES变量指定的源文件传给编译器。C++源文件的默认扩展名是.cpp,但可以通过LOCAL_DEFAULT_CPP_EXTENSION 变量改变 C++文件默认拓展名,例如将该变量的值设成".cxx",注意不要忘记了" . "

  ⑤ include ${BUILD_SHARED_LIBRARY} : BUILD_SHARED_LIBRARY是在系统中定义的,用来指定一个GNU Make脚本文件。该脚本文件会根据以LOCAL_开头的变量来生成共享库文件。如果想生成静态库文件,可以使用BUILD_STATIC_LIBRARY变量。

7) 为了能够把我们调用共享代码库执行的程序结果显示出来,我们对生成的代码界面进行一定的修改:

I. 打开 res/layout/main.xml 文件,给TextView添加上一个Id,方便我们在后台通过id获取组件进行显示内容的修改:

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<!-- 给TextView 添加了ID -->
<TextView
android:id="@+id/info_text"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Hello World, MainActivity"
/>
</LinearLayout>

II. 给我们的主界面MainActivity.java的onCreate() 方法添加上将结果显示到界面上的逻辑代码:

 package cn.uc.myjni;

 import android.app.Activity;
import android.widget.TextView;
import android.os.Bundle; public class MainActivity extends Activity
{
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main); // 通过Id获取TextView组件
TextView textView=(TextView) findViewById(R.id.info_text);
NumberSum sum = new NumberSum();
// 调用本地方法
int result=sum.add(10, 20);
textView.append("\n 10+20="+result);
}
}

3 编译共享代码库

1) 打开cmd,将路径转移到项目的根目录myfirstndk下,执行命令ndk-build (详情大家可以参考博文《Android学习——windows下搭建NDK_r9环境》的 第1节),执行后控制台输出如下图,同时我们可以在\obj\local\armeabi路径下查看到libnumber_sum.so共享库:

aaarticlea/png;base64,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" alt="" />  aaarticlea/png;base64,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" alt="" />

4 打包验证

1) 同样在cmd中,直接执行命令 ant debug 进行打包:

  aaarticlea/png;base64,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" alt="" />

  打包成功后,我们可以在bin文件夹下看到相应的myfirstndk-debug.apk

  aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJoAAAAbCAIAAAALcQE9AAAEQ0lEQVRoge2a/0uTQRzHn38jh4IGhQmFhD889AfkoF+DIJAe8ygSKyKQBpqswlF5CwuLSRHFMIXp2qNuzC/7QaOc8oBS8ahQ08ISKkmczm+sH2675+557tmWPttUnjfHuOf2uc/n7l539zx7dtyWvmyZKYUHpkTAcRwHROIiebU7yZA3xtH+FZfvBpgyUibOAyUT54GSgnN9Y9M//q3F87HhlWSmfZoUnN3vIn3h+d/LsW1T+1YKzjsdk2uxTXwpeC2qhRyN/Y1trKkKtWam8igFZ8MraXt7m/wOoZIWAk+lmhvDx2qDxaC38HLvkdYP1Z8X322ZLPeeUuFcii4KXsv10GFbuLRRKrOFS6+HDoPeQsFrQSka+5vzBptKJV2cS9HF+oFTtcFiW7jUMV3ujFQ4pstt4dLaYDHG2RSqXF1fMaAVMuQ5Hso7+hZLBCmt8viSIXehdXE+en9B8FrqBksapTJnpML165QzUtEoldUNlmCcgtfimqgzoBUmToPExjn1M4Ro3Ro6GY/H4/E4Xp03h4+jkqs9RwWv5eLbormlT7loaVqZOPVwPhu/gnDe9J9A8PC982rgGCqp6z6CbLo+3stFS9PKxKmH80bgpOC1VHUcquo4VN1VcKmn6PLboks9RdVdBagQpwuegqZQJe1TBBwPRcjjl+uJ9+xotOmtEzFQ+isCjoeQtE89GknXVAWqPFmGvCjlCY+kcyoQtuQhZE0UOdFB4g8EnRCkX1Qra2zZONuenx5wggyT68UZ2qcI8CiS/57gThHLSAQcEMn+ioCyxxOAOQAi4OjhT7gl1ymuTA8krsrGSXqWIc9pcMoQJEsUW50Q2C/RxCyJjXPACWb8rTP+1tnA46+DroWR17/Hu1em/GufhlamAn8men6MuiND7bOBJzP+1gEnoH2So8nMkxnVmKpIqHASK0bW7K6kV1qsSZG8ZOLU80xLsz51QqAMAFlclUmxcQZhzdSbFpTswIozZB5/BmEN7TMtzgQopfeZ4tSPs8WaLZQMxUmuWFY3aHfIms/o+Xx3YuPsfyBI7mbJ3WwH1vl+aAdWbR5dSu7m/gcC7TM9zi0Z8jwAPH1fU9unw6m7Jao2YWInpKzxUBNcUm+22JjuCrXZakNQUye7K5SN0+eoGnt5e+zlbYTNDqw4P9f3EOeRjc9RRfvMAKfqPrJDnPQTD1TdMVnPI0DzmELY8gDQK1XjWWFPfK3U0gtBdoA6i2G42Dg9d8+PtNePtNfbgTXSe98OrDivLffcPb+DwBTbPX4sJM1PIKz8d4ONs7Pp3HDbteG2a198DtWntryz6dx/h6U7nuFrnxxKhjzrkTl9rT2Jc8zncjeczTCN+Vz/FTJrR78MFbFdZzzT9ipOU/tUCs7mzsnl6Hoem2Jq91Jw+t7PBSa+r8U2c38kwpRRUnCuxjY8o5E7HZN5P79kph0n82DmgdI/zVuQUfKUsTMAAAAASUVORK5CYII=" alt="" />

2) 通过 emulator 命令打开你的模拟器(命令详情可以参考博文《Android学习第三天-打包常用命令》 第3节)

  aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAYMAAAAzCAIAAAD6u/OEAAAEx0lEQVR4nO2dUXLbOgxFtdHuoCvo6rS09/EmrSoAFyAJmbF7zpcigcC9IAN7Es/4+PHz1wEAsBcmEQDsh0kEAPthEgHAfphEALAfJhEA7IdJBAD7YRIBwH5+/Px1ekykui1czDO39q3pMh4lebSxIvmu3bxJ2qhw8TerneiXfVRnZ/z/74msoDRjVCb6cYjvs2eadpEtxkWS0Y0ereiW7jK1IixV8oIjN1TiOTFRT673K1Kb491JZNffnlYO3MrWvuBYtNCu82njjXsk0rYznX/I7/dx8aiSrkkkcs7E20nkDp107tg71pgbYLvgrk3zuFLd+Mb7bh9Svzq/NRv1Z06/+0gE27r6ut6Hoq9IT2qqrj/qxoSeevLR/Gl8VDeS4WYT+is55+OvkyiSVUx3dXgYw+kSNyxaG+XxTdbyjF5HfeiqewT9GdUzHa/LWW1RH+z9UV+p7Mq1rWulRjGR8Uq8drHu12qIqkTBZ7A7FSoVS/Hpe6JK3tt1fYeusmxYvUdRifNvKknc0mmvI19amL4+gv6kXoT4oQbqcpW00VPXV1Fe6qvSz0itXWuXRP1JjYg+uDqLfo+4n9pjvXTK6Confu7vRFHSdFeKtnVb7c0VDamYYsBQ3ZX+pF5EEmHB6p+zIzJrX6PxK/0c7ZsbZtulGyLyV0qPxkeI4KE8Kwud+PR/Z+cXlbzproxudiXnaHzXdSS7Mb9bLtVTaU5Fv22j67GYVt/ROq+SuvqZWkhz3iSJ5NNiJnylRMFa//nFQ/FtnycSu3KVld60Huy1WBKVmMhTua/7IHpS0SmKFvtg/drSUebbHTdMi4n0TPhKhbmPzqCf6XKtJ5VxBttts0Xxrl+tJ7LgosXo0qmeufgP+Yz10DbAInQb+vmASTTxmgAT0Gd4kA+YRADw9jCJAGA/TCIA2A+TCAD2wyQCgP0wiQBgP0wiANgPkwgA9sMkAoD9MIkAYD9MIgDYD5MIAPbDJAKA/TCJAGA/TCIA2A+TCAD2wyQCgP0wiQBgP0wiANgPkwgA9sMkAoD9dH3f2bH2bXA2zz/4BRJdxqMkjzZWJN+1mzdJ31Ah/CH9DliXynau7O67nIx2kY9OIvuoS//vtG7pLlMrwlIl73LkPhZ3El1xX0kqB+4fmUS9Op823rhHIm070/mH/L7LqftM7CRyh07lhU7s+nnBzZyuTfO4Ut34xvtuH1K/Or81G/VnTr/7SATbuvq63oeir0hPaqquX3QDXsR1ErmbKoi2+XbIxPbfYmxYtHblhHVdR33oqnsE/RnVMx2vy1ltUR/s/VFfqezKta1rpepH8CDpeyJNdDSPYNfdkxGFiRNckXEEvyQ6iVs6PZ2RLy1MXx9Bf1IvQvxQA3W5StroqeurKC/1VelnpFYbgQeZ+zuRDbhdD50MkTM9gusaUjHFgKG6K/1JvYgkwoLVP2dHZNa+RuNX+lnpG7yU9H9n5xciiXuIh05GlLCSczS+6zqS3ZjfLZfqqTSnot+20fVYTKvvaJ1XSV39HLIAj9P1eaLbQakf3+iYioMllkQlJvJU7us+iJ5UdIqixT5Yv7Z0lPl2xw3TYiI9E75SYe6jM+hnuhw28BmfseYkvRK6Df18wCQSL6TQCH2G5/gPvhdk2ZD49mEAAAAASUVORK5CYII=" alt="" />

3) 通过 adb 命令将apk安装到模拟器中(命令详情可以参考博文《Android学习第一天-adb常用命令》 第3节),如图表示安装成功。

  aaarticlea/png;base64,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" alt="" />

4) 打开模拟器中的程序MainActivity 显示如图则表示安装成功。

  aaarticlea/png;base64,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" alt="" />  aaarticlea/png;base64,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" alt="" />