有没有办法动态更改生成的文件 .BuildConfig 的包?
我想使用build.gradle文件来使用applicationId和更改不同版本之间的包名称。
谢谢
添加useProguard true和multidexEnabled true我的构建类型后,尝试构建时出现此错误:
错误:尚不支持内置类收缩器和多索引.
compileSdkVersion 23
buildToolsVersion '23.0.2'
defaultConfig {
applicationId "com.example.android
minSdkVersion 16
targetSdkVersion 23
versionCode gitVersionCode()
versionName gitVersionName()
multiDexEnabled true
}
Run Code Online (Sandbox Code Playgroud)
buildTypes {
debug {
...
useProguard false
debuggable true
}
release {
...
useProguard true
}
Run Code Online (Sandbox Code Playgroud)
运行Android Studio 2.0 Beta 5.
删除multidex除了解决方案?
在build.gradle,我有产品口味设置:
productFlavors
{
AlternateFlavour
{
applicationId "com.myapp.alternateflavour"
}
}
Run Code Online (Sandbox Code Playgroud)
然后在sourceSets部分中,我为这些风格使用不同的资源,资产和清单目录:
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}
AlternateFlavour {
manifest.srcFile 'manifest-tmp/AlternateFlavour/AndroidManifest.xml'
java.srcDirs = ['src']
res.srcDirs = ['res-tmp/AlternateFlavour']
assets.srcDirs = ['assets-tmp/AlternateFlavour']
}
}
Run Code Online (Sandbox Code Playgroud)
好到目前为止.
在那个由部分自动生成的风味使用的清单中,我有:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.myapp.myapp"
android:versionCode="1010001"
android:versionName="V1.1.0.1" >
Run Code Online (Sandbox Code Playgroud)
但在根项目的原始清单中如下:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.myapp.myapp"
android:versionCode="1010000"
android:versionName="V1.1.0.DEBUG" >
Run Code Online (Sandbox Code Playgroud)
这会导致Gradle失败:
Error:
Attribute manifest@versionCode value=(1010001) from AndroidManifest.xml:4:5-28
is also present at AndroidManifest.xml:4:5-28 value=(1010000).
Attributes of <manifest> …Run Code Online (Sandbox Code Playgroud) android gradle android-build android-productflavors android-build-flavors
总是当我添加一个新的 C++ 文件时,Android Studio 会通知我该文件不是我项目的一部分,我应该将新文件包含在适当的构建文件(build.gradle、CMakeLists.txt、Android.mk 等)中。 )。
我总是手动点击“Refresh Linked C++-Projects”来让 Android Studio 在项目中包含我的新 C++-File。
我正在使用 Cmake 并通过file(GLOB CPP_FILES "src/main/cpp/*.cpp")CMakeLists.txt 中的行将我的 C++ 文件 glob 化。
如果添加了新的 Cpp-File,如何让 Android Studio 自动刷新喜欢的 C++-Project?
提前致谢!
假设我有一个具有三种构建类型的Android应用:
buildTypes {
release {
....
}
optRelease {
....
}
debug {
....
}
}
Run Code Online (Sandbox Code Playgroud)
我有一个依赖模块:
dependencies {
implementation project(':myDependency')
}
Run Code Online (Sandbox Code Playgroud)
假设此依赖项只有两种构建类型(比如debug和release),我想完全控制我的应用程序的哪种构建类型使用哪种依赖项的构建类型。例如,我希望我的应用程序optRelease使用库的release,而应用程序release使用库的debug。
在Android Studio 3.0之前,这曾经是可能的,但是新的构建变体系统似乎不再允许这样做了。
如何明确说明要使用的构建类型?假设我无法控制依赖项,并且无法修改其gradle配置。
我正在尝试从ant构建一个发布APK文件,这就是我在我的控制台中获取的内容
D:\AndroidSDK\android-sdk_r18-windows\android-sdk-windows\tools\ant\build.xml:595: The following error occurred while executing this line:D:\AndroidSDK\android-sdk_r18windows\android-sdk-windows\tools\ant\build.xml:864: The output jar is empty. Did you specify the proper '-keep' options?
Run Code Online (Sandbox Code Playgroud)
这是什么错误以及如何解决它...使用最新的SDK(API-17)和版本21.1所有java_home,Ant_home都设置了
我试图让声纳报告与gradle Android项目一起运行.因为大多数重要的声纳属性仅在项目是项目的时候由sonarRunner gradle插件应用,所以java我在将它们应用于com.android.application项目时遇到了麻烦.
这是我的sonarRunner配置:
sonarRunner {
sonarProperties {
property "sonar.sourceEncoding", "UTF-8"
property "sonar.profile", "Android Lint"
property "sonar.sources", android.sourceSets.main.java.srcDirs
property "sonar.binaries", file("${project.buildDir}/intermediates/classes/app")
property "sonar.libraries", "" // what to put here?
}
}
Run Code Online (Sandbox Code Playgroud)
问题是,声纳正在抱怨没有找到类,因为无法引用库.
如何在我的sonarRunner配置中引用依赖项+ android库?
示例错误输出:
INFO - Load batch settings
INFO - User cache: C:\Users\mannaz\.sonar\cache
INFO - Install plugins
INFO - Install JDBC driver
INFO - Create JDBC datasource for jdbc:postgresql://sonar.local/sonar?useUnicode=true&characterEncoding=utf8
INFO - Initializing Hibernate
INFO - Load project settings
INFO - Apply project …Run Code Online (Sandbox Code Playgroud) gradle android-build sonar-runner android-gradle-plugin sonarqube
当我试图通过Android工作室在模拟器中运行应用程序时,我收到错误"执行失败的任务':app:preDexDebug'"
完整的堆栈跟踪:
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:preDexDebug'.
> com.android.ide.common.internal.LoggedErrorException: Failed to run command:
e:\developer\Android\sdk\build-tools\21.1.2\dx.bat --dex --output E:\developer\AndroidStudioProjects\OMGAndroid\app\build\intermediates\pre-dexed\debug\support-annotations-21.0.3-c91f7c2a85920982313a91e2dffb704ba92c7823.jar E:\developer\Android\sdk\extras\android\m2repository\com\android\support\support-annotations\21.0.3\support-annotations-21.0.3.jar
Error Code:
1
Output:
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
* Try:
Run with --info or --debug option to get more log output.
* Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:preDexDebug'.
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:69)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:46)
at org.gradle.api.internal.tasks.execution.PostExecutionAnalysisTaskExecuter.execute(PostExecutionAnalysisTaskExecuter.java:35)
at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:64)
at …Run Code Online (Sandbox Code Playgroud) 问题很奇怪.我正在尝试直接添加一个String,build.gradle因为我需要它来使用Tray库(https://github.com/grandcentrix/tray).在我的第一个项目中一切都很好.在第二个项目中,它有点复杂.我正在使用gradle:1.2.3并在导出已签名的apk时出现MissingTranslation错误.
的build.gradle
applicationId "some.app.id"
resValue "string", "tray__authority", "${applicationId}.tray"
Run Code Online (Sandbox Code Playgroud)
构建错误
.../build/generated/res/generated/release/values/generated.xml
Error:(7) Error: "tray__authority" is not translated in "pl" (Polish) [MissingTranslation]
<string name="tray__authority">some.app.id.tray</string>
Run Code Online (Sandbox Code Playgroud)
generated.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- Automatically generated file. DO NOT MODIFY -->
<!-- Values from default config. -->
<string name="tray__authority">some.app.id.tray</string>
</resources>
Run Code Online (Sandbox Code Playgroud)
有几个类似的问题,但所有这些问题都与strings.xml有关,并建议使用
<resources
xmlns:tools="http://schemas.android.com/tools"
tools:ignore="MissingTranslation">
Run Code Online (Sandbox Code Playgroud)
要不就 translatable="false"
我不能这样做因为文件是自动生成的.如何强制gradle忽略错误?我尝试更改检查设置并将其设为警告,但gradle忽略了我的设置.
我知道这是一个错误(https://code.google.com/p/android/issues/detail?id=152198),但我不知道如何解决它.我找到的所有答案都不起作用.
我使用Linux代理池来构建我的应用程序.偶尔会出现代理导致构建失败并出现错误:
FAILURE: Build failed with an exception.
What went wrong:
Execution failed for task ':ComponentThatReqBuildToolsRev23.0.3:preBuild'.
> failed to find Build Tools revision 23.0.3
Run Code Online (Sandbox Code Playgroud)
因为我的构建代理是远程的(android预安装/ opt/android-sdk-linux/tools/android),我无法预安装平台工具,构建工具等所以我的项目中包含了一个makefile.签出代码后,它调用makefile中的方法:
#!/bin/bash
git submodule init
git submodule update
make updateSDK
# EOF
Run Code Online (Sandbox Code Playgroud)
makefile中的方法是:
PACKAGES = "tools,platform-tools,build-tools-21.1.2,android-22,build-tools-23.0.3,android-21,extra-android-support,extra-android-m2repository,extra-google-m2repository,extra-google,google_play_services"
updateSDK:
(sleep 5 && while [ 1 ]; do sleep 1; echo y; done) \
| android --clear-cache update sdk --no-ui --all \
--filter $(PACKAGES)
Run Code Online (Sandbox Code Playgroud)
在成功的案例中,Bamboo的日志显示:
Refresh Sources:
Fetching https://dl.google.com/android/repository/addons_list-2.xml
Validate XML
Parse XML
Fetched Add-ons List successfully
Refresh Sources …Run Code Online (Sandbox Code Playgroud) android-build ×10
android ×9
gradle ×3
android-ndk ×1
apk ×1
bamboo ×1
build.gradle ×1
cmake ×1
makefile ×1
sonar-runner ×1
sonarqube ×1