小编Tac*_*0sS的帖子

Android studio将外部项目添加到build.gradle

我有一个示例项目,具有以下设置:

/root
  + Pure Java Lib
  + Android Test Lib
  + Android Test Project
Run Code Online (Sandbox Code Playgroud)

" 测试项目 "依赖于" 测试库 ",最后一个依赖于" 纯Java库 " 编译项目并启动此设置工作正常.

我现在正在考虑导入我之前的Eclipse工作区并使用Android studio,问题是项目设置不同,我想保持这种方式.

例如,如果要使用前面的示例:

/root
  + Android Test Lib
  + Android Test Project

/Some Other folder (another repository for example)
  + Pure Java Lib
Run Code Online (Sandbox Code Playgroud)

我已经尝试了很多配置,但是我找不到引用父文件夹范围之外的项目的方法(示例中的" root ").

在许多平台/模块中,你可以使用'..'在文件夹中向上移动,但这对我不起作用,也许我用错了.

有谁知道Gradle如何实现这一目标?

UPDATE

我会尝试更通用:

/C:/

  /Project A
    + Module 1 - Pure Java
    + Module 2 - Android Test Lib
    + Module 3 - Android Test Project

  /Project B
    + Module 1 …
Run Code Online (Sandbox Code Playgroud)

android gradle android-library android-studio

137
推荐指数
4
解决办法
9万
查看次数

Gradle和Multi-Project结构

我试图了解如何处理以下项目设置:

?Top Android Project
?
??? Project 1 - (Pure Java Modules)
?    ?
?    ??? Module A1
?    ??? Module B1
?    :
?    ??? Module Z1
?  
??? Project 2 - (Android Libraries Modules)
?    ?
?    ??? Module A2
?    ??? Module B2
?    :
?    ??? Module Z2
?  
??? Module - Actual Android Project
Run Code Online (Sandbox Code Playgroud)

在当前的设置中,我在每个模块中都有一个build.gradle,我真正讨厌这个设置的是build.gradle的所有内容在模块之间重复.

事实上,我想在大多数情况下都使用相同的逻辑," 纯Java模块 "都是基础模块,我想将输出,JavaDoc和源,以及部署到某个远程存储库(*默认).

另一方面,' 纯Java模块 '的一些模块我想有第二个议程,例如,除了默认*构建之外,我想部署一个具有特定项目的依赖项的jar,或类似的东西.

在构建Actual Android Project时,我希望模块能够在默认的*build中编译,最后为我的所有Android项目配置一个默认的build.gradle,这些项目很多,我不想复制它文件.

================================================== =============

我想我正在寻找的东西就像Maven父母pom,但由于我不完全理解Gradle是如何工作的,我打开这个给你们分享你的想法......

考虑到重复相同的构建文件(我敢说)是不可接受的,因为我可能想要在所有模块的所有构建逻辑中更改某些内容

处理这种设置的最佳方法是什么?

android multi-project gradle android-studio build.gradle

61
推荐指数
2
解决办法
3万
查看次数

Android版本检查

我不是新的Android和我很好用的版本处理,以及如何调节它,但是当我看到是困扰我...

// Check if we're running on Android 5.0 or higher
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    // Call some material design APIs here
} else {
    // Implement this feature without material design
}
Run Code Online (Sandbox Code Playgroud)

在任何设备前棒棒糖此行将崩溃的应用程序,因为Build.VERSION_CODES.LOLLIPOP字段不存在......所以这是为什么在文档中推荐的解决方案?

我真的很想知道我错过了什么?

android android-version

50
推荐指数
3
解决办法
5万
查看次数

在库清单中使用$ {applicationId}

我正在开发一个使用内部ContentProvider的SDK,我想在一些项目中使用这个SDK,并在库清单中声明它,所以我试过这个:

    <provider
        android:name=".core.MyContentProvider"
        android:authorities="${applicationId}"
        android:exported="false"/>
Run Code Online (Sandbox Code Playgroud)

会发生什么是$ {applicationId}被库的packageName替换而不是顶部的apk相关的applicationId ...

有没有办法确保启动 applicationId将被放置在android:authority值?

android gradle manifest-merging

20
推荐指数
2
解决办法
1万
查看次数

无法确定Android设备上是否安装了Google Play商店

这是检查设备上已安装软件包的简单问题...在我将操作系统升级到2.3.5之前,我可以使用以下代码找到Market/Play商店:

private static final String GooglePlayStorePackageName = "com.google.market";

