我有2个项目(源代码).项目A是未编译的库,项目B使用该库.我想用ant编译它.我正在使用android更新来设置.
android update lib-project --target 2 --path c:\ Android-Build\A.
android更新项目--target 2 --path c:\ Android-Build\B --library ..\A.
在项目B的libs文件夹中,我什么都没有.我正在使用的所有库都在库(A)上.使用eclipse一切正常.
我怎么能用ant编译呢.
ant debug throw错误.库(A)首先编译(生成bin和gen文件夹).
但是当来到项目B来获取编译时无法从库中找到导入.如何告诉ant在构建过程中将库包含到项目B中?TY.
[javac] C:\ Android-Build\B Activity.java:7:错误:找不到符号[javac] import com.aA;
*更新**
project.properties 对于项目B.
android.library.reference.1=..\\A
# Project target.
target=Google Inc.:Google APIs:13
Run Code Online (Sandbox Code Playgroud)
project.properties 对于项目A.
target=Google Inc.:Google APIs:13
Run Code Online (Sandbox Code Playgroud)
\\似乎是正确的,因为如果我将其更改为\ ant无法找到库
我正在尝试使用ant构建一个apk,并且编译失败并显示以下错误消息:
[javac] type parameters of <T>void cannot be determined; no unique maximal instance exists for type variable T with upper bounds android.widget.ListAdapter,android.widget.Filterable
[javac] currentAddressTextView.setAdapter(null);
Run Code Online (Sandbox Code Playgroud)
在eclipse中它编译得很好,当我删除那部分代码时,它也会在ant构建期间编译.
我需要构建android 4.3 master.按照http://source.android.com/source/building.html上的说明操作.它很好地从repo同步源代码.当我们尝试使用"make -j4"构建时,这种情况正在发生.
1 error
make: *** [out/target/common/obj/JAVA_LIBRARIES/core_intermediates/classes-full-debug.jar] Error 41
make: *** Waiting for unfinished jobs....
Run Code Online (Sandbox Code Playgroud)
这是完整的日志 -
============================================
PLATFORM_VERSION_CODENAME=REL
PLATFORM_VERSION=4.3.2.1.000.000
TARGET_PRODUCT=aosp_panda
TARGET_BUILD_VARIANT=userdebug
TARGET_BUILD_TYPE=release
TARGET_BUILD_APPS=
TARGET_ARCH=arm
TARGET_ARCH_VARIANT=armv7-a-neon
TARGET_CPU_VARIANT=cortex-a9
HOST_ARCH=x86
HOST_OS=linux
HOST_OS_EXTRA=Linux-2.6.32-38-generic-x86_64-with-Ubuntu-10.04-lucid
HOST_BUILD_TYPE=release
BUILD_ID=OPENMASTER
OUT_DIR=out
============================================
No private recovery resources for TARGET_DEVICE panda
target Java: core (out/target/common/obj/JAVA_LIBRARIES/core_intermediates/classes)
host Executable: aidl (out/host/linux-x86/obj/EXECUTABLES/aidl_intermediates/aidl)
host C++: aapt <= frameworks/base/tools/aapt/AaptAssets.cpp
host C++: aapt <= frameworks/base/tools/aapt/Command.cpp
host C++: aapt <= frameworks/base/tools/aapt/CrunchCache.cpp
host C++: aapt <= frameworks/base/tools/aapt/FileFinder.cpp
host C++: aapt <= frameworks/base/tools/aapt/Main.cpp
host C++: …Run Code Online (Sandbox Code Playgroud) 我一直在寻找,但找不到这两件事之间的区别.我已经阅读了其他一些问题,其中有人说当我们要整合Google Maps Api或使用其他Google API时,我们应该使用Google Apis作为构建目标.
问题是我在基于简单的Android 4.4而不是Google API(平台4.4)的项目上使用地图,并且地图在我的Galaxy s3上运行得很好.
他们怎么可能工作?
如果他们正在工作,那么Google API和SDK平台之间有什么区别?或者仅与模拟器有关?
我有 Gradle Android 项目,将供多个客户使用。它还将有免费和付费版本。我意识到它可以通过使用flavorDimensions来实现。但问题是我想要一种根据所选口味生成包名称的方法。
flavorDimensions 'branding', 'version'
productFlavors {
free {
flavorDimension 'version'
}
paid{
flavorDimension 'version'
}
customer1 {
flavorDimension 'branding'
}
customer2 {
flavorDimension 'branding'
}
}
// pseudocode
def getGeneratePackageName() {
if (customer1 && free) {
return 'com.customer1.free'
}
if (customer2 && free) {
return 'com.customer2.free'
}
if (customer1 && paid) {
return 'com.customer1.paid'
}
if (customer2 && paid) {
return 'com.customer2.paid'
}
}
Run Code Online (Sandbox Code Playgroud)
我想知道什么时候需要调用这个方法以及需要设置什么变量?
如https://developer.android.com/studio/publish/app-signing#signing-manually中所述,我尝试在 Windows 7 上的 git bash 中签署应用程序。
我用它生成一个密钥库,
keytool -genkey -v -keystore my-release-key.jks
-keyalg RSA -keysize 2048 -validity 10000 -alias my-alias
应该使用默认的密钥库类型,这应该没问题。
然后我运行zipalign
zipalign -v -p 4 my-app-unsigned.apk my-app-unsigned-aligned.apk
给出“验证成功”(带有一个)
最后我运行 apksigner 这给了我错误:
"C:\....\apksigner.bat" sign --ks my-release-key.jks --out my-app-release.apk my-app-unsigned-aligned.apk
Keystore password for signer #1:
123456
Failed to load signer "signer #1"
java.io.IOException: Invalid keystore format
at sun.security.provider.JavaKeyStore.engineLoad(JavaKeyStore.java:658)
at sun.security.provider.JavaKeyStore$JKS.engineLoad(JavaKeyStore.java:56)
at sun.security.provider.KeyStoreDelegator.engineLoad(KeyStoreDelegator.java:224)
at sun.security.provider.JavaKeyStore$DualFormatJKS.engineLoad(JavaKeyStore.java:70)
at java.security.KeyStore.load(KeyStore.java:1445)
at com.android.apksigner.ApkSignerTool$SignerParams.loadPrivateKeyAndCertsFromKeyStore(ApkSignerTool.java:613)
at com.android.apksigner.ApkSignerTool$SignerParams.loadPrivateKeyAndCerts(ApkSignerTool.java:555)
at com.android.apksigner.ApkSignerTool$SignerParams.access$200(ApkSignerTool.java:509)
at com.android.apksigner.ApkSignerTool.sign(ApkSignerTool.java:215)
at com.android.apksigner.ApkSignerTool.main(ApkSignerTool.java:89)
Run Code Online (Sandbox Code Playgroud)
我还尝试了不同的存储类型,例如pkcs12 …
我是 Android Studio 构建变体的新手。我创建了一个新应用程序,在 gradle 中编辑了构建风格并成功同步了它。但是当我为其中一个构建变体(demoDebug)添加源集时,它显示错误。
模块级 build.gradle 文件:
apply plugin: 'com.android.application'
android {
compileSdkVersion 28
defaultConfig {
applicationId "com.example.shaon.myappbuildtest"
minSdkVersion 15
targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
debug {
applicationIdSuffix ".debug"
debuggable true
}
}
flavorDimensions "version"
productFlavors {
demo {
dimension "version"
applicationIdSuffix ".demo"
versionNameSuffix "-demo"
}
full {
dimension "version"
applicationIdSuffix ".full"
versionNameSuffix "-full"
}
}
sourceSets { debug { java.srcDirs = ['src/debug/java', 'src/debug/java/'] …Run Code Online (Sandbox Code Playgroud) android android-build android-studio android-build-type android-build-flavors
我最近升级到 Android Studio 4.0.1 并且我的构建不断失败并显示以下消息:
不推荐使用选项“android.databinding.enableV2”。当前默认值为“真”。它已从当前版本的 Android Gradle 插件中删除。删除了数据绑定 v1。
我尝试添加:
android.enableExperimentalFeatureDatabinding = false
android.databinding.enableV2=false
Run Code Online (Sandbox Code Playgroud)
到 gradle.properties 和 gradle-wrapper.properties。但都没有解决问题。是否有必须从 build.gradle 添加或删除的内容?
android-build build.gradle android-databinding android-studio-4.0
我有一个带有一堆产品口味的应用程序,它们基本上是单个应用程序的白色标签.然而,偶尔会有一些与主流有所不同,因为客户想要的东西略有不同.到目前为止,我们一直在编辑这些案例的代码,并使用意大利面条代码(许多ifs和elses)来确保其他应用程序不会中断.毋庸置疑,这不是一种可扩展(甚至是理智)的方法.
一种选择是在productFlavor源文件夹中编写活动类,即src/flavor1/java/AnActivity.java,src/flavor2/java/AnActivity.java等等.由于productFlavor代码不能覆盖src/main类,因此即使没有自定义,也需要为每个新的风格复制相同的类.我真的不太喜欢这个选项.它导致许多冗余代码和类名最终不再具有描述性,因为它们都必须具有相同的名称才能覆盖其他代码,即使它们可能正在做一些不同的事情.
另一个选择可能是使用类似的东西Dagger来构建ObjectGraph和注入不同实现的Intents.例如,如果是flavor1,则单击按钮X时,将ActivityA注入意图,如果是flavor2,ActivityB则注入意图.
这似乎是一种更好的方法,但我仍然不确定如何实现在默认情况下覆盖绑定的类ObjectGraph.
关于实施或其他选择的任何想法?我不是必须的Dagger,我只是开始研究依赖注入和测试,所以其他框架也能正常工作.
我在构建android项目时遇到错误,甚至是一个hello world项目:
控制台输出:
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:
/Applications/Android Studio.app/sdk/build-tools/19.1.0/dx --dex --output /Users/luyaochen/Documents/and/MyApplication3/app/build/intermediates/pre-dexed/debug/internal_impl-20.0.0-20e875ec0585f022fce03f5b07d31a0222ca3f58.jar /Users/luyaochen/Documents/and/MyApplication3/app/build/intermediates/exploded-aar/com.android.support/support-v4/20.0.0/libs/internal_impl-20.0.0.jar
Error Code:
1
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
Run Code Online (Sandbox Code Playgroud)
请帮忙,我不知道出了什么问题
android-build ×10
android ×9
ant ×2
apksigner ×1
build.gradle ×1
dagger ×1
google-maps ×1
gradle ×1
javac ×1
package-name ×1
ubuntu-10.04 ×1