如何在不使用任何构建工具的情况下使用aapt2编译Android应用?

时间:2019-01-20 08:12:05

标签: android bash aapt2

我试图在不使用Gradle或任何其他构建工具的情况下,在Android Studio上编译刚在Kotlin中创建的Android应用程序。我的意图是加快编译应用程序的速度,而无需使用Android Studio或安装诸如Gradle,ant或buck的构建工具。我在将文件与aapt2链接时遇到问题。

我正在使用aapt2将res文件夹中的所有文件编译为一个zip文件。但是,当我尝试链接它们时,aapt2吐出错误。 该错误似乎是由于缺少应用程序兼容库造成的,我的问题是如何成功链接所有这些文件和kotlin文件以创建可部署的apk文件。

以下内容将编译res文件夹中的所有文件,并创建resources.zip文件。

$AAPT compile --dir $APP_DIR/src/main/res -o $APP_DIR/build/intermediate/resources.zip    

但是这失败了。

$AAPT link -o $APP_DIR/build/intermediate/ -I $PLATFORM $APP_DIR/build/intermediate/resources.zip --manifest $APP_DIR/src/main/AndroidManifest.xml

有以下错误

error: resource style/Theme.AppCompat.Light.DarkActionBar (aka com.example.myapplication:style/Theme.AppCompat.Light.DarkActionBar) not found.
./projects/MyApplication/app/src/main/res/values/styles.xml:6: error: style attribute 'attr/colorPrimary (aka com.example.myapplication:attr/colorPrimary)' not found.
./projects/MyApplication/app/src/main/res/values/styles.xml:7: error: style attribute 'attr/colorPrimaryDark (aka com.example.myapplication:attr/colorPrimaryDark)' not found.
./projects/MyApplication/app/src/main/res/values/styles.xml:8: error: style attribute 'attr/colorAccent (aka com.example.myapplication:attr/colorAccent)' not found.
error: resource style/ThemeOverlay.AppCompat.Dark.ActionBar (aka com.example.myapplication:style/ThemeOverlay.AppCompat.Dark.ActionBar) not found.
./projects/MyApplication/app/src/main/res/values/styles.xml:11: error: style attribute 'attr/windowActionBar (aka com.example.myapplication:attr/windowActionBar)' not found.
./projects/MyApplication/app/src/main/res/values/styles.xml:12: 
error: style attribute 'attr/windowNoTitle (aka com.example.myapplication:attr/windowNoTitle)' not found.
error: resource style/ThemeOverlay.AppCompat.Light (aka com.example.myapplication:style/ThemeOverlay.AppCompat.Light) not found.

错误:链接引用失败。

这似乎是由于缺少应用程序兼容性库。我尝试手动下载appcompat-v7-27.1.1.aar文件并将其链接,但这失败了。

如果有人找到解决方案,请赐教。谢谢。

我想用aapt2复制这里可用的内容 https://github.com/authmane512/android-project-template/blob/master/build.sh

2 个答案:

答案 0 :(得分:0)

实际上,使用额外的支持库非常困难且混乱,您会遇到这些错误,因为您使用的支持库主题不是android.jar的一部分,而是可以使用android.jar的默认主题。 放

public  class MainActivity extends Activity {...}

代替

public  class MainActivity extends AppCompatActivity {...}

并更改清单的App主题指向“ styes.xml”,因此基本上您必须将样式XML文件更改为此

<resources>

    <!--
        Base application theme, dependent on API level. This theme is replaced
        by AppBaseTheme from res/values-vXX/styles.xml on newer devices.
    -->
    <style name="AppBaseTheme" parent="android:Theme.Light">
        <!--
            Theme customizations available in newer API levels can go in
            res/values-vXX/styles.xml, while customizations related to
            backward-compatibility can go here.
        -->
    </style>

    <!-- Application theme. -->
    <style name="AppTheme" parent="AppBaseTheme">
        <!-- All customizations that are NOT specific to a particular API-level can go here. -->
    </style>

</resources>

此外,您还应该在“ Menifest.xml”文件中使用以下代码,将您的项目或“活动”样式的XML文件中的主题指向值下

android:theme="@style/AppTheme"

此参考文章对您要尝试执行的操作非常有用https://geosoft.no/development/android.html,并且还请对APK进行签名以在设备上运行您的应用,否则在安装时可能会显示错误。 谢谢。

答案 1 :(得分:0)

使用下面的链接作为参考,以使用aapt / appt2来编译Java应用程序,以便您可以自己编写一个用于编译kotlin的文件。

https://github.com/HemanthJabalpuri/AndroidExplorer