Android开发基础总结--NDK编程
NDK定义:NDK编程指的是使用Android Native Development Kit(NDK)进行开发,它允许开发者使用C和C++等原生编程语言来编写Android应用的部分代码,通常是处理性能要求高或者需要直接访问设备硬件的功能
JNI函数命名规则Java + 包名 + 类名 + 函数名(以_间隔),Eg:Java_a_b_c_ndk_MainActivity_getLength
Java_a_b_c_ndk_MainActivity_getLength(JNIEnv *env, jobject thiz, jstring param){}/*每个参数的含义JNIEnv env:JNIEnv 是一个指向JNI环境的指针,它提供了一系列的JNI函数和数据结构,用于在Java虚拟机(JVM)中操作Java对象、调用Java方法、异常处理等。通过 env 参数,本地代码能够与JVM进行交互,执行JNI操作。jobject thiz:jobject 是JNI中的一个泛型类型,表示一个Java对象的引用。在本例中,thiz 参数代表了调用本地方法的Java对象的引用 ...
Android开发基础总结--Binder
Binder服务端在清单中申请权限
application外
<uses-permission android:name="android.permission.IINTERNET"></uses-permission>
application内
<service android:name=".MyService" android:exported="true" android:enabled="true"//用于指定一个组件是否启用(可用)。它通常用于表明组件是否可以响应用户交互操作,如点击或者触摸等。 android:process=":server">//android:process 是一个用于指定组件应该运行的进程名称的属性。在 Android 中,默认情况下,所有的组件(活动、服务、接收器等)都在应用的主进程中运行。这意味着它们共享同一个进程空间和资源。通过设置 android:process 属性 ...
Android开发基础总结--sdcard && Binder
读写SDCardAndroid高版本不能使用http协议,需要在清单文件中添加(application内)
android:usesCleartextTraffic="true"<!--这个属性用于指示应用是否允许使用明文网络流量,即未加密的网络请求,比如 HTTP 请求。-->
在清单文件里面申请使用网络权限、读SD卡的权限、写SD卡的权限、管理SD卡的权限
<uses-permission android:name="android.permisson.INTERNET"></uses-permission><uses-permission android:name="android.permisson.READ_EXTERNAL_STORAGE"></uses-permission><uses-permission android:name="android.permisson.WRITE_EXTERNAL_STORAGE">& ...
Android开发基础总结--四大组件
认识安卓四大组件Activity创建一个新的界面的步骤1、通过Intent启动
Intent intent = new Intent(MainActivity.this,SubActivity02.class)
2、新的界面绑定.xml
setContentView(R.layout.activity_sub02)
3、清单文件注册新的Activity
<activity android:name=".SubActivity02"> <activity>
4、新的Activity要继承Activity
public class SubActivity02 extends Activity
Activity界面切换1、老方法(通过复写onActivityResult函数来接受返回结果),部分代码
@Overrideprotected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data){ super.onActivity ...
Android基础6--NDK编程1
Android项目中创建Library模块步骤:项目名称右键->New->Moudle->Android Library
编译:
编译单独模块:选中模块->Build->Make Moudle
旧版本产出位置:模块\build\intermediates\packaged-classed\debug\
新版本产出位置:模块\build\intermediates\arr_main_jar\debug\
使用Android SDK中的dx工具生成dx位置:AndroidSDK根目录\build-tools\28.0.3\dx.bat
用法:dx.bat–dex–output=xx srcDir
set filename=test2.jarset srcDir=D:\__job\study20230717-pkgJar\pkgJarForLoad\mylibrary1\build\intermediates\aar_main_jar\debug\set dx="D:\Android SDK\build-tools\34.0.0\d8.bat ...
Android基础5
Binder功能简介用途:Binder是一种进程间通信的机制。
特点:虚拟物理设备驱动,像人血管一样,穿梭在各个组件和进程之间,多进程通信,采用C/S架构。
参与角色:
Client进程:使用服务的进程需等待Server注册后,再向ServiceManager获取服务。
Server进程:提供服务的进程。需先向ServiceManager进行注册。
ServiceManager进程:管理注册过的服务。
Binder驱动:负责进程之间Binder通信的建立,Binder在进程之间的传递,Binder引用计数管理,数据包在进程之间的传递和交互等一系列底层支持。
优势安全优势:传统的进程通信方式对于通信双方的身份并没有做出严格的验证,比如Socket通信的IP地址是客户端手动填入,很容易进行伪造。Binder机制从协议本身就支持对通信双方做身份校验,为每个APP分配UID,进程的UID是鉴别进程身份的重要标志,从而大大提高了安全性。
性能优势:
共享内存:数据拷贝0次,但复杂且容易产生安全问题
Binder:数据拷贝1次,兼顾简单已用和安全问题
传统Socket/管道 ...
Android基础4
Apache一些常用名命令:# 安装服务httpd -k install -n apache
# 启动服务net start apachehttpd -k start -n apache
# 关闭服务net stop apachehttpd -k stop -n apache
# 重启服务httpd -k restart -n apache
# 卸载服务## 卸载服务时先停止httpd -k stop -n apache## 再卸载服务httpd -k uninstall -n apache
下载zip文件知识点:(1)使用HttpURLConnection进行http下载
(2)使用AsyncTask创建异步任务
(3)申请权限
将zip文件写到sdcard知识点(1)创建保存目录
(2)写文件
(3)下载完成返回标志
解压zip文件到指定目录知识点(1)将zip包内文件解压到指定目录
(2)将zip文件删除
注意:Android高版本不能使用http协议
解决方法:清单文件里面添加(application中)
android:usesCleartextTraffic="t ...
Android基础3
Content Provider 介绍Content Provider属于Android应用程序的组件之一,作为应用程序的组件之一,作为应用程序之间唯一的共享数据的途径,Content Provider为存储和读取数据提供了统一的接口。Content Provider主要的功能就是存储并检索数据以及向其他应用程序提供访问数据的接口。Android系统为一些常见的数据类型(如音乐、视频、图像、手机通讯录联系人信息等)内置了一系列的Content Provider,这些都位于android.provider包下。持有特定的许可,可以在自己开发的应用程序中,可以在自己开发的应用程序中访问这些Content Provider,应用程序可以实现数据共享让自己的数据和其他应用程序共享
让自己的数据和其他应用程序共享有两种方式:
创建自己的Content Provider(即继承ContentProvider子类)将自己的数据添加到已有的Content Provider中去
后者需要保证现有的Content Provider和自己的数据类型相同且具有该Content Provider的写入权限
数据 ...
Android基础2
Activity的使用MainActivity.java
package a.b.c.myapplication;import android.content.Intent;import android.os.Bundle;import android.util.Log;import android.view.View;import android.widget.Button;import androidx.activity.EdgeToEdge;import androidx.activity.result.ActivityResult;import androidx.activity.result.ActivityResultCallback;import androidx.activity.result.ActivityResultLauncher;import androidx.activity.result.contract.ActivityResultContract;import androidx.activity.result.contract.ActivityResu ...
Android基础1
Android项目结构Android:列出我们经常会用到的内容,比如:Java文件,布局文件等等。
1、mainifests:其中显示的是安卓的全局描述文件。
2、java:显示java的源码文件。
3、res:显示的是资源文件,比如常见的类文件,图片资源文件等等。
Project:列出我们项目当中的全部文件
创建AVD并启动安卓模拟器模拟器就是模拟手机,平板等安卓设备。在这个模拟器上面测试设备,就可以开发出兼容性较好的设备。从而节约我们的开发成本。
AVD:安卓虚拟设备的简称。可以用于设置模拟器的硬件列表,模拟器的外观,以及支持安卓系统版本等等。模拟器本身没有操作窗口,需要借助AVD才能实现。
安卓模拟器的基本配置将模拟器的使用语言设置成为简体中文
模拟器设置成可调试
创建一个按钮<Button android:layout_width="match_parent" android:layout_height="wrap_content" android:background="#FF5722" ...