Когда я создаю свою платную версию, Android Studio (и Gradle) генерирует файл apk двойного размера?
Тот же результат, генерирующий apk из Android Studio и / или командной строки:
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 администратор 952930 6 января 10:01 free-release.apk
Размер платного apk:
-rw-r - r-- 1 администраторский персонал 1880495 6 января 10:00 платный-release.apk
Это стандартная установка Android Studio с основным /, а затем параллельно с основным / следующим каталогом /:
.
./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
Планировка студии:
Обновление1:
Когда я добавил пустую бесплатную параллель в каталог платной и изменил следующее:
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 имеют одинаковый и двойной размер !?
Обновление2:
Удалил исходники, установил все вместе и все заработало!
1 ответ
Я думаю, вы неправильно указываете sourceSets.
Если вы вернетесь к исходной конфигурации, бесплатные и платные варианты продукта, ресурсы в src / платном / res, вы можете удалить элементы sourceSets, и приложение должно работать нормально.
Похожие вопросы
Новые вопросы
android
Android - это мобильная операционная система Google, используемая для программирования или разработки цифровых устройств (смартфоны, планшеты, автомобили, телевизоры, одежда, стекло, IoT). Для тем, связанных с Android, используйте специальные теги Android, такие как android-intent, android-activity, android-адаптер и т. Д. Для вопросов, не связанных с разработкой или программированием, но связанных с платформой Android, используйте эту ссылку: https: // android.stackexchange.com .