在我们的git-svn托管项目中,我们有3个上游项目都保存在GitHub上的本机git存储库中.由于这些上游项目的源代码在我们的控制和频繁变化之下,我们当前的解决方案,即每次我们改变某些东西时将构建工件重新部署到超级项目都是非常麻烦的.
我想拥有的是:
parent project (git-svn):
--> submodule 1 (git)
--> submodule 2 (git)
--> submodule 3 (git)
Run Code Online (Sandbox Code Playgroud)
这样,子模块1-3的源代码与超级项目的源一起编译,但我可以单独将更改推送到子模块.
问题是:当我git svn dcommit在父项目上时会发生什么?这甚至有用吗?
更新 嗯,我只是设置了一个简单的项目结构,尝试类似于这个场景,并且在尝试在超级项目上进行dcommit时收到此错误消息:
a0301b11f3544a1e71067ff270eded65e4c8afbd doesn't exist in the repository at /opt/local/libexec/git-core/git-svn line 4775
Failed to read object a0301b11f3544a1e71067ff270eded65e4c8afbd at /opt/local/libexec/git-core/git-svn line 574
Run Code Online (Sandbox Code Playgroud)
有什么想法/建议吗?
据我所知,参与度量和布局ViewStub的视图和视图都不会GONE传递(或者无论如何渲染).
渲染性能有差异吗?什么时候使用哪种最佳做法?
我依赖于编译和运行我的应用程序所需的一些工件.
根据Gradle文档,运行时配置扩展了编译配置,因此使用runtime隐含compile依赖项确定添加依赖关系?
至少这是我的假设,但它不起作用.当仅依赖于使用的工件时runtime,我的项目不再编译.我真的必须:
compile 'oauth.signpost:signpost-core:1.2.1.2'
runtime 'oauth.signpost:signpost-core:1.2.1.2'
Run Code Online (Sandbox Code Playgroud)
为应用程序编译并在运行时查看Signpost类.
我错过了什么吗?那看起来不对......
我想知道InstrumentationInfo #functionalTest应该实现什么.它对应用程序环境的启动方式有影响吗?
我观察到更新版本的SDK(-tools)的问题,其中android update sdk --no-ui不再下载所有平台版本.我们刚刚设置了一个新的无头构建服务器,并进行了全新的SDK安装,但该命令拒绝降低API级别9(Gingerbread):
ateam@gandalf:~/android/sdk/platforms$ ls
android-10 android-11 android-12 android-13 android-14 android-3 android-4 android-7 android-8
Run Code Online (Sandbox Code Playgroud)
它缺少API级别5和6,因为它们已被弃用,所以没关系,但姜饼应该在那里?
ateam@gandalf:~/android/sdk/platforms$ android update sdk --no-ui
...
There is nothing to install or update.
Run Code Online (Sandbox Code Playgroud)
还有其他人吗?
在ActivityUnitTestCase的JavaDoc中,它说:
不要从你的setUp()方法调用.您必须从每个测试方法中调用此方法.
setUp考虑到该方法背后的整个想法就是这样做,即在每次测试之前执行某些操作,是不是在每个测试方法中都放入了等同于放入的东西?
另外,为什么我们不允许这样做呢?我试过了,它运作得很好.
我们目前正在开发一个在我们的构建服务器上运行的检测测试套件,但是当测试使用普通的Android模拟器传递开发机器时,构建服务器上的构建失败,因为我们只运行带有-no-window标志的无头模拟器.
尝试调用InstrumentationTestCase.sendKeys()方法以编程方式打开选项菜单时发生故障.错误是:
权限被拒绝:从pid 646 uid 10026注入关键事件到uid 1000拥有的窗口{43d55100 paused = false}
然后我们发现有一个INJECT_EVENTS权限,但在清单中设置它没有任何效果.实际上在日志中我们看到了这个输出:
不授予android.permission.INJECT_EVENTS权限以包com.qype.radar(protectionLevel = 2 flags = 0x6644)
这是否意味着此权限无用?
我们还尝试让测试测试应用程序和被测试的应用程序共享相同的Linux用户ID android:sharedUserId并在同一个进程中运行(android:process- 我们不确定是否已经是这种情况),但仍然没有运气.
这是否意味着目前无法在无头模拟器上运行包含关键事件的仪器,或者我们是否遗漏了某些内容?
ProGuard配置Android应用程序的常见模式是保留自定义View类,因为它们可能只是从布局XML而不是应用程序代码引用.
在项目创建时,ADT因此将这些规则添加到项目的proguard.cfg中:
-keepclasseswithmembernames class * {
public <init>(android.content.Context, android.util.AttributeSet);
}
-keepclasseswithmembernames class * {
public <init>(android.content.Context, android.util.AttributeSet, int);
}
Run Code Online (Sandbox Code Playgroud)
我想这里的想法是说,每当一个类定义一个可以由布局inflater调用的构造函数,然后保留它.但是,根据ProGuard文档,keepclasseswithmembernames限定符是keepclasseswithmembers和的简写allowshrinking,如果我理解正确的意思是:它允许删除这些类,但如果保留它们,不要混淆其成员名称(可能不会破坏它们之间的绑定) XML属性名称和类设置器).
但这是否意味着在缩小阶段(allowshrinking = true)仍会删除这些类,除非它们直接在代码中引用?事实上,这就是我们在我们的应用程序中使用的自定义小部件所发生的事情,我可以通过将规则设置为刚好来解决问题,keepclasseswithmembers因为这将完全保留匹配的类(值得注意的是这就是官方的ProGuard Android例子也是如此).
我误读了ProGuard文档,或者这是ADT项目向导中的错误?
似乎安装到SD卡的应用程序似乎没有收到任何系统广播.但是,我们希望在启动时启动一个侦听推送通知的服务.
我们不想放弃app2sd,因为它是许多用户要求的功能,所以有没有办法同时拥有它们?
我试图使用Net :: HTTP向Twitter发送GET请求(因隐私原因而替换用户ID):
url = URI.parse("http://api.twitter.com/1/friends/ids.json?user_id=12345")
resp = Net::HTTP.get_response(url)
Run Code Online (Sandbox Code Playgroud)
这会在Net :: HTTP中引发异常:
NoMethodError:未定义的方法
empty?' for #<URI::HTTP:0x59f5c04> from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/net/http.rb:1470:in初始化'
巧合的是,我偶然发现了一个类似的代码片段,URI.encode之前使用过URI.parse,所以我复制了它并再次尝试:
url = URI.parse(URI.encode("http://api.twitter.com/1/friends/ids.json?user_id=12345"))
resp = Net::HTTP.get_response(url)
Run Code Online (Sandbox Code Playgroud)
现在它工作正常,但为什么?有迹象表明,需要在逃避我提到的网址没有保留字符,所以为什么我要调用URI.encode的get_response成功吗?
android ×7
testing ×2
app2sd ×1
emulation ×1
git ×1
git-svn ×1
gradle ×1
http ×1
minimization ×1
obfuscation ×1
performance ×1
proguard ×1
ruby ×1
unit-testing ×1
url-encoding ×1
viewstub ×1
visibility ×1