Articles of android gradle

安装split apks时出错:com.android.ddmlib.InstallException:无法完成会话:INSTALL_FAILED_INVALID_APK

Android Studio没有将我的APK推送到具有Marshmallow(6.0.1)的物理Nexus 5X。 这是输出和错误: 01/15 01:51:48: Launching mobile $ adb install-multiple -r /Users/MyUser/AndroidStudioProjects/MyApp/mobile/build/outputs/apk/mobile-development-debug-unaligned.apk /Users/MyUser/AndroidStudioProjects/MyApp/mobile/build/intermediates/split-apk/development/debug/main.apk /Users/MyUser/AndroidStudioProjects/MyApp/mobile/build/intermediates/split-apk/development/debug/main.apk Error installing split apks: com.android.ddmlib.InstallException: Failed to finalize session : INSTALL_FAILED_INVALID_APK: Split lib_main was defined multiple times Error during launch 细节: defaultConfig:minSdkVersion 9 targetSdkVersion 23 multiDexEnabled true 2 buildTypes:debug和release 2 productFlavors:开发和生产 dexOptions:incremental false preDexLibraries = false jumboMode = true javaMaxHeapSize“4096M” […]

java.lang.IllegalAccessError:Method’void android.support.v4.content

我在我的sdk中更新了playservice,我收到了这个错误。 我无法访问GCM令牌。 在更新sdk之前,我的项目完美运行。 我浪费了整整一天但没有find任何解决方案。 我尝试了这个,但是在这个依赖项com.google.android.gms:play-services-plus:9.0.0 这是我的logcat Caused by: java.lang.IllegalAccessError: Method ‘void android.support.v4.content.ContextCompat.()’ is inaccessible to class ‘com.google.android.gms.iid.zzd’ (declaration of ‘com.google.android.gms.iid.zzd’ appears in /data/data/com.hwindiapp.passenger/files/instant-run/dex/slice-com.google.android.gms-play-services-iid-9.0.0_b51865a18dbfbfb3651aaa54856c955adf1e354f-classes.dex) at com.google.android.gms.iid.zzd.zzeC(Unknown Source) at com.google.android.gms.iid.zzd.(Unknown Source) at com.google.android.gms.iid.zzd.(Unknown Source) at com.google.android.gms.iid.InstanceID.zza(Unknown Source) at com.google.android.gms.iid.InstanceID.getInstance(Unknown Source) at com.mainProfile.classFiles.RegisterFbLoginResCallBack$registerFBUser.processGCMID_user(RegisterFbLoginResCallBack.java:166) at com.mainProfile.classFiles.RegisterFbLoginResCallBack$registerFBUser.doInBackground(RegisterFbLoginResCallBack.java:219) at com.mainProfile.classFiles.RegisterFbLoginResCallBack$registerFBUser.doInBackground(RegisterFbLoginResCallBack.java:153) at android.os.AsyncTask$2.call(AsyncTask.java:292) at java.util.concurrent.FutureTask.run(FutureTask.java:237) at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) at […]

Gradle for Android,AAR和条件依赖项

简短forms :为AAR组织代码/ POM有哪些方法,这样使用该AAR的应用程序只有他们实际需要的依赖项? 长forms : 假设我们有一个依赖于打包为AAR(L)的Android库项目的应用程序。 L包含多个类,任何给定的应用程序(如A)都只使用这些类的子集。 例如: L可能包含本机API Level 11片段的Fragment实现,反向移植的片段和ActionBarSherlock风格的片段 L可能包含常规活动的Activity实现, FragmentActivity , ActionBarActivity和ActionBarSherlock风格的活动 L可以通过LocalBroadcastManager ,Square’s Otto和greenrobot的EventBus引发事件 等等 正如我所看到的,这些案例有两个主要共性: 应用程序通常只关心某些类。 例如,使用Otto的应用程序不关心引用greenrobot的EventBus的代码,或者使用ActionBarActivity的应用程序不关心ActionBarSherlock。 如果AAR是回购中的工件,则应用程序将不关心构建AAR所需的所有可能的上游依赖项。 例如,使用本机API Level 11片段的应用程序将不需要support-v4或actionbarsherlock ,即使AAR本身需要它们来构建AAR 如果我们使用JAR而不是AAR并转储依赖关系管理,这是相当简单的。 构建JAR将具有编译时依赖性(例如, support-v4 )。 但是,使用该JAR的应用程序可以跳过这些依赖项,只要这些应用程序不使用真正需要这些依赖项的类,生活就会很好。 但是,我很难看到如何使用build.gradle文件中指定的AAR和Maven工件完成相同的操作。 如果L具有引用上游依赖关系的dependencies块,那么当应用程序依赖于L时,应用程序将依次传递这些依赖关系。 我相当确定的一个解决方案是将L分成几个库。 例如,使用片段方案,我们可以: L1,包含本机API Level 11版本的片段的实现,以及其他场景所需的任何公共代码。 该库没有上游依赖项。 L2,其中包含使用Android Support包的片段backport的实现。 L2将依赖于L1和support-v4 。 L3,包含使用Sherlock风格片段的实现。 L3将依赖于L1和actionbarsherlock 。 然后,应用程序将选择是依赖于L1,L2还是L3,因此只会获得必要的上游依赖项(如果有的话)。 我的问题是:这是最好的解决方案吗? 或者Gradle for Android,AAR和Maven风格的工件世界还有什么东西可以让应用程序依赖单个L? 我担心库的组合爆炸可能会处理各种上游依赖关系。 我也担心奇怪的应用程序实际上需要多个实现,以及我们是否可以可靠地指定那些依赖项(例如,一个应用程序取决于L1和L2,因为那是该应用程序的作者认为应用程序需要的)。 我知道有一些应用程序可以阻止 […]

