aidl

Google Play Billing : how to simulate 'Account Hold' status (in debug/sandbox mode)

旧街凉风 提交于 2020-12-03 17:12:10
问题 Before November 2020, an Android app on Google Play has to manage 'Account Hold' status. https://developer.android.com/distribute/play-policies Question is: how to simulate 'Account Hold' status so that I can check that my app manages properly this status ? It is not mentioned in the doc as far as I can see: https://developer.android.com/google/play/billing/test Thanks. 回答1: What we've found today: Use Test Card, Always Approves to begin the subscription Go to phone settings > Accounts > your

Android AIDL 原理解析

隐身守侯 提交于 2020-11-03 03:29:01
Android AIDL 原理解析 如果去阅读Android的源代码,就会发现里面大量用到了Binder、AIDL相关知识,比如当我们去使用 AMS 、 PMS 、 WMS 这些核心服务,因为他们都运行在 system_server 进程,普通应用想调用他们提供的服务(例如: startActivity() ,就需要 AMS 来实现),就必须要跨进程调用,因此,我们在阅读代码之前,必须先去尝试理解Binder、AIDL相关知识。 为什么要使用AIDL呢? 通过AIDL,可以让本地调用远程服务器的接口就像调用本地接口那么简单,让用户无需关注内部细节,只需要实现自己的业务逻辑接口,内部复杂的参数序列化发送、接收、客户端调用服务端的逻辑,你都不需要去关心了。 一 从一个例子开始 我们通过一个简单的跨进程调用的例子来理解AIDL。 设计一个简单的场景: 我们有一个 CoreService 运行在 ":core" 进程中,提供文件下载服务,我们会在Activity中去bind这个Service,并且调用它为我们提供的服务。 实现起来很简单,只需要以下几个步骤: 定义一个AIDL文件 interface IDownloadService { /** * 下载 * @param url */ void download(String url); /** * 删除下载任务 * @param url

跨进程通信之AIDL服务(上)

≡放荡痞女 提交于 2020-03-10 18:49:37
AIDL进程间传递自定义类型参数 要传递自定义类型,首先要让自定义类型支持parcelable协议. Parcelable接口的作用:实现了Parcelable接口的实例可以将自身的状态信息(状态信息通常指的是各成员变量的值)写入Parcel,也可以从Parcel中恢复其状态。 Parcel用来完成数据的序列化传递。 AIDL示例: 1> 创建自定义类型,并实现Parcelable接口,使其支持parcelable协议。如:在cn.jp.domain包下创建 Person.java: package cn.jp.domain; import android.os.Parcel; import android.os.Parcelable; public class Person implements Parcelable private Integer id; private String name; public Person(){} public Person(Integer id, String name) { this.id = id; this.name = name; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String

Android 源码编译make的错误处理

▼魔方 西西 提交于 2020-03-08 08:36:27
Android源码下载: 官方下载 或参考 android源码下载方式 Android编译版本: PLATFORM_VERSION=4.0.1(最新Android 4.0.1) OS 操作系统平台: Linux yanggang 2.6.35-30-generic #61-Ubuntu SMP Tue Oct 11 15:29:15 UTC 2011 i686 GNU/Linux(Ubuntu10.10 32bit) 首先,我们先安装一些常用的工具 curl: sudo apt-get install curl git: sudo apt-get install git g++: sudo apt-get install g++ 然后,make遇到缺什么就安装什么 /usr/bin/ld: cannot find -lz host Executable: aapt (out/host/linux-x86/obj/EXECUTABLES/aapt_intermediates/aapt) /usr/bin/ld: cannot find -lz collect2: ld returned 1 exit status make: *** [out/host/linux-x86/obj/EXECUTABLES/aapt_intermediates/aapt] Error 1 解决方法:

使用AIDL

 ̄綄美尐妖づ 提交于 2020-03-07 21:06:52
copy from: https://www.jianshu.com/p/8a188d1d973a 1.服务端 服务端首先要创建一个Service用来监听客户端的连接请求,然后创建一个AIDL文件,将暴露给客户端的接口在这个AIDL文件中声明,最后在Service中实现这个AIDL接口即可。 2.客户端 首先绑定服务端的Service,绑定成功后,将服务端返回的Binder对象转成AIDL接口所属的类型,接着就可以调用AIDL中的方法了。需要注意的是,AIDL的包结构在服务端和客户端要保持一致,否则运行会出错,这是因为客户端需要反序列化服务端中和AIDL接口相关的所有类,如果类的完整路径不一样的话,就无法成功反序列化,程序也就无法正常运行。 步骤一:创建Book.java类、Book.aidl类、IBookManager.aidl类 详见: IPC机制(二) 步骤二:创建Service并重写IBookManager类 服务端 不要忘了在AndroidManifest.xml中注册: 清单文件注册 步骤三:在客户端中启动Service 客户端 运行结果: AIDL使用运行结果 假设有一种需求:用户不想时不时地去查阅图书馆列表了,于是他去问图书馆,“当有新书时能不能把新书的信息告诉我呢?”这是一种典型的观察者模式,每个感兴趣的用户都观察新书,当新书到的时候

Android面试相关知识

安稳与你 提交于 2020-02-29 13:35:10
最近面试被问到的问题,整理了一下。 1. AIDL原理 2. 跨进程通信,AIDL、Intent、Broadcast、Content Provider 3. Android设计模式 4. MVC、MVP、MVVM,Google官方开源代码 5. 事件传递机制 6. 自定义View 7. 内存优化、方式和工具 8. 布局优化,ViewStub、merge、include,及优化工具 9. 内存结构,静态内存、堆内存、栈内存、Native内存,栈内存不可以跨线程,其他的可以 10. GC原理,两种方式 11. 图片缓存原理 12. 内存泄漏和溢出分析 13. IntentFilter拦截 14. Handler、Looper、MessageQueue 15. IntentService、HandlerThread 16. LocalBroadcast 17. Java Nio 来源: oschina 链接: https://my.oschina.net/u/2698012/blog/714034

Android源码编译App Android.mk出现无法import aidl AIDL的接口找不到cannot import

扶醉桌前 提交于 2020-02-19 10:39:05
Android.mk添加以下内容即可 LOCAL_SRC_FILES := $(call all-java-files-under,app/src/main/java) LOCAL_SRC_FILES += $(call all-Iaidl-files-under,app/src/main/aidl/android/os) LOCAL_SRC_FILES += $(call all-Iaidl-files-under,app/src/main/aidl) LOCAL_SRC_FILES += $(call all-Iaidl-files-under,app) LOCAL_AIDL_INCLUDES += $(LOCAL_PATH)/app/src/main/aidl/android/os LOCAL_AIDL_INCLUDES += $(LOCAL_PATH)/app/src/main/aidl 来源: CSDN 作者: 镇上村树 链接: https://blog.csdn.net/realDonaldTrump/article/details/104374430

android跨进程(IPC)通信及AIDL

不想你离开。 提交于 2020-02-13 01:54:11
文章目录 android跨进程(IPC)通信及AIDL 官方文档 特别注意 跨进程 标签 in out inout oneway 跨进程回调RemoteCallbackList 多IBinder返回如何处理 示例 参考 android跨进程(IPC)通信及AIDL 官方文档 官方文档详见 https://developer.android.google.cn/guide/components/aidl?hl=en 特别注意 aidl文件里不要出现中文,因为官方还不支持中文 aidl支持java基本数据类型,以及String,CharSequence,List,Map(其中List,Map的具体类分别是ArrayList,HashMap,Map不支持泛型) aidl文件中引用 来源: CSDN 作者: huxiaojian5 链接: https://blog.csdn.net/huweijian5/article/details/103286803

谈谈Android Binder机制及AIDL使用

Deadly 提交于 2020-02-05 22:25:23
Binder原理 1、概述 Android系统中,涉及到多进程间的通信底层都是依赖于Binder IPC机制。例如当进 程A中的Activity要向进程B中的Service通信,这便需要依赖于Binder IPC。不仅于 此,整个Android系统架构中,大量采用了Binder机制作为IPC(进程间通信, Interprocess Communication )方案。 当然也存在部分其他的IPC方式,如管道、SystemV、Socket等。那么Android为什 么不使用这些原有的技术,而是要使开发一种新的叫Binder的进程间通信机制呢? ( 顺手留下GitHub链接,需要获取相关面试等内容的可以自己去找 ) https://github.com/xiangjiana/Android-MS (VX:mm14525201314) 为什么要使用Binder? 性能方面 在移动设备上(性能受限制的设备,比如要省电),广泛地使用跨进程通信对通信 机制的性能有严格的要求,Binder相对于传统的Socket方式,更加高效。Binder数 据拷贝只需要一次,而管道、消息队列、Socket都需要2次,共享内存方式一次内 存拷贝都不需要,但实现方式又比较复杂。 安全方面 传统的进程通信方式对于通信双方的身份并没有做出严格的验证,比如Socket通信 的IP地址是客户端手动填入,很容易进行伪造

android中跨进程通讯的4种方式

放肆的年华 提交于 2020-02-04 09:51:29
转自: http://www. android sdn.com/article/show/137 由于android系统中应用程序之间不能共享内存。因此,在不同应用程序之间交互数据(跨进程通讯)就稍微麻烦一些。在android SDK中提供了4种用于跨进程通讯的方式。这4种方式正好对应于android系统中4种应用程序组件:Activity、Content Provider、Broadcast和Service。   其中 Activity 可以跨进程调用其他应用程序的Activity;    Content Provider 可以跨进程访问其他应用程序中的数据(以Cursor对象形式返回),当然,也可以对其他应用程序的数据进行增、删、改操 作;    Broadcast 可以向android系统中所有应用程序发送广播,而需要跨进程通讯的应用程序可以监听这些广播;    Service 和Content Provider类似,也可以访问其他应用程序中的数据,但不同的是,Content Provider返回的是Cursor对象,而Service返回的是Java对象,这种可以跨进程通讯的服务叫AIDL服务。 完整示例请参阅本文提供的源代码。 方式一:访问其他应用程序的Activity Activity既可以在进程内(同一个应用程序)访问,也可以跨进程访问