apk

将App设置为Android系统应用

荒凉一梦 提交于 2020-03-10 17:20:01
有些App是和一些设备厂商合作,将我们的app提供给设备厂商,厂商将我们的app设置为系统应用,这样可以获得系统应用权限,比如reboot,shutdown这些。但是我们平常开发调试时为了方便是直接运行在模拟器上的,这就需要我们做一些处理,将模拟器ROOT以后,然后将我们的apk push到系统的system/priv-app目录下,这样便可以将我们的app设置为系统应用。下面说一下详细的步骤。 参考大神的方案: 搞机:AS自带模拟器AVD Root 和 Xposed安装 一、 准备工作 我们需要下载8.0以下的不带Google API 的x86系统做为模拟器的系统,这里我直接选择了7.1的 模拟器名字可以取一个简单点,等下方便在cmd中输入。 然后再下载supersu和re管理器。这里为大家准备好了,自行提取: 百度云盘地址:https://pan.baidu.com/s/1Jt7gAjB-kxSizlL70yYduw 然后将你的App打包出apk,然后将apk文件中的lib文件夹中的x86的.so文件都解压出来(因为我们这里的模拟器是x86的,所以只需要解压x86的就行),没有就跳过。 二、开搞 2.1 root 首先到sdk的tools的目录下打开cmd终端,然后运行emulator -avd root -writable-system,将模拟器启动

安卓V1、V1+V2签名