Android Studio在更新后显示错误(缺少翻译)

最近我将我的Android Studio从2.2.3 to 2.3.0更新2.2.3 to 2.3.0项目在2.2.3中运行良好但是在将项目依赖类路径从2.2.3 to 2.3.0更新2.2.3 to 2.3.0从string.xml获取了大量的Missing Translations错误。 任何人都可以告诉我它为什么会发生以及如何解决这些错误?

Android Studio中的Gradle:无法解析第三方库

我一直在尝试将我的项目从Intellij切换到Android Studio,这需要我创建一个build.gradle文件。 我知道我可以将每个作为库依赖项添加,但我理想的是希望能够使maven存储库依赖项工作。 每次我同步时,我的支持库都会很好地同步,但对于每个第三方库,我都会得到类似的结果 “错误:(30,13)无法解决:com.facebook.android:facebook-android-sdk:3.23.1” 对于每个图书馆。 buildscript { repositories { mavenCentral() } dependencies { classpath ‘com.android.tools.build:gradle:1.1.0’ } } apply plugin: ‘com.android.application’ dependencies { compile fileTree(dir: ‘libs’, include: ‘*.jar’) // Google Play Services compile ‘com.google.android.gms:play-services:6.5.87’ // Support Libraries compile ‘com.android.support:appcompat-v7:22.0.0’ compile ‘com.android.support:cardview-v7:21.0.3’ compile ‘com.android.support:gridlayout-v7:21.0.3’ compile ‘com.android.support:mediarouter-v7:21.0.3’ compile ‘com.android.support:palette-v7:21.0.3’ compile ‘com.android.support:recyclerview-v7:21.0.3’ compile ‘com.android.support:support-annotations:21.0.3’ compile ‘com.android.support:support-v13:21.0.3’ compile ‘com.android.support:support-v4:22.0.0’ […]

Android Studio多个dex文件gradle错误

我在Android Studio中运行Android应用程序时遇到此错误 UNEXPECTED TOP-LEVEL EXCEPTION: com.android.dex.DexException: Multiple dex files define Lcom/google/common/annotations/Beta; … 这是gradlew -q:app:dependencies的输出 +— project :shared +— com.google.api-client:google-api-client:1.19.0 | +— com.google.oauth-client:google-oauth-client:1.19.0 | | +— com.google.http-client:google-http-client:1.19.0 | | | +— com.google.code.findbugs:jsr305:1.3.9 | | | \— org.apache.httpcomponents:httpclient:4.0.1 | | | +— org.apache.httpcomponents:httpcore:4.0.1 | | | +— commons-logging:commons-logging:1.1.1 | | | \— commons-codec:commons-codec:1.3 | | \— com.google.code.findbugs:jsr305:1.3.9 […]

排除发布版本types的资产

我正在使用gradle构建的应用程序中导入一个android库,如下所示: dependencies { compile ‘com.example:great-lib:0.1-SNAPSHOT’ } 此库仅包含要在webview中使用的资源,js,css和图像,其布局如下: assets/ |-> great.css |-> great.min.js |-> great.min.js.map |-> js/ | |-> plop.js | |-> foo.js | … |-> img/ | … js文件夹包含源文件(与源映射一起使用)。 我想将它和.map文件包含在调试版本中,并且在发布版本中只有缩小的js,但是我找不到这样做的方法。 到目前为止,我已经尝试过: android { // this doesn’t exclude anything packageOptions { exclude ‘assets/js’ } buildTypes { release { // this does exclude the js folder, but […]

Gradle构建错误:无法访问ITest坏类文件:在版本50.0 classfile中findITest.class默认方法

我有奇怪的问题,不知道如何解决它。 我有一个默认方法的接口,如下所示: public interface ITest{ default String getText(){ return “ITest”; } } 和实现此接口的类,如下所示: public class TestClasssss implements ITest{ private String text; } 我试图在我的appunit testing项目中使用这个类。 所以,如果我在我的android的unit testing项目中复制这个类,它编译好并且所有工作都按预期工作,但是如果这个类和接口在app源文件夹中声明,应用程序不会编译并崩溃 Error:(30, 10) error: cannot access ITest bad class file: ~\ITest.class default method found in version 50.0 classfile Please remove or make sure it appears in the correct subdirectory of […]

flavorDimensions gradle错误 – Android Studio 3.0 Canary 1

我想将我的项目升级到Android Studio 3.0 Canary 1和gradle:3.0.0-alpha1插件,但是我对包含项目的flavor的正确定义存在问题。 我按照Google的官方迁移指南进行了操作: https : //developer.android.com/studio/preview/features/new-android-plugin-migration.html 在我的主应用程序build.gradle中,我按照迁移指南的建议定义了“myflavor” flavorDimensions : android { flavorDimensions “myflavor” productFlavors { dev { dimension “myflavor” minSdkVersion 21 } prod { dimension “myflavor” minSdkVersion 16 } } buildTypes { debug { signingConfig signingConfigs.debug } release { debuggable false signingConfig signingConfigs.release minifyEnabled true proguardFiles getDefaultProguardFile(‘proguard-android.txt’), ‘proguard-rules.pro’ } } dependencies { […]

无法在com.android.build.gradle.AppExtension_Decorated上find属性’xxxx’

我将这些行添加到gradle文件后出现此错误: buildTypes.each { it.buildConfigField ‘String’, ‘OPEN_WEATHER_MAP_API_KEY’, MyOpenWeatherMapApiKey } 然后日志显示: Could not find property ‘MyOpenWeatherMapApiKey’ on com.android.build.gradle.AppExtension_Decorated@c3b784 谷歌搜索的解决方案无法解决我的问题。 请告诉我我哪里错了?