Skip to content

zlgopen/awtk-android

Folders and files

NameName
Last commit message
Last commit date

Latest commit

c0f04cb · Apr 17, 2025

History

98 Commits
Nov 28, 2024
Feb 24, 2025
Sep 22, 2023
Jul 13, 2023
Jul 8, 2020
Apr 17, 2025
Nov 3, 2024

Repository files navigation

awtk-android

awtk android 移植

预编译的demoui APK

安装 android 开发环境

安装 android 开发环境比较麻烦,建议花几十块在淘宝上请人安装,绝对物有所值。

找人安装 Android 开发环境的时候,让他把 NDK 也安装上去。可以用命令行编译,也可以用 android studio 编译。android studio 可以用来调试 C 代码。

设置 android 环境变量

  • Linux/MacOS Bash 下设置环境变量示例:
export ANDROID_HOME=/Users/jim/Library/Android/sdk/
export ANDROID_NDK_HOME=/Users/jim/Library/Android/sdk/ndk/25.2.9519653
export PLATFORM_TOOLS_HOME=/Users/jim/Library/Android/sdk/platform-tools

export PATH=$PATH:$ANDROID_NDK_HOME:$PLATFORM_TOOLS_HOME
  • Windows Bash 下设置环境变量示例:
export ANDROID_HOME=/c/Users/Admin/AppData/Local/Android/Sdk
export ANDROID_NDK_HOME=/c/Users/Admin/AppData/Local/Android/Sdk/ndk/21.3.6528147
export PLATFORM_TOOLS_HOME=/c/Users/Admin/AppData/Local/Android/Sdk/platform-tools

export PATH=$PATH:$ANDROID_NDK_HOME:$PLATFORM_TOOLS_HOME
  • Windows Cmd 下设置环境变量示例:
set JAVA_HOME="C:/Program Files/Android/Android Studio/jre"
set ANDROID_HOME=C:/Users/Admin/AppData/Local/Android/Sdk
set ANDROID_NDK_HOME=C:/Users/Admin/AppData/Local/Android/Sdk/ndk/21.3.6528147
set Path=%Path%:%ANDROID_NDK_HOME%

  • Windows PowerShell 下设置环境变量示例:
$env:JAVA_HOME="C:/Program Files/Android/Android Studio/jre"
$env:ANDROID_HOME="C:/Users/Admin/AppData/Local/Android/Sdk"
$env:ANDROID_NDK_HOME="C:/Users/Admin/AppData/Local/Android/Sdk/ndk/21.3.6528147"
$env:PATH="$env:PATH;C:/Users/Admin/AppData/Local/Android/Sdk/ndk/21.3.6528147"

具体路径请根据自己的情况进行调整,路径分隔符请用'/',不要用 ''。

下载 awtk 和 awtk-android 源码

git clone https://github.com/zlgopen/awtk.git
git clone https://github.com/zlgopen/awtk-android.git
git clone https://github.com/zlgopen/awtk-mobile-plugins.git

创建并编译 demoui 的工程

  • 进入 awtk-android
cd awtk-android 
  • 创建工程
python create_project.py ../awtk/build.json
  • 编译工程
cd build/demoui && ./gradlew build

生成的 apk 在:build/xxxxxx/app/build/outputs/apk/debug/app-debug.apk

xxxxxx 是你的项目名。

创建并编译自己的工程

创建并编译自己的工程需要先写一个配置文件,请参考 Android 平台编译配置

后续过程和 demoui 完全一样。

不同平台有些差异,请酌情修改。建议使用 bash,Windows 下可以使用 git bash。

文档

相关项目

  • awtk-mobile-plugins 用于访问手机平台 (android/ios) 原生服务的插件(如分享、登录、相机、扫描二维码和蓝牙等)

其它问题

    1. 修改 sdk 路径

如果 sdk 路径不对,可以直接修改 build/xxxxxx/local.properties 文件。

sdk.dir=/Users/jim/Library/Android/sdk/
ndk.dir=/Users/jim/Library/Android/sdk/ndk-bundle/
    1. 修改 cmake 的版本号

如果 cmake 的版本与系统安装的不匹配,可以直接修改 build/xxxxxx/app/src/main/cpp/CMakeLists.txt 和 build/xxxxxx/app/build.gradle

    1. 修改 gradle 的版本号

如果 gradle 的版本与系统安装的不匹配,可以直接修改 build/xxxxxx/build.gradle

    1. 如果出现 Failed to install the following Android SDK packages as some licences have not been accepted

进入 SDK/tools/bin,执行。\sdkmanager.bat "platforms;android-28"

    1. 使用国内镜像

请在网上搜索相关资料。

    1. 设计时的分辨率

手机 APP 设计时可以采用 480x853,同时采用 layout 参数进行自适应布局。

    1. 图标大小

手机 APP 需要提供不同屏幕密度的图标,请参考 LCD 密度与图片的对应关系

    1. 设置 gradle 的版本和 socks 代理,请修改 ~/.gradle/gradle.properties

如:

distributionUrl=https\://services.gradle.org/distributions/gradle-6.3-all.zip
org.gradle.jvmargs=-DsocksProxyHost\=127.0.0.1 -DsocksProxyPort\=1080
    1. 只编译特定 arch 的版本

修改 app/build.gradle(23 行处),在 buildTypes 中增加 abiFilters 即可。

比如,只编译"arm64-v8a",可以这样修改:

原来的:

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }   
    }  

修改后的:

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
            ndk {
             abiFilters "arm64-v8a"
            }
        }
        debug {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
            ndk {
             abiFilters "arm64-v8a"
            }
        }
    }

arch 的可选的值:

arm64-v8a
armeabi
armeabi-v7a
mips
x86
x86_64

编译多个arch时,用逗号分隔。

    1. 输入法第一次弹出时,无法使用删除键。

第一次启动软键盘时,无法输入backspace/return等按键,没有找到原因,只好打个补丁:第一次启动时,通过InputConnection补发按键消息。

    1. 使用AWTK内置的输入法

修改 app/src/main/cpp/CMakeLists.txt,放开下面两行代码。

# set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DWITH_DEFAULT_IM=1 -DWITH_IME_PINYIN=1 ")
# set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DWITH_DEFAULT_IM=1 -DWITH_IME_PINYIN=1 ")

对于旧的项目,可以加到if(${ANDROID_ABI} STREQUAL "armeabi-v7a")之前

Releases

No releases published

Packages

No packages published