我正在构建一个iOS静态库,我想为bitcode提供支持.为了实现这一点,我转到Build settings,搜索"custom compiler flags"并添加-fembed-bitcode.这使用bitcode构建库,在XCode 7下一切正常.
然而,按照上面的方法,我放松了与XCode 6的向后兼容性.据说我必须向我的用户发送2个不同的库版本,一个带有bitcode标志,一个没有,因为不是每个人都升级到XCode 7.
有没有办法让bitcode启用库并具有向后兼容性,而无需发送2个不同的版本?
您好@Vinicius Jarina感谢您的留言.我知道你可以创建一个胖库,我想这是一种常见的做法.到目前为止我所做的是为两种架构构建:
xcodebuild -configuration "Release" -target "${FMK_NAME}" -sdK iphoneos
xcodebuild -configuration "Release" -target "${FMK_NAME}" -sdk iphonesimulator
Run Code Online (Sandbox Code Playgroud)
然后调用lipo打包在胖库中,如:
lipo -create "${DEVICE_DIR}/${FMK_NAME}" "${SIMULATOR_DIR}/${FMK_NAME}" -output "${INSTALL_DIR}/Versions/${FMK_VERSION}/${FMK_NAME}"
Run Code Online (Sandbox Code Playgroud)
但是,我现在该怎么办呢?我根据这个链接尝试了类似的东西,但没有运气:
xcodebuild -configuration "Release" -target "${FMK_NAME}" -sdk iphoneos
xcodebuild -configuration "Release" -target "${FMK_NAME}" -sdk iphonesimulator
xcodebuild -configuration "Release" OTHER_CFLAGS='-fembed-bitcode' -target "${FMK_NAME}" -sdk iphonesimulator
xcodebuild -configuration "Release" OTHER_CFLAGS='-fembed-bitcode' -target "${FMK_NAME}" -sdk iphoneos
Run Code Online (Sandbox Code Playgroud)
然后像这样创建一个胖lib:
lipo -create "${DEVICE_DIR}/${FMK_NAME}" "${SIMULATOR_DIR}/${FMK_NAME}" -output "${INSTALL_DIR}/Versions/${FMK_VERSION}/${FMK_NAME}"
Run Code Online (Sandbox Code Playgroud)
我如何在我的scipt中包含两者,然后将它们打包到一个胖库中?
我终于成功完成了这项工作,我在这里列出了可能面临同样问题的其他人的解决方案:
xcodebuild -configuration "Release" ENABLE_BITCODE=NO …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Android Studio和gradle为库Android项目创建AAR文件.
我想从此存档中排除特定的文件夹和文件,但我找不到有效的解决方案.
该项目有两种口味.
app/
|--libs/
|--src/
|--flavour1/
| |--java/
| |--a1/
| | |--class_File1.java
|--flavour2/
| |--java/
| |--a1/
| | |--class_File1.java
|--main/
|--java/
| |--...
|--res/
| |--raw/
| | |--comments.txt
| |--...
|--AndroidManifest.xml
Run Code Online (Sandbox Code Playgroud)
我使用像这样的build.gradle文件
apply plugin: 'com.android.library'
android {
compileSdkVersion 21
buildToolsVersion "21.1.2"
defaultConfig {
minSdkVersion 10
targetSdkVersion 21
}
packagingOptions {
exclude 'assets'
exclude '**/comments.txt'
}
sourceSets {
flavour1 {
resources {
exclude '**/comments.txt'
}
}
flavour2 {
}
}
buildTypes {
release {
minifyEnabled true …Run Code Online (Sandbox Code Playgroud) 好吧我想添加一个UIImageView作为子视图,然后在启动画面工作的几秒钟后删除它.我找到了三种不同的方法,但根据Objective-C和Apple,我无法理解哪种方法是最好的方法.
以下是三种不同的方法:
1)在我的MyAppDelegate.h中
@interface MyAppDelegate : NSObject <UIApplicationDelegate> {
MyViewController *myViewController;
UIImageView *myImageView;
}
@property (nonatomic, retain) IBOutlet MyViewController *myViewController;
@property (nonatomic, retain) IBOutlet UIWindow *window;
@end
Run Code Online (Sandbox Code Playgroud)
在MyAppDelegate.m中
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
myImageView =[[UIImageView alloc] initWithFrame:CGRectMake(0.0,0.0,self.window.frame.size.width,self.window.frame.size.height)];
myImageView.image=[UIImage imageNamed:@"Yoga.png"];
[self.window addSubview:myImageView ];
[self.window bringSubviewToFront:myImageView];
[self performSelector:@selector(removeImage) withObject:nil afterDelay:2.5];
return YES;
}
-(void) removeImage
{
[myImageView removeFromSuperview];
[myImageView release];
[self.window addSubview:myViewController.view];
[self.window makeKeyAndVisible];
}
Run Code Online (Sandbox Code Playgroud)
2)在第二种方法中:
In my MyAppDelegate.h
@interface MyAppDelegate : NSObject <UIApplicationDelegate> {
MyViewController *myViewController;
UIImageView *myImageView;
}
@property …Run Code Online (Sandbox Code Playgroud) 我是Unity的新手,我正在尝试为Android库jar创建一个Unity插件,我面临以下问题:
我找不到将后退按钮事件传递给Android库的方法.Unity似乎阻止将此事件传递给库层.我设法做的是通过设置以下行将触摸事件传递到Android端的活动
<meta-data android:name="unityplayer.ForwardNativeEventsToDal vik" android:value="true" />
Run Code Online (Sandbox Code Playgroud)
在<activity android:name="com.unity3d.player.UnityPlayerProxyActivity" ... >AndroidManifest中
但是,我不能以我不必更改库中的代码的方式传递后退按钮事件
我现在在剧本中做的是
public void Update() {
if(Input.GetKeyDown(KeyCode.Escape))
Application.Quit();
}
Run Code Online (Sandbox Code Playgroud)
但是,我需要选项将我捕获的返回事件传递给库,而不是在Unity层处理它.
也许不知何故这样.
myActivity.dispatchKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_BACK));
Run Code Online (Sandbox Code Playgroud)
或这个
myActivity.onBackPressed()
Run Code Online (Sandbox Code Playgroud)
但是通过C#脚本.我怎样才能在脚本中实现这一目标?
我的android项目中有一个自定义Webview,如下所示:
public class MyWebView extends WebView {
public MyWebView(Context context) {
super(context);
}
public class JsObject {
@JavascriptInterface
public void show() {
//...
}
@JavascriptInterface
public void hide() {
//....
}
}
Run Code Online (Sandbox Code Playgroud)
其中包括JavascriptInterface我用来从JavaScript端到Android端的通信.
在AndroidManifest中,我有以下内容
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="16" />
Run Code Online (Sandbox Code Playgroud)
在项目中,我使用了proguard,声明:
-keepattributes JavascriptInterface
-keepclassmembers class * {
@android.webkit.JavascriptInterface <methods>;
}
Run Code Online (Sandbox Code Playgroud)
一切都很好.
然而,当我将AndroidManifest更改为android:targetSdkVersion=18或19测试18及以上的设备时,proguard似乎在某种程度上混淆了无法访问的JavaScript方法.
如果我回到16或少于17的东西一切正常.此外,这只发生在proguard上.如果我不使用proguard,即使使用android:targetSdkVersion=18或19,一切正常.在清单Android> 17中定位时,任何人都可以帮助它吗?
我正在开发一个目标c框架供其他开发人员使用.
在这个框架中,我想使用其他框架中的可用类(如果它们可用).
例如,目前我正在使用AdSupport.framework(如果可用 - 由应用程序开发人员链接),采用以下方法:
if (NSClassFromString(@"ASIdentifierManager")) {
NSString adString = [[[NSClassFromString(@"ASIdentifierManager") sharedManager] advertisingIdentifier] UUIDString];
}
Run Code Online (Sandbox Code Playgroud)
但是现在,我希望我的框架的公共函数的参数包含可选依赖项的类,我无法做到这一点.
例如:
我想要一个功能:
+ (void) sendLocation: (CLLocation *) myLoc;
Run Code Online (Sandbox Code Playgroud)
但CoreLocation.framework可以选择性地链接,也许不适用于应用程序.如何使用上述AdSupport.framework的类似方法?
我以为我可以这样做:
+ (void) sendLocation: (NSClassFromString(@"CLLocation") *) myLoc;
Run Code Online (Sandbox Code Playgroud)
要么
+ (void) sendLocation: (id) myLoc;
Run Code Online (Sandbox Code Playgroud)
要么
+ (void) sendLocation: (Class) myLoc;
Run Code Online (Sandbox Code Playgroud)
然后以某种方式提取坐标,但无法实现.最后一个选项(Class)似乎编译但我找不到提取params的方法..
任何人都可以帮忙吗?
我正在尝试在布局的中心和底部的framelayout中的图像上实现textview,如下所示:
http://developer.android.com/resources/articles/layout-tricks-merge.html
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ImageView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:scaleType="center"
android:src="@drawable/golden_gate" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="20dip"
android:layout_gravity="center_horizontal|bottom"
android:padding="12dip"
android:background="#AA000000"
android:textColor="#ffffffff"
android:text="Golden Gate" />
</FrameLayout>
Run Code Online (Sandbox Code Playgroud)
我试图以编程方式实现这一点,但没有运气..我总是在左上角看到textview ..谁能帮忙?这是我的代码:
FrameLayout frameLay = new FrameLayout(MainScreen.this);
LayoutParams layoutParamsFrame = new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
frameLay.setLayoutParams(layoutParamsFrame);
LinearLayout.LayoutParams layoutParamsImage= new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
ImageView imageView= new ImageView(MainScreen.this);
imageView.setImageResource(R.drawable.movie);
imageView.setLayoutParams(layoutParamsImage);
TextView theText=new TextView(MainScreen.this);
theText.setText("GOLDEN Gate");
theText.setTextColor(Color.WHITE);
theText.setTypeface(Typeface.DEFAULT_BOLD);
LayoutParams layoutParamsText= new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
theText.setLayoutParams(layoutParamsText);
theText.setGravity(Gravity.CENTER_HORIZONTAL|Gravity.BOTTOM);
frameLay.addView(theText);
frameLay.addView(imageView);
Run Code Online (Sandbox Code Playgroud)