我在我自己的Android设备上工作,它有许多新的API(但@hide装饰).我的目标是提供一个android sdk来开发它并使用这些新的API.
所以我的问题是:如何用这些新的API构建我自己的android sdk?
如果@hide装饰是一个问题,我可以删除它们(我不必尊重CDD)
我希望能够构建和安装我的应用程序的多个版本(同时),针对不同的环境,如开发,暂存和生产.
包中的名称AndroidManifest.xml似乎是这里的主要障碍,因为它是唯一标识应用程序的内容.我认为这将是可以简单地切换com.mydomain.prod,com.mydomain.staging并且com.mydomain.dev或某种类似的规定,但到目前为止我没有运气来了与此方法适用的封装结构.
我可以采用什么策略以尽可能少的痛苦来做到这一点?
首先,我正在尝试使用Android源代码构建Android平台,而不使用LiveWallpapers,Calendar,Contacts,Calculator,Phone,Settings等股票应用程序.
为了做到这一点,我正在修改/ build/target/product /中的 make文件,特别是包含需要构建的所有应用程序和库的变量PRODUCT_PACKAGES.
例如,我删除了以下行:
DeskClock \
Bluetooth \
Calculator \
Calendar \
Run Code Online (Sandbox Code Playgroud)
来自PRODUCT_PACKAGES :=文件generic_no_telephony.mk.
但是,当我在闪存后运行我的平板电脑时,我仍然会找到电子邮件,声音和语音记录器等应用程序.我已经在重建之前清理过了.我是否需要删除其他make文件中的更多条目?
在这里,您可以看到我在build/target/product /中对make文件所做的所有修改:
diff --git a/target/product/core.mk b/target/product/core.mk
index 1d62eb8..5474f6a 100644
--- a/target/product/core.mk
+++ b/target/product/core.mk
@@ -25,23 +25,13 @@ PRODUCT_PROPERTY_OVERRIDES := \
PRODUCT_PACKAGES += \
ApplicationsProvider \
BackupRestoreConfirmation \
- BasicDreams \
Browser \
- Contacts \
- ContactsProvider \
DefaultContainerService \
- DownloadProvider \
- DownloadProviderUi \
- HTMLViewer \
Home \
KeyChain \
- …Run Code Online (Sandbox Code Playgroud) 下面是命令行结果(GUI非常相似):
C:\Program Files (x86)\Android\android-sdk\tools>android update sdk -u -a -t 3
.... licensing stuff
Installing Archives:
Preparing to install archives
Downloading Android SDK Build-tools, revision 18.1.1
URL not found: C:\Program Files (x86)\Android\android-sdk\temp\build-tools_r18.1.1-windows.zip (Access is denied)
Done. Nothing was installed.
Run Code Online (Sandbox Code Playgroud)
我没有在网上找到任何有用的东西.可能是什么问题呢?
什么是"Android SDK工具","Android SDK平台工具"和"Android SDK构建工具"?他们之间有什么区别?

