You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无构建系统环境下手动集成AndroidX库的技术求助

手动集成AndroidX依赖(无构建系统)

因为笔记本配置低,我没使用Android Studio,而是用Vscodium搭配自定义脚本编译Android应用,目前已能成功构建项目,原编译脚本如下:

#!/bin/bash
rm app.apk app.apk.idsig MainActivity.jar classes.dex
cd R/com/example/helloworld
rm R.class R.java 'R$layout.class'
cd ../../../../
~/Android/build-tools/34.0.0/aapt2 compile layout/MainUI.xml -o layout
~/Android/build-tools/34.0.0/aapt2 link layout/layout_MainUI.xml.flat  -o app.apk  -I ~/Android/platforms/android-34/android.jar --manifest AndroidManifest.xml  --java R
cd R/com/example/helloworld
javac R.java
cd ../../../../
kotlinc -classpath /home/mousin/Android/platforms/android-34/android.jar:/home/mousin/Downloads/app/R MainActivity.kt -d MainActivity.jar
~/Android/build-tools/34.0.0/d8 MainActivity.jar
~/Android/build-tools/34.0.0/aapt add app.apk classes.dex
echo "5949147123" |  ~/Android/build-tools/34.0.0/apksigner sign --ks mousin.keystore app.apk
adb install app.apk

现在要集成AndroidX库用新特性,已经拿到相关aar及源码,但遇到两个问题:

  • 问题1:没法处理Theme.Appcompat这类XML依赖项
  • 问题2:已经收集了所需类文件,编译没报错,但运行时出现类找不到异常

我试过让MainActivity继承AppCompatActivity,也从Google Maven仓库收集了依赖库,但还是有运行时异常;XML方面找过库的res文件但没找到,下面是手动处理AndroidX依赖的解决方法:


解决XML资源依赖(Theme.Appcompat等)

  1. 获取AndroidX库的资源文件:
    从Maven仓库下载对应AndroidX库的AAR包(比如androidx.appcompat:appcompat),解压后能找到res目录,里面包含主题、样式等资源文件。
  2. 编译AndroidX的资源文件:
    在自己的布局编译之后,加上AndroidX资源的编译命令:
    # 编译自身布局
    ~/Android/build-tools/34.0.0/aapt2 compile layout/MainUI.xml -o layout
    # 编译appcompat解压后的res目录(假设路径为appcompat-res)
    ~/Android/build-tools/34.0.0/aapt2 compile --dir appcompat-res -o appcompat-res-flat
    
  3. 链接阶段加入AndroidX资源:
    修改aapt2 link命令,加入编译好的AndroidX资源flat文件,同时添加--auto-add-overlay参数解决资源覆盖问题,还要引用AAR里的classes.jar:
    ~/Android/build-tools/34.0.0/aapt2 link layout/layout_MainUI.xml.flat appcompat-res-flat/*.flat \
      -o app.apk \
      -I ~/Android/platforms/android-34/android.jar \
      -I appcompat-classes.jar \  # 替换成你解压appcompat AAR得到的classes.jar路径
      --manifest AndroidManifest.xml \
      --java R \
      --auto-add-overlay
    
  4. 修正Manifest里的主题:
    把AndroidManifest.xml中的android:theme改成AndroidX对应的主题,比如@style/Theme.AppCompat.Light.NoActionBar。

解决运行时类找不到异常

  1. 收集所有依赖的AndroidX jar包:
    AndroidX库有依赖链,比如appcompat依赖core-ktx、collection等,要从Maven仓库把所有间接依赖的jar包都下载下来,不能只下单个库。
  2. 编译阶段加入所有依赖jar:
    修改kotlinc命令,把所有AndroidX的jar包加入classpath:
    kotlinc -classpath "/home/mousin/Android/platforms/android-34/android.jar:/home/mousin/Downloads/app/R:appcompat-classes.jar:core-ktx-classes.jar:material-classes.jar" MainActivity.kt -d MainActivity.jar
    
  3. 打包所有类到dex文件:
    用d8工具时,不能只打包自己的MainActivity.jar,要把所有依赖的AndroidX jar包一起打包:
    ~/Android/build-tools/34.0.0/d8 MainActivity.jar appcompat-classes.jar core-ktx-classes.jar material-classes.jar
    
  4. 替换原脚本中的对应步骤:
    把上面的编译和d8命令替换原脚本里的对应部分,确保所有依赖类都被打包进classes.dex,再添加到APK中。

更新后的完整脚本示例

#!/bin/bash
# 清理旧文件
rm -rf app.apk app.apk.idsig MainActivity.jar classes.dex layout appcompat-res-flat R
# 解压AndroidX AAR(假设appcompat.aap在当前目录)
unzip -q appcompat.aar -d appcompat-temp
# 编译资源
~/Android/build-tools/34.0.0/aapt2 compile layout/MainUI.xml -o layout
~/Android/build-tools/34.0.0/aapt2 compile --dir appcompat-temp/res -o appcompat-res-flat
# 链接资源生成未签名APK
~/Android/build-tools/34.0.0/aapt2 link layout/layout_MainUI.xml.flat appcompat-res-flat/*.flat \
  -o app.apk \
  -I ~/Android/platforms/android-34/android.jar \
  -I appcompat-temp/classes.jar \
  --manifest AndroidManifest.xml \
  --java R \
  --auto-add-overlay
# 编译R.java
cd R/com/example/helloworld
javac R.java
cd ../../../../
# 编译Kotlin代码(加入所有AndroidX依赖jar)
kotlinc -classpath "/home/mousin/Android/platforms/android-34/android.jar:./R:./appcompat-temp/classes.jar:./core-ktx-classes.jar" MainActivity.kt -d MainActivity.jar
# 打包所有类到dex
~/Android/build-tools/34.0.0/d8 MainActivity.jar appcompat-temp/classes.jar core-ktx-classes.jar
# 添加dex到APK
~/Android/build-tools/34.0.0/aapt add app.apk classes.dex
# 签名并安装
echo "5949147123" | ~/Android/build-tools/34.0.0/apksigner sign --ks mousin.keystore app.apk
adb install -r app.apk
# 清理临时文件
rm -rf appcompat-temp

内容的提问来源于stack exchange,提问作者Mousin Ahanger

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 23:10:13