简述:
系统:Windows 7 64bit
Android版本:Android Studio 3.0.0.18
1、monkeyrunner-26.0.0 SWT错误
问题:
SWT folder '..\framework\x86_64' does not exist.
Pleaseset ANDROID_SWT to point to the folder containing swt.jar for your platform.
/tools/bin/monkeyrunner.bat执行报错无法使用:
原因为bat脚本有两处错误
解决方法:
1>old:
ifexist %frameworkdir%\%jarfile% goto JarFileOk
set frameworkdir=lib
modify:
ifexist %frameworkdir%\%jarfile% goto JarFileOk
set frameworkdir=..\lib
2 >old:
call"%java_exe%" -Xmx512m"-Djava.ext.dirs=%frameworkdir%;%swt_path%"-Dcom.android.monkeyrunner.bindir=..\framework -jar %jarpath% %*
modify:
call"%java_exe%" -Xmx512m"-Djava.ext.dirs=%frameworkdir%;%swt_path%"-Dcom.android.monkeyrunner.bindir=..\..\platform-tools -jar %jarpath% %*
2、INSTALL_FAILED_TEST_ONLY错误
问题:
Failure[INSTALL_FAILED_TEST_ONLY: installPackageLI]
解决方法:1 >
adb install -t *.apk
2 >
adb push *.apk /tmp
adb shell pm install -t/tmp/*.apk
3 >
修改AndroidManifest.xml中android:testOnly="true" 改成 android:testOnly="false",或者直接去掉。
3、如何获取app 的包名和activity 名
1> 使用aapt命令获取
使用命令之前要确保配置好aapt的环境变量
Android Studio 3.0.0.18的环境变量应该设置为 ANDROID_SDK_ROOT 而非 ANDROID_SDK_HOME,否则会影响虚拟机的启动。
新建系统环境变量ANDROID_SDK_ROOT为:
C:\Users\Hebbe\AppData\Local\Android\Sdk
然后在path中加入:
%ANDROID_SDK_ROOT%\platform-tools;%ANDROID_SDK_ROOT%\tools;%ANDROID_SDK_ROOT%\build-tools\27.0.3;%ANDROID_SDK_ROOT%\tools\bin;%ANDROID_SDK_ROOT%\tools\lib;%ANDROID_SDK_ROOT%\emulator;
其中%ANDROID_SDK_ROOT%\build-tools\27.0.3;为aapt的环境配置。
配置好环境后便可使用aapt命令了:
aapt dump badging E:\Test\ weixin_1220.apk aapt dump badging E:\Test\ weixin_1220.apk > E:\Test\log.txt
2 >使用重签名工具,如Robotium
其他方法请参考:
获取app的包名和activity名
4、AS 3.0新的依赖方式
1 > Android Studio版本更新至3.0了,更新后,连带着com.android.tools.build:gradle 工具也升级到了,在3.0.0中使用了最新的Gralde4.0 里程碑版本作为gradle的编译版本,该版本gradle编译速度有所加速,更加令人兴奋的是完全支持Java8。当然,对于Kotlin的支持,在这个版本也有所体现,Kotlin插件默认是安装的。
依赖方式如图所示:
2 > 当我们使用 Android Studio3.0新建项目时会发现,默认的依赖由之前的compile更改为implementation了
3.0 以下版本 build.gradle中依赖的写法:
compile fileTree(dir: 'libs', include: ['*.jar'])
但在3.0的写法为
implementation fileTree(dir: 'libs', include: ['*.jar']) 或 api fileTree(dir: 'libs', include: ['*.jar'])
3 > 区别 在3.0版本中,compile指令被标注为过时方法,而新增了两个依赖指令,一个是implementation和api,这两个都可以进行依赖添加,但是有什么区别呢?
api:完全等同于compile指令,没区别,你将所有的compile改成api,完全没有错。
implementation:这个指令的特点就是,对于使用了该命令编译的依赖,对该项目有依赖的项目将无法访问到使用该命令编译的依赖中的任何程序,也就是将该依赖隐藏在内部,而不对外部公开。首选。
4 > 依赖项说明
下面是2.x版本依赖的说明,括号里对应的是3.0版本的依赖方式。
compile(api) 是最常用的方式,使用该方式依赖的库将会参与编译和打包 provided(compileOnly) 只在编译时有效,不参与打包,可在moudle中使用该方式依赖。
比如com.android.support,gson这些使用者常用的库,避免冲突apk(runtimeOnly) 只在生成apk的时候参与打包,编译时不会参与,很少用 testCompile(testImplementation)
只在单元测试代码的编译以及最终打包测试apk时有效 debugCompile(debugImplementation) 只在debug模式的编译和最终的debug apk打包时有效 releaseCompile(releaseImplementation) 仅仅针对Release模式的编译和最终的Release apk打包
5、AS3.0 替代Hierarchy Viewer的新方案
Android Studio 替代 Hierarchy Viewer的新方案是Layout Inspector。
启动方式:在Android Studio点击“Tools” -> “Android” -> “Layout Inspector” 。
6、 adb Install 安装apk 常见错误列表
INSTALL_FAILED_ALREADY_EXISTS
程序已经存在
INSTALL_FAILED_INVALID_APK
无效的APK
INSTALL_FAILED_INVALID_URI
无效的链接
INSTALL_FAILED_INSUFFICIENT_STORAGE
没有足够的存储空间
INSTALL_FAILED_DUPLICATE_PACKAGE
已存在同名程序
INSTALL_FAILED_NO_SHARED_USER
要求的共享用户不存在
INSTALL_FAILED_UPDATE_INCOMPATIBLE
版本不能共存
INSTALL_FAILED_SHARED_USER_INCOMPATIBLE
需求的共享用户签名错误
INSTALL_FAILED_MISSING_SHARED_LIBRARY
需求的共享库已丢失
INSTALL_FAILED_REPLACE_COULDNT_DELETE
需求的共享库无效
INSTALL_FAILED_DEXOPT
dex优化验证失败
INSTALL_FAILED_OLDER_SDK
系统版本过旧
INSTALL_FAILED_CONFLICTING_PROVIDER
存在同名的内容提供者
INSTALL_FAILED_NEWER_SDK
系统版本过新
INSTALL_FAILED_TEST_ONLY
调用者不被允许测试的测试程序
INSTALL_FAILED_CPU_ABI_INCOMPATIBLE
包含的本机代码不兼容
CPU_ABIINSTALL_FAILED_MISSING_FEATURE
使用了一个无效的特性
INSTALL_FAILED_CONTAINER_ERROR
SD卡访问失败
INSTALL_FAILED_INVALID_INSTALL_LOCATION
无效的安装路径
INSTALL_FAILED_MEDIA_UNAVAILABLE
SD卡不存在
INSTALL_FAILED_INTERNAL_ERROR
系统问题导致安装失败
DEFAULT
未知错误
会持续更新.....