void someMethod() {
    packageManager = getApplication().getPackageManager();
    List<PackageInfo> packages = packageManager.getInstalledPackages(PackageManager.GET_UNINSTALLED_PACKAGES);
    for (PackageInfo packageInfo : packages) {
        if (packageInfo.packageName.equals(GooglePlayStorePackageName)) {
            googlePlayStoreInstalled = true;
            break;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

由于某些原因在更新后,我根本无法找到包名称来指示应用程序已安装,虽然它在设备上,我可以访问市场.

包名称是否已更改?或者我正在以错误的方式看待这个?

谢谢,

亚当.

更新:

这是检查包是否安装的愚蠢方法...更好的方法是:

protected final boolean isPackageInstalled(String packageName) {
    try {
        application.getPackageManager().getPackageInfo(packageName, 0);
    } catch (NameNotFoundException e) {
        return false;
    }
    return true;
}
Run Code Online (Sandbox Code Playgroud)

android google-play

17
推荐指数
3
解决办法
1万
查看次数

使用IntelliJ与Android插件,而不是使用Android Studio

我想知道使用Android Studio,Google提供使用,使用IntelliJ Base IDE和安装Android插件之间是否有任何区别?

它会影响项目和模块处理吗?

它会影响方面吗?

android intellij-idea android-studio

13
推荐指数
3
解决办法
8786
查看次数

确保从Play-Store安装Android应用程序

我最近发现了BlackMarket应用程序,这是一个谷歌Play-Store应用程序,这些人从Play-Store获取付费应用程序,让他们的用户下载并免费使用它.

作为一个计划为我的应用程序收取负担的开发人员,这让我感到烦恼,我想确保我的应用程序是通过Play-Store或我批准的任何商店安装的.

我想验证此类事情的唯一方法是通过广告系列跟踪,但自从Google分析v2以来,广告系列的跟踪工作是在Jar的接收器中完成的.

有没有其他方法来确定我的应用程序的安装来源?有没有办法拦截广告系列跟踪数据?

谢谢.

android google-analytics android-install-apk google-play campaign-monitor

13
推荐指数
1
解决办法
2716
查看次数

在Android上打开特定的应用程序设置屏幕?

我试图找出在Android上打开特定应用程序设置屏幕的意图值,允许您"清除数据","强制停止","卸载"...

谢谢,

亚当.

android android-intent

12
推荐指数
2
解决办法
3510
查看次数

Android版本不会合并库中的清单

我们有多个项目,具体取决于许多Android lib模块.为避免应用清单中出现重复的xml标记,我们将相关的接收者,服务和活动放在各自的模块中.

直到今天,我们使用:

  • Android Studio:2.2.1
  • gradle:2.1.3
  • buildToolsVersion:23.0.3

今天我们更新到:

  • Android Studio:2.3
  • gradle:2.3.0
  • buildToolsVersion:25.0.0

直到这个更新,一切正常,并且清单合并,我们有冲突,我们修复它们.截至我们所做的更新,清单根本不会合并!

---更新1 ---

我们已经使用了Merged Manifest视图,并且发现它只是不包含合并中的清单,它从模块清单中唯一合并的是权限,例如,如果我向a添加新权限模块显示它只会合并它而不是其他元素!

什么都没合并

我保证合并有很多东西!

---更新2 ---

似乎一切之外的应用程序标记其合并到主清单,一切都的应用程序标记,它没有.

---更新3 ---

不合并的模块:

摇篮:

apply plugin: 'com.android.library'

android {
    compileSdkVersion 23
    buildToolsVersion '25.0.0'

    defaultConfig {
        minSdkVersion 16
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
        debug {
            jniDebuggable true
        }
    }
}

dependencies {
    compile project(path: ':android-infra')
    compile 'com.google.android.gms:play-services-gcm:9.0.0'
    compile project(path: ':engine-core-server')
    compile project(path: ':engine-core-aneeda')
} …
Run Code Online (Sandbox Code Playgroud)

android android-manifest android-studio android-gradle-plugin

12
推荐指数
2
解决办法
5525
查看次数

过度填充Logcat会导致窗口冻结,直到执行硬重启

标题不言自明,但我会添加一些我一路上注意到的指针.我希望任何在开发Android时都能体验到最终结果的人试图重现这个并看看这种情况是否真的如此,如果有人有解决方案,那会让我很高兴:),这是非常令人沮丧的开发时我需要硬重启我的电脑......

当Logcat过度填充时会发生崩溃.过度填充我的意思是,从某个时间点开始,如果您将设备连接在调试模式中一段时间​​,并且您将查看Logcat视图,它将仅显示添加到日志中的新"delta"行过去的短暂间隔约为2秒.

如果您要注意,当Logcat过度填充已调试的设备时,对用户交互的响应很慢(这可能是您的指示,Logcat在测试您的应用程序时过度填充),并执行其他操作非常慢.

如果你要保持设备连接并添加更多日志,那么间隔时间为5-10秒,Eclipse开始表现得很奇怪,之后,你无能为力,Windows 7冻结,只有硬重启允许你回去工作了.

如果我只是在运行应用程序的情况下将设备连接到调试模式,我每次都可以重现这个.

我用Google搜索了这个,然后什么都没有.我假设如果我和我的同事遇到这个(我们有相同的Eclipse设置),那么其他人也应该经历这个,所以在发布错误之前,我想确认一下......

细节:

Windows 7的

Eclipse 3.6

ADT 10.0.0.v201102162101-104271(今日最新消息)

谢谢,

亚当.

android adt logcat android-logcat

11
推荐指数
1
解决办法
2496
查看次数