簡體   English   中英

Android Studio(gradle)為付費版本生成雙倍大小的apk文件

[英]Android Studio (gradle) generates double size apk file for paid version

當我構建我的付費版本時,Android Studio(和Gradle)生成一個雙倍大小的apk文件?

從Android Studio和/或命令行生成apk的結果相同:

gradle clean assembleRelease

它包括以下額外目錄:

assets/
main/
paid/

從而使它非常大。

我的build.gradle對付費版本有以下定義:

sourceSets {

    paid {
        manifest.srcFile 'AndroidManifest.xml'
        java.srcDirs = ['src/paid']
        resources.srcDirs = ['src']
        aidl.srcDirs = ['src']
        renderscript.srcDirs = ['src']
        res.srcDirs = ['res']
        assets.srcDirs = ['assets']
    }

}

在我的src / paid / res目錄中,我只有以下額外的內容(從apk解壓縮):

40  ./res/drawable
8   ./res/drawable-hdpi
8   ./res/drawable-ldpi
8   ./res/drawable-mdpi
8   ./res/raw
8   ./res/raw-de
8   ./res/raw-sv
16  ./res/values
8   ./res/values-de
8   ./res/values-sv
120 ./res
120 .

我使用以下內容:

productFlavors {

    free {
        packageName "com.xyz.abc"
    }

    paid {
        packageName "com.xyz.abcpro"
    }

}

目錄大小低於(從apk解壓縮):

自由:

208 ./META-INF
8   ./org/apache/http/client
8   ./org/apache/http/entity/mime
8   ./org/apache/http/entity
24  ./org/apache/http
24  ./org/apache
24  ./org
888 ./res/drawable
584 ./res/drawable-hdpi
552 ./res/drawable-ldpi
560 ./res/drawable-mdpi
16  ./res/drawable-xhdpi
16  ./res/drawable-xxhdpi
488 ./res/layout
32  ./res/layout-land
8   ./res/layout-v10
16  ./res/layout-v17
8   ./res/layout-v7
8   ./res/layout-v8
64  ./res/menu
16  ./res/raw
16  ./res/raw-de
16  ./res/raw-sv
80  ./res/xml
3368    ./res
8448    .

支付:

8   ./assets/scripts
8   ./assets
1000    ./main/res/drawable
720 ./main/res/drawable-hdpi
584 ./main/res/drawable-ldpi
656 ./main/res/drawable-mdpi
16  ./main/res/drawable-xhdpi
24  ./main/res/drawable-xxhdpi
504 ./main/res/layout
40  ./main/res/layout-land
8   ./main/res/layout-v10
16  ./main/res/layout-v17 
8   ./main/res/layout-v7
8   ./main/res/layout-v8
64  ./main/res/menu
16  ./main/res/raw
16  ./main/res/raw-de
16  ./main/res/raw-sv
152 ./main/res/values
72  ./main/res/values-de
72  ./main/res/values-sv
96  ./main/res/xml
4088    ./main/res
4104    ./main
368 ./META-INF
8   ./org/apache/http/client
8   ./org/apache/http/entity/mime
8   ./org/apache/http/entity
24  ./org/apache/http
24  ./org/apache
24  ./org
40  ./paid/res/drawable
8   ./paid/res/drawable-hdpi
8   ./paid/res/drawable-ldpi
8   ./paid/res/drawable-mdpi
8   ./paid/res/raw
8   ./paid/res/raw-de
8   ./paid/res/raw-sv
16  ./paid/res/values
8   ./paid/res/values-de
8   ./paid/res/values-sv
120 ./paid/res
120 ./paid
888 ./res/drawable
584 ./res/drawable-hdpi
552 ./res/drawable-ldpi
560 ./res/drawable-mdpi
16  ./res/drawable-xhdpi
16  ./res/drawable-xxhdpi
488 ./res/layout
32  ./res/layout-land
8   ./res/layout-v10
16  ./res/layout-v17
8   ./res/layout-v7
8   ./res/layout-v8
64  ./res/menu
16  ./res/raw
16  ./res/raw-de
16  ./res/raw-sv
80  ./res/xml
3368    ./res
14656   .

免費apk大小:

-rw-r - r-- 1 admin staff 952930 1月6日10:01 free-release.apk

付費apk大小:

-rw-r - r-- 1 admin staff 1880495 1月6日10:00 paid-release.apk

這是一個標准的Android Studio設置,使用main /然后並行到main /以下目錄付費/:

.
./res
./res/drawable
./res/drawable/ic_launcher.png
./res/drawable/widget_icon_large.png
./res/drawable/widget_icon_small.png
./res/drawable-hdpi
./res/drawable-hdpi/ic_launcher.png
./res/drawable-ldpi
./res/drawable-ldpi/ic_launcher.png
./res/drawable-mdpi
./res/drawable-mdpi/ic_launcher.png
./res/raw
./res/raw/help.html
./res/raw-de
./res/raw-de/help.html
./res/raw-sv
./res/raw-sv/help.html
./res/values
./res/values/commons.xml
./res/values/strings.xml
./res/values-de
./res/values-de/strings.xml
./res/values-sv
./res/values-sv/strings.xml

工作室布局: 在此輸入圖像描述

UPDATE1:

當我添加一個空目錄免費parallell付費並更改以下內容:

sourceSets {

    free {
        manifest.srcFile 'AndroidManifest.xml'
        java.srcDirs = ['src/free']
        resources.srcDirs = ['src']
        aidl.srcDirs = ['src']
        renderscript.srcDirs = ['src']
        res.srcDirs = ['res']
        assets.srcDirs = ['assets']
    }

    paid {
        manifest.srcFile 'AndroidManifest.xml'
        java.srcDirs = ['src/paid']
        resources.srcDirs = ['src']
        aidl.srcDirs = ['src']
        renderscript.srcDirs = ['src']
        res.srcDirs = ['res']
        assets.srcDirs = ['assets']
    }

}

現在兩個 apk都有相同和雙倍大小!?

UPDATE2:

一起刪除了sourceSets並且它工作了!

我認為你錯誤地指定了sourceSets。

如果你回到原始配置,產品風味免費和付費,src / paid / res中的資源,你可以刪除sourceSets元素,應用程序應該建立正常。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM