在新的XCode 5.1中,arm64已成为构建的标准架构之一.
但是,在我目前的项目中,我包含了尚未支持这种新架构的库(例如Google AdMob) - 这些现在导致链接器错误:
ld: symbol(s) not found for architecture arm64
Run Code Online (Sandbox Code Playgroud)
据说谷歌AdMob 6.8.0 支持arm64,但我不能确认这一点,除非cputype (16777228) cpusubtype (0)是arm64?(通过文件命令行工具找到)
libGoogleAdMobAds.a: Mach-O universal binary with 5 architectures
libGoogleAdMobAds.a (for architecture armv7): current ar archive random library
libGoogleAdMobAds.a (for architecture armv7s): current ar archive random library
libGoogleAdMobAds.a (for architecture i386): current ar archive random library
libGoogleAdMobAds.a (for architecture x86_64): current ar archive random library
libGoogleAdMobAds.a (for architecture cputype (16777228) cpusubtype (0)): current ar archive random library
Run Code Online (Sandbox Code Playgroud)
有办法解决这个问题吗?
我一直在搜索互联网(例如Android文档,这里的答案等),以获得我认为是一个相当微不足道的问题的答案.您如何实现像Google音乐和YouTube中的半透明操作栏(链接是图像示例)?
我希望视频内容是全屏的,不受操作栏的约束/推送,同时仍然利用内置UI组件的优势.我显然可以使用完全自定义的视图,但如果可能的话,我宁愿利用ActionBar.
表现
<activity
android:name="videoplayer"
android:theme="@android:style/Theme.Holo"
android:launchMode="singleTop"
android:configChanges="keyboardHidden|orientation"/>
Run Code Online (Sandbox Code Playgroud)
活动
// Setup action bar
ActionBar actionBar = getActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
View customActionBarView = getLayoutInflater().inflate(R.layout.player_custom_action_bar, null);
actionBar.setCustomView(customActionBarView,
new ActionBar.LayoutParams(ActionBar.LayoutParams.MATCH_PARENT,
R.dimen.action_bar_height));
actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
Run Code Online (Sandbox Code Playgroud)
菜单
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/button1"
android:icon="@drawable/button1"
android:showAsAction="always"/>
<item
android:id="@+id/button2"
android:icon="@drawable/button2"
android:showAsAction="always"/>
</menu>
Run Code Online (Sandbox Code Playgroud)
自定义ActionBar视图
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/custom_action_bar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center"
android:background="@color/TranslucentBlack">
<!--Home icon with arrow-->
<ImageView
android:id="@+id/home"
android:src="@drawable/home"
android:layout_width="wrap_content"
android:layout_height="match_parent"/>
<!--Another image-->
<ImageView
android:id="@+id/image"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:visibility="visible"/>
<!--Text if no image-->
<TextView
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:gravity="center_vertical"
android:visibility="gone"/>
<!--Title--> …Run Code Online (Sandbox Code Playgroud) android android-3.0-honeycomb android-4.0-ice-cream-sandwich android-actionbar android-5.0-lollipop
我已经将我的应用程序在商店中存放了一段时间,但它似乎根据开发者控制台中的崩溃报告偶尔崩溃,说:
java.lang.ClassCastException in android.widget.ProgressBar.onRestoreInstanceState使用堆栈跟踪:
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.company.myapp/com.mycompany.myapp.activity.MyActivity}: java.lang.ClassCastException: android.view.AbsSavedState$1 cannot be cast to android.widget.ProgressBar$SavedState
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1996)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2023)
at android.app.ActivityThread.access$600(ActivityThread.java:127)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1174)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4503)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:809)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:576)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.ClassCastException: android.view.AbsSavedState$1 cannot be cast to android.widget.ProgressBar$SavedState
at android.widget.ProgressBar.onRestoreInstanceState(ProgressBar.java:1093)
at android.view.View.dispatchRestoreInstanceState(View.java:9975)
at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:2408)
at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:2408)
at android.view.View.restoreHierarchyState(View.java:9951)
at com.android.internal.policy.impl.PhoneWindow.restoreHierarchyState(PhoneWindow.java:1611)
at android.app.Activity.onRestoreInstanceState(Activity.java:908)
at android.app.Activity.performRestoreInstanceState(Activity.java:880)
at android.app.Instrumentation.callActivityOnRestoreInstanceState(Instrumentation.java:1102)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1974)
... 11 more
Run Code Online (Sandbox Code Playgroud)
这些崩溃的原因使我无法理解,我无法在任何设备上重现它.我也没有在onRestoreInstanceState任何地方被覆盖.有人能指出我有道理的方向吗?
我将项目更新为Xcode 5并在构建设置中启用了模块.但是,我Unexpected '@' in program在使用时看到编译器错误@import.
#ifndef __IPHONE_7_0
#warning "This project uses features only available in iOS SDK 7.0 and later."
#endif
#ifdef __cplusplus
#import <opencv2/opencv.hpp>
#endif
#ifdef __OBJC__
@import SystemConfiguration;
@import UIKit;
Run Code Online (Sandbox Code Playgroud)
还有什么应该做的吗?
所以我最近切换到android 3.0(蜂窝),我有一些硬件渲染的问题,特别是在某个自定义视图我写的我用字体大小200来显示一些文本.
不幸的是,考虑到我在日志中出现的错误,openGLRenderer似乎不太喜欢那种相当大的字体大小:
06-06 16:22:00.080: ERROR/OpenGLRenderer(2503): Font size to large to fit in cache. width, height = 97, 145
Run Code Online (Sandbox Code Playgroud)
有没有解决方法(或修复它的方法),以便我可以获得所需字体大小的文本?
android font-size hardware-acceleration android-3.0-honeycomb
可能是我,但是当我根据android页面上给出的公式计算最小app小部件大小时,我得不到正确的小部件宽度; 公式如下:
width(n)=(70 xn) - 30
当我想要一个5x1小部件时,正确的宽度将是(5*70) - 30 = 320dp.然而,当在motorola Xoom上测试它时,它解析为4x1小部件.我已经测试了不同的值,400dp对于带有Honeycomb的motorola xoom上的5x1似乎很好,但后来我在常规Galaxy Tab上用Gingerbread测试它然后它解析为6x1(就像人们期望的那样).
这里有两个问题;
android android-3.0-honeycomb android-2.3-gingerbread android-4.0-ice-cream-sandwich android-appwidget
在Android 1.6上部署我的应用程序时,我遇到了向后兼容性问题.我在这段代码上得到了VerifyError:
if(android.os.Build.VERSION.SDK_INT >= 11) {
getActionBar().setBackgroundDrawable(getResources().getDrawable(R.drawable.actionbar_bg));
}
Run Code Online (Sandbox Code Playgroud)
这不是意料之外的,因为在API 11之前不存在getActionBar(),但1.6之后(API 5及更高版本?)根据在API级别上部署时获取的logcat消息进行半优雅的构建8装置;
06-27 16:47:04.333: INFO/dalvikvm(11529): Could not find method com.me.app.MyActivity.getActionBar, referenced from method com.me.app.MyActivity.init
06-27 16:47:04.333: WARN/dalvikvm(11529): VFY: unable to resolve virtual method 1090: Lcom.me.app.MyActivity;.getActionBar ()Landroid/app/ActionBar;
06-27 16:47:04.333: DEBUG/dalvikvm(11529): VFY: replacing opcode 0x6e at 0x004f
06-27 16:47:04.333: DEBUG/dalvikvm(11529): VFY: dead code 0x0052-005f in Lcom.me.app.MyActivity;.init (Z)V
Run Code Online (Sandbox Code Playgroud)
1.6及更早版本不会这样做,而是抛出VerifyError:
06-27 16:23:45.561: ERROR/dalvikvm(427): Could not find method com.me.app.MyActivity.getActionBar, referenced from method com.me.app.MyActivity.init
06-27 16:23:45.561: WARN/dalvikvm(427): VFY: unable to resolve virtual method 1090: Lcom/me/app/MyActivity;.getActionBar ()Landroid/app/ActionBar;
06-27 …Run Code Online (Sandbox Code Playgroud) android backwards-compatibility verifyerror android-3.0-honeycomb android-4.0-ice-cream-sandwich
由于在同一个应用程序的Android市场上同时拥有免费和付费版本很受欢迎,我决定也这样做.最初我只是复制了完整的代码库,并在这里和那里调整了一些代码(添加了广告,内置了一些限制等),因为当时没有选项来进行库项目,但这给我留下了两个很难管理修复的项目因为我需要做两次这样的bug.
从r14开始,我们可以使用带有资源的库项目,因此,就我所知,这对于这个特定问题是一个很好的解决方案.因此,我已经阅读了图书馆项目和结论,我很想知道不同版本的项目所需的最小文件数量是多少.因此,我的问题是;
android ×6
android-4.0-ice-cream-sandwich ×3
ios ×2
font-size ×1
ios7 ×1
objective-c ×1
verifyerror ×1
xcode ×1
xcode5 ×1
xcode5.1 ×1