如何使用更新的NDK共享库(.so)文件强制Android Studio构建我的应用程序,而无需先清理整个项目?
Android Studio必须有一些机制可以检测到共享库已更新并使用最新的库.如果我做一个Build-> Clean Project然后做一个Run-> Run'app'它会使用新版本的库,但是它也需要做很多不必要的工作,因为没有java来源已经改变.即使是Run-> Clean和Rerun'app'也不会使用新库.(!!!)
如何修复 Mac 版 Chrome 浏览器扩展中的“本机主机已退出”错误?Native Messaging上的文档在底部特别提到了这个错误,并提出了一个可能的原因,但它的陈述很笼统(“这很可能是从你的本地消息传递主机发起的”),目前还不清楚尝试做什么来解决这个。
终端中的日志输出(如果您从 Mac 终端启动 Chrome,您可以查看日志信息)让我相信本机主机应用程序的进程本身从未成功启动。我不断得到:
LaunchProcess: failed to execvp:
/Users/mycomputer1/Documents/myhost.app
Run Code Online (Sandbox Code Playgroud)
但是,将“本机主机已退出”打印到后台javascript页面的控制台的实际代码是:
function onDisconnected() {
console.log("Inside onDisconnected(): " + chrome.runtime.lastError.message);
port = null;
}
Run Code Online (Sandbox Code Playgroud)
onDisconnected() 侦听器实际上是作为调用 connectNative() 的结果而调用的,我根据文档在这里完成了该操作:
chrome.runtime.onMessageExternal.addListener(
function(request, sender, sendResponse) {
//var imgdata = JSON.stringify(request.imgdata);
//process it somehow here
port = chrome.runtime.connectNative("com.allinlearning.ailhost");
if (port)
{
console.log("connectNative() returned a non-null port");
}
});
Run Code Online (Sandbox Code Playgroud)
我知道 connectNative() 在某个级别上成功,因为它返回一个有效的端口。但是,connectNative() 继续尝试定位本机主机应用程序并尝试启动它。文档表明主机应用程序是罪魁祸首,以某种方式启动了 Chrome 和本机应用程序之间的“管道”中断,尽管我的主机应用程序根本没有实现与 stdout 或 stdin 的通信。此外,Chrome 日志消息(“LaunchProcess: failed to execvp:”)似乎表明我的 Mac 应用程序从未成功启动。
还有更多:我在网上找到的一些源代码(可能是过时的?源文件)准确地揭示了这个“本机主机已经退出”消息的来源,并且一项检查表明了为什么谷歌浏览器的代码正在关闭。在 HandleReadResult() …
javascript macos google-chrome google-chrome-extension chrome-native-messaging
尝试OkHttp3异步Get时,我不断收到java.net.SocketTimeoutException.这表明我没有将读取超时值设置得足够高(我认为默认值是10秒).
更大的问题是"如何防止这种异常?" 但是,除非有人有更好的初始策略,否则我的直接问题是,"如何为请求设置读取超时值?"
在我的代码中,我使用了Okttp Recipes页面中的信息
注意我的try-catch的前两行被注释掉了.那是因为我不能使用我需要的那种构建器(一个能够设置超时值,OkHttpClient.Builder)来添加头信息(Request.Builder).
我的代码看起来像这样:
m_client = new OkHttpClient();
try
{
//OkHttpClient.Builder bldr = m_client.newBuilder();
//bldr.readTimeout(0, TimeUnit.SECONDS);
Request.Builder reqBuilder = new Request.Builder();
reqBuilder.addHeader("authorization", getToken());
Request request = reqBuilder.url("http://plusdev.kooklah.com/api/v2_1/items/get").build();
m_client.newCall(request).enqueue(new Callback()
{
@Override
public void onFailure(Call call, IOException e)
{
Log.i("Logit", "Inside onFailure() -- IOException: " + e.getMessage() + " ----- stack trace: " + UtilGen.exceptionToString(e));
runOnUiThread(new Runnable()
{
@Override
public void run()
{
// do stuff on UI thread
}
});
}
@Override
public void onResponse(Call call, …Run Code Online (Sandbox Code Playgroud) 我有一些表格视图单元格需要显示我们服务器上的一些简单html。将html转换为NSAttributedString,以便可以将其显示在单元格上的UILabel对象中。但是当表格视图绘制单元格时,UILabel对象似乎在它们的末尾添加了一些换行符。请注意此处的额外空间:
(顺便说一句,图片提供了两个tableview单元,因为我尝试了两种不同形式的html,并且在两种情况下似乎都插入了换行符)我认为这可能是由于我的布局所致,也许UILabel被迫被其高度布局,并且不能根据分配的文本自行调整大小/缩小。但是,当我为同一标签提供一个简单的NSAttributedString时,它就是这样创建的:
sRet = [[NSAttributedString alloc] initWithString:@"[Dummy text string 111]"];
Run Code Online (Sandbox Code Playgroud)
(黄色)UILabel确实会像这样缩小响应:
几乎表明我的布局允许UILabel根据分配给它的文本自由调整大小。
下面是当我将它们记录到控制台时分配给标签的HTML及其结果NSAttributedString值。这些对应于您在上方第一张图片中的黄色UILabel对象中看到的内容。这是将html转换为属性字符串并分配的html:
<h2>Student did poorly</h2>
<p><span style="font-family:comic sans ms,cursive;"><span style="font-size:14px;">Student did ok</span></span></p>
Run Code Online (Sandbox Code Playgroud)
这是对应的属性字符串:
Student did poorly
{
NSColor = "kCGColorSpaceModelRGB 0 0 0 1 ";
NSFont = "<UICTFont: 0x7fce3f8798e0> font-family: \"TimesNewRomanPS-BoldMT\"; font-weight: bold; font-style: normal; font-size: 18.00pt";
NSKern = 0;
NSParagraphStyle = "Alignment 4, LineSpacing 0, ParagraphSpacing 0, ParagraphSpacingBefore 0, HeadIndent 0, TailIndent 0, FirstLineHeadIndent 0, LineHeight 22/0, LineHeightMultiple 0, LineBreakMode 0, Tabs (\n), DefaultTabInterval 36, Blocks …Run Code Online (Sandbox Code Playgroud) 我有一个用 cmake 构建的 c++ 项目。它编译和链接很好。目标是使用 Emscripten 从中生成将在浏览器中运行的代码。
从上Emscripten网站上的文档在这里可以发现:
运行前两个命令(emconfigure 和 emmake)后,看似成功,我在任何地方都没有任何 .bc 文件,尽管它实际上确实生成了 .js 和 .wasm 文件。文档暗示 .js 文件只会由执行第三个命令 ./emcc 产生。
在您找到的同一文档页面上再往下一点:
Make 生成链接的 LLVM 位码。它不会在链接期间自动生成 JavaScript,因为所有文件都必须使用相同的优化和编译器选项进行编译——在从 bitcode 到 JavaScript 的最终转换中这样做是有意义的。
所以它似乎应该产生一些位码。这该怎么做?
(我确实按照那些文档的建议使用了 VERBOSE 命令,虽然我没有看到使用 emcc 而不是本机编译器,但正在使用 em++,这似乎与 emcc 大致相同。)
如何阻止 Android 应用程序中的导航抽屉自动打开?
它曾经工作得很好。一开始是看不见的,后来可以滑到可见的地方。但我需要一个标题。起初它只是一个ListView。修改抽屉 xml(见下文)以在列表视图上方为其添加标题后不久,它就开始自动打开。我当然没有在代码中添加任何内容,例如 my_nav_drawer.openOnStartup()。
<!-- The navigation drawer -->
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!-- The main content view -->
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:background="@drawable/ail_background_gradient"
tools:context="com.allinlearning.assist_android.HomeScreenActivityFragment">
<ImageView
android:id="@+id/imgViewLogo"
android:src="@drawable/ail_logo"
android:layout_margin="10dp"
android:layout_width="90dp"
android:layout_height="90dp"
android:scaleType="fitXY"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="ALL In Learning"
android:id="@+id/textViewLogo"
android:layout_margin="10dp"
android:layout_below="@+id/imgViewLogo"
android:layout_centerHorizontal="true"
android:textSize="@dimen/font_size26"
android:textStyle="bold" />
<ImageButton
android:id="@+id/imgBtnGradeAssessment"
android:src="@drawable/grade_assessment"
android:layout_width="100dp"
android:layout_height="95dp"
android:scaleType="fitXY"
android:layout_centerVertical="true"
android:layout_toLeftOf="@+id/textViewGradeAssessment"
android:layout_toStartOf="@+id/textViewGradeAssessment" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="Grade"
android:id="@+id/textViewGradeAssessment"
android:textColor="@color/white"
android:textSize="@dimen/font_size28"
android:layout_centerVertical="true"
android:layout_alignRight="@+id/imgViewLogo"
android:layout_alignEnd="@+id/imgViewLogo" />
<ImageButton …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用POCO制作带有HTTP基本身份验证的HTTP帖子(明文用户名和密码).我找到了一个Get的例子,并尝试修改它,但作为一个新手,我想我已经把它毁了它的用处.有人知道怎么做吗?
是的,我已经看到了另一个问题:POCO C++ - NET SSL - 如何发布HTTPS请求,但我无法理解它是如何尝试实现用户名和密码部分的.我也不明白"x-www-form-urlencoded"的用法.邮政需要这个吗?我没有表格.只想用用户名和密码参数POST到服务器.
我试图在iOS项目中使用PHPhotoLibrary类,但需要在我的一个混合代码Objective-C/C++文件中使用它.我得到一个构建错误bc显然所需的导入是不正确的.这里的Apple文档清楚地表明要使用@import Photos,所以在我的构建设置中,我打开了"启用模块(C和Objective-C)"并添加了@import Photos和我的其他导入.然而,这并没有解决Xcode对我使用@import Photos的反对意见.问题是,作为这太问题的职位之一在这里解释了,你只能使用@import照片风格包括.mm文件.
(我不使用Swift,只使用Objective-C并在几个文件中混合使用Objective-C和C++)
那我怎样才能正确导入/包含在我的.mm文件中,以便我的PHPhotoLibrary代码可以构建?
我如何特别地使用-v调用来查看有关cmake链接器错误的详细信息?我发现了两个有关使用此选项的问题,但是一个问题是针对Xcode构建的,另一个问题是针对NDK构建的。他们在这里:
我在OSX Mojave上。我正在使用标准的cmakelists.txt方法,错误是这样的:
Undefined symbols for architecture x86_64:
"Image::createImage(int, int, int)", referenced from:
_main in tutorial.cpp.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Run Code Online (Sandbox Code Playgroud)
SO问题中的一条注释显示了我要执行的操作:
...you could use -v to see the linker invocation to see what's going wrong. It would show you this link line:
"/usr/bin/ld" -demangle -dynamic -arch x86_64
-macosx_version_min 10.6.8 -o a.out -lcrt1.10.6.o
/var/folders/zl/zlZcj24WHvenScwjPFFFQE+++TI/-Tmp-/cc-hdOL8Z.o
-lSystem /Developer/usr/bin/../lib/clang/3.0/lib/darwin/libclang_rt.osx.a
Run Code Online (Sandbox Code Playgroud)
(我是cmake菜鸟新手)我已经在cmakelists.txt中尝试了以下所有方法,但它们均无效:
add_link_options(-v)
add_link_options("-v")
target_link_options(myexec PUBLIC …Run Code Online (Sandbox Code Playgroud) 我只是在方法的返回类型的类型中进行了代码更改,并指望编译器显示警告,这将允许我找到并修复现在不匹配的位置.但没有警告.在我的设置中,我发现所有构建类型的"不匹配的返回类型"已经是"是",因此我决定将其更改为"是(视为错误)"并进行重建.构建结果中仍然没有任何迹象.
然后我将"将警告视为错误"更改为"是",这会产生一些有用的错误消息,但没有不匹配的警告.也许我对编译器和Objective-C返回类型一无所知,但是当我的方法指定应返回NSNumber*时,似乎不应该接受bool.
这是我的代码:
+(NSNumber*) compilerCompletelyFineWithThis
{
if ([m_session tryThis])
{
return [m_session goGetSumthin];
}
else
return false;
}
Run Code Online (Sandbox Code Playgroud)
文档建议不匹配的返回类型与GCC_WARN_ABOUT_RETURN_TYPE相关联,但不清楚它强制执行哪些规则.
在我的构建设置的警告部分下面的图片中,请注意相关设置.我为所有构建打开了"将警告视为错误"和"不匹配的返回类型".
当我违反方法定义和调用代码之间的这种契约时,有没有办法让Xcode让我知道?
xcode compiler-errors objective-c compiler-warnings type-mismatch
android ×3
macos ×3
c++ ×2
ios ×2
objective-c ×2
xcode ×2
asynchronous ×1
build ×1
build.gradle ×1
cmake ×1
emscripten ×1
html ×1
http ×1
include ×1
java ×1
javascript ×1
okhttp3 ×1
passwords ×1
post ×1
terminal ×1
uilabel ×1
uistackview ×1
xml-layout ×1