每次我发布我的应用程序时,我都会将所有的url字符串和一些键从测试更改为生产.我这样做的方法就是在发布之前注释掉测试字符串.有没有更好的方法来处理基于构建类型的字符串?
可以以某种方式重命名预定义的构建类型吗?
我们使用一些自定义构建类型来表示我们的内部登台设置(DEV/TEST/LIVE),并且不需要构建buildTypes(发布/调试).这些可以在调用时以某种方式被重命名或禁用assemble吗?
当我运行一个sdkmanager命令sdkmanager "build-tools;26.0.1"时,由于下载进度条,它会在Jenkins控制台中吐出数百行.有没有办法隐藏它或将其置于安静模式?
我没有在sdkmanager --help输出中看到一个选项.我正在考虑将输出管道输送到/dev/null.
android android-build jenkins android-sdk-tools android-sdk-manager
我正在使用新的gradle android构建系统.
该项目包括两个android库项目和一个主项目.
使用ant构建,必须在project.properties中启用清单合并.但是在使用gradle构建系统时,默认情况下会启用清单合并.我怎样才能禁用清单合并?
运行assembleDebug时,会调用我依赖的项目的发布相关任务.
例如,我有一个名为'x'的项目,它取决于'y'.
当我gradle assembleDebug调用y:mergeReleaseProguardFiles,packageReleaseAidl等...等等.
多年来,我一直使用Eclipse的Ant集成来构建我的Android项目,如Google在此文档页面上所述.这是我最喜欢的构建发布版本的方法,因为我可以在Eclipse中点击"Run external tool"来启动Ant构建,并在后台运行.
从最近(我相信ADT 22.0或22.1),我一直遇到以下失败:
Run Code Online (Sandbox Code Playgroud)[echo] Handling Resources... [aapt] Generating resource IDs... [aapt] invalid resource directory name: C:\path\to\project\bin\res/crunchBUILD FAILED
C:\ Android\android-sdk\tools\ant\build.xml:653:执行此行时发生以下错误:
C:\ Android\android-sdk\tools\ant\build.xml:698:null返回:1
我不确定这是什么原因,因为AAPT似乎生成了"crunch"目录本身.我已经尝试清理我的项目并禁用Eclipse中的自动构建但无济于事.
我也试过ant release在Eclipse之外执行,但这会产生同样的错误.执行ant clean release也不起作用,因为它试图删除仍在使用Eclipse的jar.因此,我发现的唯一解决方案是:
ant clean release这是令人难以忍受的,因为正如我们所知,重启Eclipse是一种巨大的痛苦.此外,所有受影响的项目都需要清理,这使整个过程需要半个小时.我在b.android.com上打开了#60496号问题,但没有听到任何官方回复.
除了咬紧牙关并切换到Android Studio之外,还有什么解决方案吗?
我的应用程序使用旧架构组件.我想转向新的Android架构组件.
为此,我在开始时添加了与房间相关的依赖项,之后构建正常.
但是,当我尝试添加了Lyfecycles,LiveData和视图模型的依赖,提到这里.
应用程序构建过程大大减慢,构建apk需要5分钟和更长的时间.
在app的build.gradle中添加了以下dependecies:
compile "android.arch.lifecycle:runtime:1.0.0-alpha5"
compile "android.arch.lifecycle:extensions:1.0.0-alpha5"
annotationProcessor "android.arch.lifecycle:compiler:1.0.0-alpha5"
Run Code Online (Sandbox Code Playgroud)
此外,我必须启用插孔以实现Java 8兼容性,如下所示:
defaultConfig {
........
jackOptions {
enabled true
}
}
Run Code Online (Sandbox Code Playgroud)
添加所有这些组件后,构建过程已大大减慢.我尝试通过转到某些参数来进行一些自定义VM选项更改Help -> Edit custom VM options
-Xmx5120m
Run Code Online (Sandbox Code Playgroud)
我把它设置为几乎5 GB,但对我来说没有任何作用.我相信我的机器有足够的硬件.(8 GB RAM,Windows 10,1TB HDD,AMD A8)
我的应用程序使用了许多谷歌服务,如Gmail API,Firebase API,其他一些库我用尽了64K参考限制?但是我已经启用了这里提到的多索引.
这是因为新的架构组件还是其他原因而发生的?如何使构建过程更快?
更新:
下面的答案之一Budius提出了一个脚本,它将显示每个构建过程所采用的时间,我在我的应用程序中执行它的结果是:
BUILD SUCCESSFUL
Total time: 18 mins 28.44 secs
Task timings:
480ms :app:mergeDebugResources
2516ms :app:processDebugResources
487725ms :app:transformClassesWithPreJackPackagedLibrariesForDebug
29213ms :app:transformClassesWithPreJackRuntimeLibrariesForDebug
752ms :app:transformResourcesWithMergeJavaResForDebug
556894ms :app:transformJackWithJackForDebug
5184ms :app:transformNativeLibsWithMergeJniLibsForDebug
17524ms :app:packageDebug
Run Code Online (Sandbox Code Playgroud)
大多数时间都是杰克.
我尝试了下面的答案由Bryan …
我想改变APK output folder,这就是我以前做的事情:
applicationVariants.all { variant ->
variant.outputs.all {
def filePath = "${rootProject.rootDir.absolutePath}/apks/${variant.name}"
println("My Path: " + filePath)
outputFileName = filePath
}
}
Run Code Online (Sandbox Code Playgroud)
但是,它无效Gradle 4.1(Android studio 3.0预览版).它不是像上面的路径一样生成文件夹,而是在旧debug文件夹中生成上面的路径,如下图所示:
有人有解决方案吗?谢谢.
android gradle android-build build.gradle android-gradle-plugin
我正在开发一个简单的演示.在这个演示中,我只是创建一个简单的自定义警报对话框.它工作正常.
当我在1.6中构建应用程序时,它向我展示了完美的结果,但是当我将Android版本从1.6更改为2.2时,它显示了意外的结果.它不显示我显示自定义警报对话框的背景屏幕.
这是我的xml文件. 自定义对话框主题文件
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="CustomDialogTheme" parent="@android:style/AlertDialog">
<item name="android:windowFrame">@null</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:backgroundDimEnabled">true</item>
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowAnimationStyle">@android:style/Theme.Dialog</item>
</style>
</resources>
Run Code Online (Sandbox Code Playgroud)
这是我的CustomConfirmOkDialog类
package com.utility.org;
import android.app.Activity;
import android.app.Dialog;
import android.view.View;
import android.view.Window;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class CustomConfirmOkDialog extends Dialog implements OnClickListener
{
private Button okButton = null;
private TextView infoText=null,confirmBody=null;
private int errorMessage=0;
@SuppressWarnings("unused")
private Activity activity;
public CustomConfirmOkDialog(Activity context,int customdialogtheme,int errorMessage)
{
super(context,customdialogtheme);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.confirm_ok);
this.errorMessage = errorMessage;
this.activity = context; …Run Code Online (Sandbox Code Playgroud) 当我尝试构建我的项目时,我遇到了这样一个错误:
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:dataBindingGenBaseClassesDebug'.
> Parameter 'directory' is not a directory
Run Code Online (Sandbox Code Playgroud) android android-build android-studio build.gradle android-gradle-plugin