更新其他软件包后,该软件包的旧版本将被删除,但正如您所看到的,我同时拥有4个版本的"Android SDK构建工具".你知道为什么吗?
当我在我的PC上工作时,我有一个成功的构建项目,并且我已经提交并将其推送到我的Git仓库,然后再迁移到OSX.
现在,我在OSX上安装了Android studio最新版本并试图构建同一个项目,它在构建资源时出错.在Manifest中构建资源时,会出现多个错误
找不到与给定名称匹配的资源
对于drawables和字符串.
通过网络浏览,我想可能更新版本的gradle有一些问题.因此,我将AS的安装降级为AS 1.0并使用旧的gradle 2.2.不幸的是,这个版本的gradle也会出现同样的错误.
我build.gradle看起来如下:
apply plugin: 'com.android.application'
android {
compileSdkVersion 21
buildToolsVersion "21.1.2"
defaultConfig {
applicationId "xxx"
minSdkVersion 16
targetSdkVersion 21
versionCode 4
versionName "1.3"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
sourceSets {
main {
res.srcDirs = [
"/src/main/res"
]
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile files('libs/thermodosdk-1.0.18.jar')
compile 'com.android.support:appcompat-v7:21.0.3'
compile 'com.google.android.gms:play-services:6.5.87'
compile 'com.android.support:support-v4:21.0.3'
Run Code Online (Sandbox Code Playgroud)
将build.gradle在顶层有以下类路径:
dependencies {
classpath 'com.android.tools.build:gradle:1.0.0'
}
Run Code Online (Sandbox Code Playgroud)
堆栈跟踪:
Information:Gradle …Run Code Online (Sandbox Code Playgroud) android gradle android-build android-resources android-studio
我们在构建 multidex 应用程序时遇到问题。我们java.lang.NoClassDefFoundError在应用程序启动期间不断收到不同的错误。
我们注意到它们很可能与 multidex 问题有关。由于启动应用程序所需的类必须存在于主 DEX 文件中,并且它们不包含在classes.dex. 我们执行了https://developer.android.com/studio/build/multidex.html#keep 中描述的步骤,
但我们在 中指定的类multidex-config.txt,甚至在 中指定的类multidex-config.pro没有放置在主 dex 文件 ( classes.dex) 中。
你们有使用multiDexKeepFile或 multiDexKeepProguard 的经验吗?它真的有效吗?有什么技巧可以使它工作并将文件放在classes.dex?
我的gradle文件存在运行时问题.我将此compile 'com.google.android:flexbox:0.3.1'作为编译时依赖项添加到我的Gradle文件中.我遇到了一个错误,并将其添加到我的项目级Gradle文件中.
maven {
url "https://maven.google.com"
}
Run Code Online (Sandbox Code Playgroud)
添加上述内容后,最终看起来很喜欢这个
allprojects {
repositories {
jcenter()
maven {
url "https://maven.google.com"
}
}
}
Run Code Online (Sandbox Code Playgroud)
在我的应用程序级别Gradle文件中添加上述内容后,当我尝试运行我的应用程序时,我现在遇到了不同的错误.所以我按照SO的一些答案做了以下几点.
导航到路径projectName\.idea\libraries并删除包含除当前版本25.3.1
3 之外的支持库版本的文件.为了解决错误,我从我的应用程序级Gradle文件中进一步删除了该行,
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2',{exclude group:'com.android.support',module:'support-annotations'})
现在,最终的Gradle文件看起来像这样,带有错误,
错误:
Error:(28, 8) error: cannot access ActivityCompatApi23
class file for android.support.v4.app.ActivityCompatApi23 not found
Run Code Online (Sandbox Code Playgroud)
我的Gradle文件
apply plugin: 'com.android.application'
android {
compileSdkVersion 25
buildToolsVersion "25.0.3"
defaultConfig {
applicationId "com.example.test"
minSdkVersion 19
targetSdkVersion 25
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
vectorDrawables.useSupportLibrary = true
}
buildTypes {
release {
minifyEnabled false …Run Code Online (Sandbox Code Playgroud) android gradle android-build android-gradle-plugin android-flexboxlayout
我使用下面的代码显然根据产品风格自动生成pro guard映射文件.
buildTypes {
release {
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
applicationVariants.all { variant ->
if (variant.getBuildType().isMinifyEnabled()) {
variant.assemble.doLast {
copy {
from variant.mappingFile
into "${rootDir}/proguardTools"
rename { String fileName ->
"mapping-${variant.name}.txt"
}
}
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
将android studio升级到3.0之后,它会显示一条警告说isMinifyEnabled()已弃用,我无法找到任何解决方案或替代方案isMinifyEnabled().有任何帮助提前感谢吗?
android gradle android-build android-gradle-plugin android-gradle-3.0
我知道这是一个非常基本的问题.但我对原生的android开发很新,我无法绕过什么是什么.
我使用Android Standalone SDK而不使用Android Studio,因此请相应指导.
假设我想为API级别19构建我的应用程序.我需要安装什么级别的平台工具和构建工具.
这就是我目前所拥有的
因为我想为我安装的API 19构建.我需要版本19 Android SDK build tools还是更高版本?
请告诉我,每个术语在外行人的条件中意味着什么.
-谢谢