zlgopen / awtk-android

awtk-android port
6 stars 4 forks source link
android awtk

awtk-android

awtk android 移植

预编译的demoui APK

安装 android 开发环境

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

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

设置 android 环境变量

export ANDROID_HOME=/Users/jim/Library/Android/sdk/
export ANDROID_NDK_HOME=/Users/jim/Library/Android/sdk/ndk-bundle/
export PLATFORM_TOOLS_HOME=/Users/jim/Library/Android/sdk/platform-tools

export PATH=$PATH:$NDK_HOME:$PLATFORM_TOOLS_HOME
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
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%
$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 的工程

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。

文档

相关项目

其它问题

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

sdk.dir=/Users/jim/Library/Android/sdk/
ndk.dir=/Users/jim/Library/Android/sdk/ndk-bundle/

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

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

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

请在网上搜索相关资料。

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

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

如:

distributionUrl=https\://services.gradle.org/distributions/gradle-6.3-all.zip
org.gradle.jvmargs=-DsocksProxyHost\=127.0.0.1 -DsocksProxyPort\=1080

修改 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时,用逗号分隔。

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

修改 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")之前