我最近在自定义 Android 版本中遇到了一个奇怪的问题?我已经有一个可用的 ROM 几个月了,使用这个 ROM 我已经能够将平台签名的 apk 安装到用户空间 (/data/app)。最近,在重建 ROM 后,我一直无法安装那些相同的 apk。任何安装平台签名应用程序的尝试(无论是通过 adb install 还是 pm install)都会产生以下消息:
Failure [INSTALL_FAILED_INVALID_INSTALL_LOCATION]
Run Code Online (Sandbox Code Playgroud)
通过Android源代码挖掘后,我发现了以下相关代码块:
if ((compareSignatures(pkg.mSignatures, s1) == PackageManager.SIGNATURE_MATCH)) {
Slog.w(TAG, "Cannot install platform packages to user storage");
mLastScanError = PackageManager.INSTALL_FAILED_INVALID_INSTALL_LOCATION;
return null;
}
Run Code Online (Sandbox Code Playgroud)
根据我的阅读,似乎永远不应该允许在用户空间中安装系统应用程序。最初在用户空间安装系统应用程序的情况是否异常?是否可以在用户空间中安装平台签名的应用程序,如果可以,如何安装?
我正在一个新的硬件平台上工作,我需要在该平台上刷新 Android 操作系统。对于初始测试,我需要停止 android init.rc 文件中的所有 Android 服务。我在我的代码库中搜索了 init.rc 文件
./bootable/diskinstaller/init.rc
./bootable/recovery/etc/init.rc
./system/core/rootdir/init.rc
,我需要知道如何识别 init.rc 中的 android 服务?我正在考虑禁用 android dalvik VM。停止所有与 android 相关的服务是停止 dalvic VM 还是仅一项一项禁用所有服务?谢谢!
****[ 35% 11837/33004] build out/target/common/obj/JAVA_LIBRARIES/sdk_v21_intermediates/classes.jack
FAILED:/bin/bash -c
"
(mkdir -p out/target/common/obj/JAVA_LIBRARIES/sdk_v21_intermediates/)
&& (java -Xmx3500m -jar out/host/linux-x86/framework/jill.jar --output out/target/common/obj/JAVA_LIBRARIES/sdk_v21_intermediates/classes.jack.tmpjill.jack prebuilts/sdk/21/android.jar)
&& (mkdir -p out/target/common/obj/JAVA_LIBRARIES/sdk_v21_intermediates/classes.jack.tmpjill.res)
&& (unzip -qo prebuilts/sdk/21/android.jar -d out/target/common/obj/JAVA_LIBRARIES/sdk_v21_intermediates/classes.jack.tmpjill.res)
&& (find out/target/common/obj/JAVA_LIBRARIES/sdk_v21_intermediates/classes.jack.tmpjill.res -iname \"*.class\" -delete)
&& (JACK_VERSION=2.26.RELEASE out/host/linux-x86/bin/jack @build/core/jack-default.args --verbose error -D jack.import.resource.policy=keep-first -D jack.import.type.policy=keep-first --import out/target/common/obj/JAVA_LIBRARIES/sdk_v21_intermediates/classes.jack.tmpjill.jack --import-resource out/target/common/obj/JAVA_LIBRARIES/sdk_v21_intermediates/classes.jack.tmpjill.res --output-jack out/target/common/obj/JAVA_LIBRARIES/sdk_v21_intermediates/classes.jack)
&& (rm -rf out/target/common/obj/JAVA_LIBRARIES/sdk_v21_intermediates/classes.jack.tmpjill.res)
&& (rm out/target/common/obj/JAVA_LIBRARIES/sdk_v21_intermediates/classes.jack.tmpjill.jack)
" GC overhead limit exceeded Try increasing heap size with java option '-Xmx' Warning: This may have produced partial or corrupted output. …
如果我在android studio中正常生成构建,它将生成具有大小的apk,但是当我为相同的代码生成带签名的apk时,会增加apk的大小吗?
在我的情况下,未签名的apk大小为7856 kb,对于签名的apk则为8680 kb。它增加了824 kb,为什么?
android android-build apk android-install-apk android-studio
我在 Playstore 上上传了一个版本的应用程序。我必须上传该应用程序的更新版本,该版本现在具有基于位置的服务(融合位置),因此我对位置进行了权限检查。上传谷歌播放时显示警告。
!添加了新权限警告拥有版本代码为 14 的 APK 的用户可能需要接受一个或多个 android.permission.ACCESS_COARSE_LOCATION 和 android.permission.ACCESS_FINE_LOCATION 权限,这可能导致他们无法升级到此版本的应用程序。提示确保新权限是必需的,并考虑在此版本的新增内容文本中提及这些权限。
这只是提示还是我需要处理的问题?
我正在使用大型机构建项目。
每次重启后 Android Studio 3.3 预览说
The IDE updated the following run configuration: someConfiguration
并真正改变了它:它增加了新的构建步骤:Gradle 构建。造成工程双建。
如何禁用此自动修复?
大多数 android 开发者必须在 2019 年 8 月之前收到来自 Google 的消息,要求更新应用程序以支持 64 位架构。此处提供了详细说明: 确保您的应用程序支持 64 位设备
在我的应用程序中,我发现使用了 32 位库,因此我必须更新应用程序以支持 64 位架构。正如上面指南中所建议的,我在build.gradle文件中添加了以下内容:
ndk.abiFilters = 'armeabi-v7a' 'arm64-v8a' 'x86' 'x86_64'
Run Code Online (Sandbox Code Playgroud)
但是,在那之后,我在构建应用程序时遇到以下错误:
错误:(35, 0) 在 DefaultConfig_Decorated{name=main, dimension=null, minSdkVersion=DefaultApiVersion{mApiLevel=16, mCodename='null'}, targetSdkVersion 上找不到参数 [arm64-v8a] 的方法 armeabi-v7a() =DefaultApiVersion{mApiLevel=28, mCodename='null'}, renderscriptTargetApi=null, renderscriptSupportModeEnabled=null, renderscriptSupportModeBlasEnabled=null, renderscriptNdkModeEnabled=null, versionCode=3, versionName=1.2, applicationId=, testApplicationId=null, testInstrumentationRunner=null, testInstrumentationRunnerArgu ={}、testHandleProfiling=null、testFunctionalTest=null、signingConfig=null、resConfig=null、mBuildConfigFields={}、mResValues={}、mProguardFiles=[]、mConsumerProguardFiles=[]、mManifestPlaceholders={}、mWearAppUnbundled=null}输入 com.android.build.gradle.internal.dsl。默认配置。
有没有人已经尝试将应用程序更新到 64 位?任何想法,如何解决这个问题?
我正在尝试在我遵循此链接的 Android 项目中进行 gradle 构建扫描。
这是我的顶级 gradle 文件。
buildscript {
ext.kotlin_version = '1.2.71'
repositories {
google()
jcenter()
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.2.1'
classpath 'com.google.gms:google-services:4.2.0'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath 'com.google.firebase:firebase-plugins:1.1.5'
}
}
plugins {
id 'com.gradle.build-scan' version '1.16'
}
buildScan {
licenseAgreementUrl = 'https://gradle.com/terms-of-service'
licenseAgree = 'yes'
}
ext {
compileSdkVersion = 27
minSdkVersion = 16
targetSdkVersion = 27
zendeskSdkVersion = "2.0.0"
appCompatVersion = "27.0.2"
}
allprojects {
repositories {
google()
mavenCentral()
jcenter()
}
}
Run Code Online (Sandbox Code Playgroud)
当我尝试将项目与 gradle 文件同步时出现此错误
Plugin [id: …Run Code Online (Sandbox Code Playgroud) 我正在更新 3.4 版的 Android Studio 和插件(5.1.1 版的 gradle)当我尝试构建项目时,出现错误
java.util.zip.ZipException:zip 文件为空
我下载了 gradle-5.1.1-all.zip 并尝试替换现有的但没有成功。
任何想法是什么导致此错误?
日志
Caused by: org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:transformClassesWithDexBuilderForDevDebug'.
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:95)
at org.gradle.api.internal.tasks.execution.ResolveTaskOutputCachingStateExecuter.execute(ResolveTaskOutputCachingStateExecuter.java:91)
at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:57)
at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:119)
at org.gradle.api.internal.tasks.execution.ResolvePreviousStateExecuter.execute(ResolvePreviousStateExecuter.java:43)
at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:93)
*****
... 6 more
Caused by: java.lang.RuntimeException: com.android.build.api.transform.TransformException: java.util.zip.ZipException: zip file is empty
at com.android.builder.profile.Recorder$Block.handleException(Recorder.java:55)
at com.android.builder.profile.ThreadRecorder.record(ThreadRecorder.java:104)
at com.android.build.gradle.internal.pipeline.TransformTask.transform(TransformTask.java:230)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
*****
Caused by: com.android.build.api.transform.TransformException: java.util.zip.ZipException: zip file is empty
at com.android.build.gradle.internal.transforms.DexArchiveBuilderTransform.transform(DexArchiveBuilderTransform.java:442)
at com.android.build.gradle.internal.pipeline.TransformTask$2.call(TransformTask.java:239)
at com.android.build.gradle.internal.pipeline.TransformTask$2.call(TransformTask.java:235)
at com.android.builder.profile.ThreadRecorder.record(ThreadRecorder.java:102)
... 77 …Run Code Online (Sandbox Code Playgroud) android gradle android-build build.gradle android-gradle-plugin
我们正在构建一个使用HighCharts Android包装库*的应用程序。在开发过程中,应用程序通过运行命令安装在设备/模拟器上,一切正常。
但是,在创建构建视图Make Project、Generate Signed APK或由CI/DC Pipelines生成的构建时- 应用程序总是崩溃。
Highcharts调用时在某处发生崩溃Gson(需要在Gradle构建文件中作为依赖项在外部提供)。Gson然后抛出java.lang.ArrayIndexOutOfBoundsException异常。(下面的堆栈跟踪)
Proguard相关(我认为) - 也发生在debug构建中,并且keep为了安全起见,还添加了激进的声明。Highcharts Android尚不兼容Hilt DI,它深深嵌入我们的代码中。显然,Highcharst期望Context提供给它的View构造函数的Activity类型是类型,Hilt因为 in 将 aFragmentContextWrapper注入到Fragments带有@AndroidEntryPoint.
此处的说明和解决方法
.APK在 …android highcharts android-build android-highcharts dagger-hilt
android-build ×10
android ×8
apk ×2
android-ndk ×1
build.gradle ×1
dagger-hilt ×1
google-play ×1
gradle ×1
highcharts ×1
java ×1