Android Studio 下载jar包
Android Studio 下载jar包
Android Studio下载kotlin-compiler-embeddable 非常慢, 时间长了还会报read time out
所以需要自行下载后, 把jar放到正确的位置.
https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.2.31/kotlin-compiler-embeddable-1.2.31.jar
https://dl.google.com/dl/android/maven2/com/android/tools/external/com-intellij/kotlin-compiler/26.2.1/kotli...
Android 权限
Android 权限
系统6.0后需要动态获取权限
判断系统版本 Build.VERSION.SDK_INT >= 23
判断是否有对应的权限
int checkCallPhonePermission = ContextCompat.checkSelfPermission(WelcomeActivity.this, Manifest.permission.READ_PHONE_STATE);
if (checkCallPhonePermission != PackageManager.PERMISSION_GRANTED)
请求权限
requestPermissions(new String[]{Manifest...
Android 使用老库, 32位库支持64位
Android 使用老库, 32位库支持64位
如果第三方库蛮老(使用旧版本的NDK编译), 那么在新系统上会报错
java.lang.UnsatisfiedLinkError: dlopen failed:
"/data/app/com.teamsun.community.report-1/lib/arm64/libIDCardengine.so"
is 32-bit instead of 64-bit
目前常用的ABI平台有arm64-v8a,armeabi-v7a,armeabi, 前面两个较新
java.lang.UnsatisfiedLinkError: dlopen failed:
"/data/app/com.teamsun.community.report...
Compute Unicode
Compute Unicode
如果是UTF-8, UTF-16, UTF-32, 那么需要使用零宽度非换行空格(ZERO WIDTH NO-BREAK SPACE)
来表示字节顺序. FEFF表示大端, FFFE表示小端
UTF-8
可变长度的编译, 英文一个字节, 常用中文3字节, 不常用中文4字节.
UTF-16
分为大头端UTF-16BE, 小头端UTF-16LE
最少2个字节, 中字4字节
Reference
Build CMake
Build CMake
CMake Doc
CMake把源分为可执行文件和已编译头文件, 可执行文件用来链接或执行, 已编译头文件用
来导入(include)
依赖检查
cmake_minimum_required(VERSION 3.10)
# set the project name and version
project(Tutorial VERSION 1.0)
添加子任务, 会在子目录中找CMakeLists.txt文件
add_subdirectory(MathFunctions)
检查函数是否存在
include(CheckSymbolExists)
set(CMAKE_REQUIRED_LIBRARIES “m”)
check...
Android JNI
Android JNI
Java Native Interface(JNI), 使Java可用调用C, C++, Assembly. 这是一个规范, 不依赖
Java VM具体实现.
下面的示例说明了当您需要使用Java本机方法时:
标准Java类库不支持应用程序所需的依赖于平台的特征。
您已经有了用另一种语言编写的库,并且希望通过JNI访问Java代码。
您希望在低级语言(如汇编)中实现一小部分时间关键代码。
通过JNI编程,可以使用本机方法来:
创建、检查和更新Java对象(包括数组和字符串)。
调用Java方法。
捕获和抛出异常。
加载类并获取类信息。
执行运行时类型检查。
JNI备选方案:
JDK 1.0 native...
Buile Make
Buile Make
Make manual
会按照顺序读取GNUmakefile, makefile and Makefile. ( Recommend Makefile. )
根据文件修改日期判断是否需要重新生成
默认会执行第一个目标(target)
Makefile包含5部分内容:
explicit rule
implicit rule
variable definition
directive
comment “#”
包含其它Makefile:
include filenames…
MAKEFILE环境变量: make会先运行环境变量的MAKEFILE文件
注: $需要转义”\(", 如果开了辅助扩展的话需要使用"\)$$”...
Android NDK
Android NDK
Native Development Kit(NDK) 使用CMake或ndk-build构建出在Android设备上运行的C\C++库
使用POSIX可以实现代码跨平台(ios 和 android, flutter不支持posix)
重用已有的库
提高计算密集型应用性能, 如游戏
ndk-build: 使用Android.mk, Application.mk两个文件构建
cmake: 使用CMakeLists.txt文件
主要组件
Native shared libraries
Native static libraries
Java Native Interface (JNI)
Application Binary...
435 post articles, 55 pages.