Anodroid
Android
开发环境搭建
选择在Linux下进行开发
配置JDK
-
下载
-
安装
tar -zxvf jdk-8u101-linux-x64.tar.gz cd jdk1.8.0_101/ pwd 得到 jdk 开发环境路径 /home/itcast/BC-Project/jdk1.8.0_101
-
配置JDK_HOME, JAVA_HOME
vim ~/.bashrc export JAVA_HMOE=/home/itcast/BC-Project/jdk1.8.0_101 export JDK_HOME=$JAVA_HOME source ~/.bashrc
配置AndroidStudio
安卓开发环境选择AndroidStudio
- 下载
- 安装
- unzip android-studio-ide-143.2915827-linux.zip
- cd android-studio/
cd ./bin/
./studio.sh
- 配置STDDIO_JDK
./studio.sh,运行时会报错,如下选择
如果有错误如下
sudo apt-get install lib32z1 lib32ncurses5 lib32bz2-1.0 lib32stdc++6
正常安装可以在启动后看键启动界面,建立项目即可
ADB真机调试
-
如果不连接真机,而是在创建项目后如下运行,需要启动Android模拟器启动,运行速度很慢,因此需要真机调试
-
借助adb真机调试,安装的Andoroid SDK时中有现成的ADB工具,可将该ADB设置到环境变量中
位置:/home/itcast/BC-Project/Android-SDK/platform-tools/adb 设置进环境变量:export PATH=$PATH:/home/itcast/BC-Project/Android-SDK/platform-tools/
-
由于Android手机厂商系统原因要开启USB调试功能,先确保手机能够正确的链接到usb,让系统能够检查出来,可以通过lsusb来查看安卓手机是否已经链接到Linux操作系统上
调试
-
链接成功,使用adb devices就可以发现一台已经链接到linux 并且通过adb将手机和Android Studio链接成功的列表
itcast:platform-tools$ adb devices List of devices attached 005a380d device itcast:platform-tools$
'005a380d’就是目前我正在调试的安卓手机id号,在Android Studio,点击
选择已经链接好的真机Android项目,点击OK,就可以将编辑好的AndroidAPK部署在真机上
minsdk(api 15) > devicesdk(api 10) 类似问题
修改app/src/build.gradle 将minSdkVersion改成10, 然后点击Sync Now即可
Android的快速建模开发
调试信息的输出
-
使用Log类输出
import android.util.Log
-
Log类的接口v, d, i, w, e来实现输出调试信息,其中v表示任何信息,d表示debug,i表示information,w表示warning,e表示error信息
-
打开Android Monitor视图,可以选择一些过滤条件查看输出信息
-
在Android项目代码内通过toast显示信息
Toast.makeText(getApplicationContext(), "信息内容", Toast.LENGTH_SHORT).show();
UI控件与代码关联
- 每一个Android界面叫做Activity
- ./app/src/main/res/layout/activity_main.xml这就是一个布局样式文件,可以打开design标签窗口可以进行可视化布局
- MainActivity.java是与activity_main.xml关联的文件,在.java文件中要做UI控件与代码的关联,然后就可以获得控件参数,绑定事件等
Android生命周期函数
public class MainActivity extends AppCompatActivity {
public Button btn;
public EditText editText_username;
public String logTag = "MainActivityDebug";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.e(logTag, "onCreate");
setContentView(R.layout.activity_main);
//关联变量和 UI控件
btn = (Button)findViewById(R.id.button);
editText_username = (EditText) findViewById(R.id.editText_username);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String username = editText_username.getText().toString();
Log.e(logTag, username);
}
});
}
@Override
protected void onStart() {
super.onStart();
Log.e(logTag, "onStart");
}
@Override
protected void onStop() {
super.onStop();
Log.e(logTag, "onStop");
}
@Override
protected void onRestart() {
super.onRestart();
Log.e(logTag, "onRestart");
}
@Override
protected void onPause() {
super.onPause();
Log.e(logTag, "onPause");
}
@Override
protected void onResume() {
super.onResume();
Log.e(logTag, "onResume");
}
@Override
protected void onDestroy() {
super.onDestroy();
Log.e(logTag, "onDestory");
}
}
常用控件
Android界面的开发一般较为简单,常用的控件如
- Button
- TextView
- EditText
NDK与JNI
NDK
.NDK是一系列工具的集合,快速开发C(或C++)的动态库,并能自动将so和java应用一起打包成apk;K集成了交叉编译器,并提供了相应的mk文件隔离CPU、平台、ABI等差异,开发人员只需要简单修改mk文件(指出“哪些文件需要编译”、“编译特性要求”等),就可以创建出so
- 代码的保护。由于apk的java层代码很容易被反编译,而C/C++库反汇难度较大
- 可以方便地使用现存的开源库
- 提高程序的执行效率。将要求高性能的应用逻辑使用C开发,从而提高应用程序的执行效率
- 便于移植。用C/C++写得库可以方便在其他的嵌入式平台上再次使用
NDK配置
JNI
- JNI是Java Native Interface的缩写,它提供了若干的API实现了Java和其他语言的通信(主要是C&C++)
Libcurl
在移动端Android配置好Libcurl