你。 提交于 2020-03-09 15:28:27
最近做跟华为对接定制rom的事情,涉及到了签名问题,以前都是开发工具直接打出签名包,基本没怎么用命令行的形式进行签名,所以这次记录下,方便后期再遇到。 注意:对apk签名时,当前命令行所在的目录就是apk所在的目录(cd apk目录) 一、V1签名 直接在命令行输入 jarsigner -verbose -keystore 111 -signedjar 222 333 444 111:你的签名文件 222:签名成功后输出的apk的名字 333:需要签名的apk的名字 444:你的签名中的 Key alias 111 222 333 处其实是文件的路径+文件名字,但是我一般不写路径,直接写名字,所以成生成的apk直接会在当前文件夹下了,而且还要保证签名文件和待签名的apk所在同一个目录下。 Key alias是啥? 举例: jarsigner -verbose -keystore uclass_starter.jks -signedjar uclass_starter.apk uclass_starter_update.apk my_class uclass_starter.jks(签名文件) uclass_starter.apk (希望签名成功之后的apk名字就叫uclass_starter) uclass_starter_update.apk(待签名的apk的名字是uclass

安卓修改本机时间

[亡魂溺海] 提交于 2020-03-07 13:27:45
前言:安卓修改时间函数 SystemClock.setCurrentTimeMillis()。函数很简单,实际使用起来非常费事。本人系初学者,很多大佬回答都是运行什么脚本,但是实际我连第一步都不知道怎么做。 应用情景:安卓机为工程使用,没联网,而且由于板子电路问题,容易出现时间错误,需要人为手动调整时间。非首次将安卓源码的初始时间更改。使用IDE为Android Studio(网上好多回答都是Eclipse) 方案一: SystemClock.setCurrentTimeMillis()函数一直调用不成功,网上大部分回答都是在AndroidManifest.xml里的头添加android:sharedUserId=”android.uid.system”,但是实测根本不行,只要加入这句话,编译就会一直出现错误。大致意思就是权限不对称。也就是需要root。 方案二:还有一种用代码修改的,大致思路就是获取Linux的su(管理账户)然后输入Linux代码脚本进行时间修改。大致函数是Process process = Runtime.getRuntime().exec(“su”),然后在执行-date函数。查看安卓源码,这个su应该出现在xbin位置(可能与安卓版本有关)。这个Linux脚本也是不报错,然后无法更改时间,执行不成功。 方案三:修改Android.mk文件,加入LOCAL

关于多渠道打包的那些事儿~

岁酱吖の 提交于 2020-03-06 12:12:15
Android渠道包在我国是一个特殊的名词,因为Google无法使用,自然Googleplay也无法用。 所以我国的应用市场多种多样,应用宝、小米市场、豌豆荚…为了方便用户下载和监督每个市场我们应用下载和推广情况,对发布在每个市场上的apk打上烙印是必须的一步,这就是多渠道apk的问题,“渠道”就是给apk打上的烙印。 下面我们围绕三个问题来说一下渠道包的问题: 一.Android渠道包是什么?什么是渠道包? 二.多渠道打包的使用场景及意义? 三.多渠道打包的推荐? 几百个应用市场,一个一个的打包肯定是耗时费力。我推荐一种比较好的办法,可以使用[shareinstall渠道统计],只需要把官方的SDK集成到包里面,按照官方文档一步步来。 在Apk文件中的META-INF文件夹中写入以渠道号命名的方式来配置,据说900多个渠道不到一分钟就能打完。但是缺点也是有的,你需要维护一个gradle脚本,为每一种渠道写入一个以渠道名命名。 来源: 51CTO 作者: 一只技术怪 链接: https://blog.51cto.com/14686870/2475912

Android apk反编译 记录

霸气de小男生 提交于 2020-03-04 03:38:57
反编译中使用到的工具: apktool.jar & apktool.bat :用于反编译apk中的资源文件,或者将反编译后的apk重新编译成apk文件。 还原后的apk需要签名才能使用。 dex2jar: 将apk解压后的classes.dex文件,放在工具目录下运行d2j-dex2jar.bat classes.dex,获区对应classes-dex2jar.jar文件,直接用jd-gui查看源码java文件。 JD-GUI: 直接查看classes-dex2jar.jar代码 完整工具包,本站下载。 ♦ apktool使用方法: 反编译: 将test.apk放到apktool同级目录,使用cmd输入指令: apktool d test.apk 默认会在同级目录生成包含apk资源文件的test文件夹。 重新打包成apk 在apktool目录,输入命令: apktool b test apk被重新打包到test/dist文件夹下。 ♦ dex2jar & JD-GUI使用方法 将test.apk后缀名改为zip/rar解压后取得classes.dex文件,将此文件放到dex2jar目录下,运行命令 d2j-dex2jar.bat classes.dex 同目录下生成 classes-dex2jar.jar 文件。使用JD-GUI打开classes-dex2jar

android apk 防止反编译技术第二篇-运行时修改字节码

牧云@^-^@ 提交于 2020-03-03 18:24:05
上一篇我们讲了apk防止反编译技术中的加壳技术,如果有不明白的可以查看我的上一篇博客http://my.oschina.net/u/2323218/blog/393372。接下来我们将介绍另一种防止apk反编译的技术-运行时修改字节码。这种方法是在工作中在实现app wrapping时,看到国外的一篇关于android 安全的介绍实现的并且独创。下面我们来介绍一下这种方法。 我们知道apk生成后所有的java生成的class文件都被dx命令整合成了一个classes.dex文件,当apk运行时dalvik虚拟机加载classes.dex文件并且用dexopt命令进行进一步的优化成odex文件。我们的方法就是在这个过程中修改dalvik指令来达到我们的目的。 一、dex文件格式 dex的文件格式通常有7个主要部分和数据區组成,格式如下: header部分记录了主要的信息其他的部分只是索引,索引的内容存在data区域。 Header部分结构如下: 字段名称 偏移值 长度 描述 magic 0x0 8 'Magic'值,即魔数字段,格式如”dex/n035/0”,其中的035表示结构的版本。 checksum 0x8 4 校验码。 signature 0xC 20 SHA-1签名。 file_size 0x20 4 Dex文件的总长度。 header_size 0x24 4 文件头长度

Gradle打包APK的一些小技巧和productFlavor配置

試著忘記壹切 提交于 2020-03-02 05:24:35
前言 在使用Gradle来打包Android应用之前,Android自动化打包通常会选择使用ant,ant是一种一步一步来执行任务的工具,通常打包一个apk要经过一个复杂的过程,ant工具通过一步一步完成这些过程来生成一个apk。如果要实现一个复杂一点的打包过程,它的xml配置文件的长度也是足以让你崩溃的。Gradle的出现让打包过程变得十分轻松,而且配置起来也是简单易懂。以前需要写好几天的配置文件现在只要简单的几步就能完成,配合Android Studio更加得心应手。 一个完整的打包流程如下: 基本的build.gradle 如果你用Android Studio生成一个项目的话,在app模块中你会看到一个build.gradle文件,这个文件就是配置这个模块的地方,大致文件结构如下: apply plugin: 'com.android.application' android { compileSdkVersion 23 buildToolsVersion "23.0.2" defaultConfig { minSdkVersion 8 targetSdkVersion 23 versionCode 1 versionName "1.0" } buildTypes { release { minifyEnabled true proguardFiles

Android权限共享UID和签名

我们两清 提交于 2020-02-29 14:42:13
共享UID 安装在设备中的每一个Android包文件(.apk)都会被分配到一个属于自己的统一的Linux用户ID,并且为它创建一个沙箱,以防止影响其他应用程序(或者其他应用程序影响它)。用户ID 在应用程序安装到设备中时被分配,并且在这个设备中保持它的永久性。 通过Shared User id,拥有同一个User id的多个APK可以配置成运行在同一个进程中.所以默认就是可以互相访问任意数据. 也可以配置成运行成不同的进程, 同时可以访问其他APK的数据目录下的数据库和文件.就像访问本程序的数据一样. 对于一个APK来说,如果要使用某个共享UID的话,必须做三步: 1、在Manifest节点中增加android:sharedUserId属性。 2、在Android.mk中增加LOCAL_CERTIFICATE的定义。 如果增加了上面的属性但没有定义与之对应的LOCAL_CERTIFICATE的话,APK是安装不上去的。提示错误是:Package com.test.MyTest has no signatures that match those in shared user android.uid.system; ignoring!也就是说,仅有相同签名和相同sharedUserID标签的两个应用程序签名都会被分配相同的用户ID。例如所有和media

Java + Selenium + Appium手机自动化测试

允我心安 提交于 2020-02-29 07:43:00
一、启动测试机或者Android模拟器(Genymotion俗称世界上最快的模拟器,可自行百度安装) 二、启动Appium(Appium环境安装可自行百度) 三、安装应用到Genymotion上,如下图我安装一个计算机的小应用,包名为CalcTest.apk 安装步骤:(基于Android SDK已经配置好了环境变量,可自行百度) 1、Win + R 2、CMD 3、adb devices --检查操作,列出存在的设置名称 4、adb install F:\Appium\CalcTest.apk --正式安装App 测试apk下载地址: https://files.cnblogs.com/files/yyym/CalcTest.apk 如下图:192.168.229.101:5555就是我刚开启的Genymotion虚拟机 四、安装成功之后回到Genymotiong可以看到已经安装成功了 打开该应用,可以看到实际是个简单的计算器 五、打开Eclipse创建Maven项目并使用uiautomatorviewer工具(Android SDK工具包自带的)进行基本元素定位操作,元素定位方式前面我们已经详细讲解过了。 1、打开Android SDK可找到路径:android-sdks\tools如下(获取App包名可反编译:aapt dump badging apk路径) 2

模拟器安装和卸载android程序

折月煮酒 提交于 2020-02-29 06:33:25
现在使用的android2.2sdk,并且安装了所有的版本, 安装和卸载外部apk程序: cmd进入命令行,我的android sdk安装在d盘 进入“D:\android\android-sdk_r08-windows\android-sdk-windows\platform-tools”,里面有一个adb.exe工具,使用这个工具就可以安装和卸载apk程序。 安装:adb.exe install d:\\iCua2.apk(这是我在外面下载的apk程序) 卸载:adb.exe shell,进入一个简陋的shell界面,可以使用linux shell里面的命令,cd data进入data目录下,此目录下 有app目录,cd app进入app文件夹,这个下面就是安装的apk程序,使用rm iCua2.apk就可以卸载我们前面装的外部程序。 就这么简单。 来源: oschina 链接: https://my.oschina.net/u/101842/blog/14726